New in versionDocumentation Index
Fetch the complete documentation index at: https://fastmcp-transfer-to-prefecthq.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
2.0.0
FastMCP can automatically generate an MCP server from any OpenAPI specification, allowing AI models to interact with existing APIs through the MCP protocol. Instead of manually creating tools and resources, you provide an OpenAPI spec and FastMCP intelligently converts API endpoints into the appropriate MCP components.
Under the hood, OpenAPI integration uses OpenAPIProvider (v3.0.0+) to source tools from the specification. See Providers to understand how FastMCP sources components.
Create a Server
To convert an OpenAPI specification to an MCP server, use theFastMCP.from_openapi() class method:
server.py
Authentication
If your API requires authentication, configure it on the HTTP client:Route Mapping
By default, FastMCP converts every endpoint in your OpenAPI specification into an MCP Tool. This provides a simple, predictable starting point that ensures all your APIβs functionality is immediately available to the vast majority of LLM clients which only support MCP tools. While this is a pragmatic default for maximum compatibility, you can easily customize this behavior. Internally, FastMCP uses an ordered list ofRouteMap objects to determine how to map OpenAPI routes to various MCP component types.
Each RouteMap specifies a combination of methods, patterns, and tags, as well as a corresponding MCP component type. Each OpenAPI route is checked against each RouteMap in order, and the first one that matches every criteria is used to determine its converted MCP type. A special type, EXCLUDE, can be used to exclude routes from the MCP server entirely.
- Methods: HTTP methods to match (e.g.
["GET", "POST"]or"*"for all) - Pattern: Regex pattern to match the route path (e.g.
r"^/users/.*"orr".*"for all) - Tags: A set of OpenAPI tags that must all be present. An empty set (
{}) means no tag filtering, so the route matches regardless of its tags. - MCP type: What MCP component type to create (
TOOL,RESOURCE,RESOURCE_TEMPLATE, orEXCLUDE) - MCP tags: A set of custom tags to add to components created from matching routes
Custom Route Maps
When creating your FastMCP server, you can customize routing behavior by providing your own list ofRouteMap objects. Your custom maps are processed before the default route maps, and routes will be assigned to the first matching custom map.
For example, prior to FastMCP 2.8.0, GET requests were automatically mapped to Resource and ResourceTemplate components based on whether they had path parameters. (This was changed solely for client compatibility reasons.) You can restore this behavior by providing custom route maps:
GET requests are handled semantically, and all other methods (POST, PUT, etc.) will fall through to the default rule and become Tools.
Here is a more complete example that uses custom route maps to convert all GET endpoints under /analytics/ to tools while excluding all admin endpoints and all routes tagged βinternalβ. All other routes will be handled by the default rules:
Excluding Routes
To exclude routes from the MCP server, use a route map to assign them toMCPType.EXCLUDE.
You can use this to remove sensitive or internal routes by targeting them specifically:
Advanced Route Mapping
New in version2.5.0
For advanced use cases that require more complex logic, you can provide a route_map_fn callable. After the route map logic is applied, this function is called on each matched route and its assigned MCP component type. It can optionally return a different component type to override the mapped assignment. If it returns None, the assigned type is used.
In addition to more precise targeting of methods, patterns, and tags, this function can access any additional OpenAPI metadata about the route.
Customization
Component Names
New in version2.5.0
FastMCP automatically generates names for MCP components based on the OpenAPI specification. By default, it uses the operationId from your OpenAPI spec, up to the first double underscore (__).
All component names are automatically:
- Slugified: Spaces and special characters are converted to underscores or removed
- Truncated: Limited to 56 characters maximum to ensure compatibility
- Unique: If multiple components have the same name, a number is automatically appended to make them unique
mcp_names dictionary that maps operationId values to your desired names. The operationId must be exactly as it appears in the OpenAPI spec. The provided name will always be slugified and truncated.
operationId not found in mcp_names will use the default strategy (operationId up to the first __).
Tags
New in version2.8.0
FastMCP provides several ways to add tags to your MCP components, allowing you to categorize and organize them for better discoverability and filtering. Tags are combined from multiple sources to create the final set of tags on each component.
RouteMap Tags
You can add custom tags to components created from specific routes using themcp_tags parameter in RouteMap. These tags will be applied to all components created from routes that match that particular route map.
Global Tags
You can add tags to all components by providing atags parameter when creating your MCP server. These global tags will be applied to every component created from your OpenAPI specification.
OpenAPI Tags in Client Meta
FastMCP automatically includes OpenAPI tags from your specification in the componentβs metadata. These tags are available to MCP clients through themeta.fastmcp.tags field, allowing clients to filter and organize components based on the original OpenAPI tagging:
Advanced Customization
New in version2.5.0
By default, FastMCP creates MCP components using a variety of metadata from the OpenAPI spec, such as incorporating the OpenAPI description into the MCP component description.
At times you may want to modify those MCP components in a variety of ways, such as adding LLM-specific instructions or tags. For fine-grained customization, you can provide a mcp_component_fn when creating the MCP server. After each MCP component has been created, this function is called on it and has the opportunity to modify it in-place.
Request Parameter Handling
FastMCP intelligently handles different types of parameters in OpenAPI requests:Query Parameters
By default, FastMCP only includes query parameters that have non-empty values. Parameters withNone values or empty strings are automatically filtered out.
Path Parameters
Path parameters are typically required by REST APIs. FastMCP:- Filters out
Nonevalues - Validates that all required path parameters are provided
- Raises clear errors for missing required parameters
Array Parameters
FastMCP handles array parameters according to OpenAPI specifications:- Query arrays: Serialized based on the
explodeparameter (default:True) - Path arrays: Serialized as comma-separated values (OpenAPI βsimpleβ style)

