fastmcp
Build MCP servers in Python with FastMCP to expose tools, resources, and prompts to LLMs. Supports storage backends, middleware, OAuth Proxy, OpenAPI integration, and FastMCP Cloud deployment. Prevents 30+ errors. Use when: creating MCP servers, or troubleshooting module-level server, storage, lifespan, middleware, OAuth, background tasks, or FastAPI mount errors.
npx skills add majiayu000/claude-skill-registry --skill fastmcp-brendadeeznuts1111-tier-1380-omega --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
What it does
Converts MCP server development into a Python workflow by exposing functions as tools, resources, and prompts for LLMs, with production-tested patterns and deployment options.
How it works
- Provides a minimal server example with a tool decorated by @mcp.tool() and a running guard for module-level execution.
- Supports multiple storage backends (Memory, Disk, Redis, and others) via given store classes like DiskStore and RedisStore.
- Introduces backgrounds tasks under the v2.14.0+ Stream, where a tool can be annotated with task=True to run asynchronously and report progress.
- Allows injecting Context for advanced features: elicitation, progress tracking, sampling, and lifespan-aware resources.
- Enables Background Tasks with a Docket scheduler to run long-running operations and report progress without blocking clients.
- Includes Middleware system with 8 built-in types and a defined execution order to handle errors, timing, logging, rate limiting, caching, and tool/ resource handling.
- Supports Server Composition through import_server() and mount() to manage static vs dynamic linking of servers, with tag filtering and prefix-based routing for tools and resources.
When to use it
- Use when creating MCP servers to expose tools/resources/prompts to LLMs.
- Use when troubleshooting module-level server setup, storage configuration, lifespan management, middleware behavior, OAuth Proxy setup, background tasks, or FastAPI mount issues.
What it can touch
- Tools and Resources are exposed via decorators and provider patterns in FastMCP.
- Storage backends configured via DiskStore, RedisStore, FernetEncryptionWrapper, and related classes.
- Middleware components such as ErrorHandlingMiddleware, TimingMiddleware, LoggingMiddleware, RateLimitingMiddleware, ResponseCachingMiddleware, ToolInjectionMiddleware, PromptToolMiddleware, ResourceToolMiddleware.
- Lifespan context for server-wide resources, ASGI integration via FastAPI/Starlette, and context state access.
- Background tasks enabled with task=True on tools; progress signaling via context.report_progress.
- OpenAPI integration and OAuth Proxy support via providers and configuration.
Caveats
- Major breaking changes exist across versions (e.g., v2.14.0+ changes and v3.0.0 beta): compatibility notes and migration guidance are present in the changelog.
- Some known limitations include background task progress messaging not always forwarding to clients and sampling behavior issues when multiple servers are configured in the client.
- Specific environment and dependency versions may be required for certain features (e.g., MCP SDK compatibility, Python version support).
# FastMCP - Build MCP Servers in Python FastMCP is a Python framework for building Model Context Protocol (MCP) servers that expose tools, resources, and prompts to Large Language Models like Claude. This skill provides production-tested patterns, error prevention, and deployment strategies for building robust MCP servers. ## Quick Start ### Installation ```bash pip install fastmcp # or uv pip install fastmcp ``` ### Minimal Server ```python from fastmcp import FastMCP # MUST be at module level for FastMCP Cloud mcp = FastMCP("My Server") @mcp.tool() async def hello(name: str) -> str: """Say hello to someone.""" return f"Hello, {name}!" if __name__ == "__main__": mcp.run() ``` **Run it:** ```bash # Local development python server.py # With FastMCP CLI fastmcp dev server.py # HTTP mode python server.py --transport http --port 8000 ``` ## What's New in v2.14.x (December 2025) ### v2.14.2 (December 31, 2024) - MCP SDK pinned to <2.x for compatibility - Supabase provider gains `auth_route` parameter - Bug fixes: outputSchema `$ref` resolution, OAuth Proxy validation, OpenAPI 3.1 support ### v2.14.1: Sampling with Tools (SEP-1577) - **`ctx.sample()` now accepts tools** for agentic workf
- Quick Start
- Installation
- Minimal Server
- What's New in v2.14.x (December 2025)
- v2.14.2 (December 31, 2024)
- v2.14.1: Sampling with Tools (SEP-1577)
- v2.14.0: Background Tasks (SEP-1686)
- What's New in v3.0.0 (Beta - January 2026)
- Provider Architecture
- Transforms (Component Middleware)
- Component Versioning
- Session-Scoped State
- Other Features
- Migration Guide
pip install fastmcp or uv pip install fastmcp Local development python server.py With FastMCP CLI fastmcp dev server.py HTTP mode python server.py --transport http --port 8000 fastmcp dev server.py # Run with inspector
What does the fastmcp skill do?
Build MCP servers in Python with FastMCP to expose tools, resources, and prompts to LLMs. Supports storage backends, middleware, OAuth Proxy, OpenAPI integration, and FastMCP Cloud deployment. Prevents 30+ errors. Use when: creating MCP servers, or troubleshooting module-level server, storage, lifespan, middleware, OAuth, background tasks, or FastAPI mount errors.
How do I install it?
Run `npx skills add majiayu000/claude-skill-registry --skill fastmcp-brendadeeznuts1111-tier-1380-omega --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From majiayu000/claude-skill-registry, a repository with 534 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.
