| Build a new FastMCP server |
FastMCP(), @mcp.tool, @mcp.resource |
[./references/server-core.md](./references/server-core.md) |
| Compose multiple servers |
mount(), namespace, providers |
[./references/providers.md](./references/providers.md) |
| Bridge remote HTTP server to stdio |
ProxyProvider, create_proxy() |
[./references/providers.md](./references/providers.md) |
| Serve files or skills as resources |
FileSystemProvider, SkillsProvider |
[./references/providers.md](./references/providers.md) |
| Rename or filter tools from sub-server |
ToolTransform, Namespace |
[./references/transforms.md](./references/transforms.md) |
| Expose resources as tools |
ResourcesAsTools |
[./references/transforms.md](./references/transforms.md) |
| Search/discover tools in large catalogs |
BM25SearchTransform, RegexSearchTransform |
[./references/transforms.md](./references/transforms.md) |
| Sandbox tool execution via Python scripts |
CodeMode (experimental) |
[./references/transforms.md](./references/transforms.md) |
| Add authentication to a server |
require_scopes, OAuth variants |
[./references/auth.md](./references/auth.md) |
| Mix OAuth + JWT token verifiers |
MultiAuth |
[./references/auth.md](./references/auth.md) |
| Use PropelAuth for auth |
PropelAuthProvider |
[./references/auth.md](./references/auth.md) |
| Write a FastMCP client |
Client, transports, BearerAuth |
[./references/client-sdk.md](./references/client-sdk.md) |
| Run long tasks without blocking |
@mcp.tool(task=True) |
[./references/advanced.md](./references/advanced.md) |
| Add multi-turn user input to a tool |
Elicitation API |
[./references/advanced.md](./references/advanced.md) |
| Deploy to production |
Prefect Horizon, HTTP, stdio, nginx |
[./references/deployment.md](./references/deployment.md) |
| Deploy behind nginx reverse proxy |
SSE config, TLS, subpath mounting |
[./references/deployment.md](./references/deployment.md) |
| Write tests for a FastMCP server |
In-memory Client, pytest patterns |
[./references/testing.md](./references/testing.md) |
| Integrate with Anthropic/OpenAI/FastAPI |
Integration patterns |
[./references/integrations.md](./references/integrations.md) |
| Migrate from FastMCP v2 to v3 |
Breaking changes, syntax fixes |
[./references/migration.md](./references/migration.md) |
| Migrate/upgrade a v3 server to v4 |
ToolAnnotations snake_case, TasksExtension, sampling removal |
[./references/migration.md](./references/migration.md) |
| Debug a masked tool exception on stdio |
Rich traceback logging trap |
[./references/server-core.md](./references/server-core.md) |
| Add web UI to a server |
Apps HTML API, Prefab Apps |
[./references/apps.md](./references/apps.md) |
| Return interactive UI from tools |
@mcp.tool(app=True), PrefabApp |
[./references/advanced.md](./references/advanced.md) |
| Add request/response middleware |
Middleware, built-in middleware |
[./references/middleware.md](./references/middleware.md) |
| Find real-world usage patterns |
ProxyProvider, mount(), showcase |
[./references/real-world-patterns.md](./references/real-world-patterns.md) |
| Evaluate MCP server quality |
Evaluation harness, QA pairs |
[./references/evaluation-guide.md](./references/evaluation-guide.md) |
| Build interactive app server with UI tools |
FastMCPApp, @app.ui(), @app.tool() |
[./references/apps.md](./references/apps.md) |
| LLM writes custom UI at runtime |
Generative UI |
[./references/apps.md](./references/apps.md) |
| Use Keycloak for enterprise auth |
KeycloakProvider |
[./references/auth.md](./references/auth.md) |
| Install client-only, no server deps |
fastmcp-slim |
[./references/client-sdk.md](./references/client-sdk.md) |
| Preview app tools in browser without MCP host |
fastmcp dev apps |
[./references/deployment.md](./references/deployment.md) |
| Add OTEL tracing to a server |
OTEL instrumentation |
[./references/observability.md](./references/observability.md) |
| Configure persistent cache or OAuth state storage |
storage backends |
[./references/middleware.md](./references/middleware.md) |