URL: https://gofastmcp.com/servers/providers
Title: Providers - FastMCP

Documentation Index
Fetch the complete documentation index at:
/llms.txt
Use this file to discover all available pages before exploring further.
Skip to main content
Meet
Prefect Horizon
, the enterprise MCP gateway built by the team behind FastMCP
FastMCP
home page
v3
Prefect Horizon
PrefectHQ/fastmcp
25,596
PrefectHQ/fastmcp
25,596
Search...
Navigation
MCP Providers
Providers
Search the docs...
Ctrl
K
Documentation
Get Started
Welcome!
Installation
Quickstart
Servers
Overview
Core Components
Working with Tools
MCP Providers
Overview
NEW
Local
NEW
Filesystem
NEW
MCP Proxy
Skills
NEW
Composition
Custom
NEW
Interactivity
Extensibility
Auth
Deployment
Apps
Overview
Quickstart
NEW
FastMCPApp
NEW
Interactive Tools
NEW
Generative UI
NEW
Custom HTML
Reference
Clients
Overview
Client-Only Package
Transports
fastmcp-remote
Operations
UPDATED
Authentication
UPDATED
Integrations
Auth
Web Frameworks
AI Assistants
AI SDKs
MCP.json
More
Settings
CLI
Upgrading
Development
What's New
FAQ
On this page
What Is a Provider?
Why Providers?
Built-in Providers
Transforms
Provider Order
When to Care About Providers
Next Steps
MCP Providers
Providers
Copy page
How FastMCP sources tools, resources, and prompts
Copy page
New in version
3.0.0
Every FastMCP server has one or more component providers. A provider is a source of tools, resources, and prompts - it’s what makes components available to clients.
​
What Is a Provider?
When a client connects to your server and asks “what tools do you have?”, FastMCP asks each provider that question and combines the results. When a client calls a specific tool, FastMCP finds which provider has it and delegates the call.
You’re already using providers. When you write
@mcp.tool
, you’re adding a tool to your server’s
LocalProvider
- the default provider that stores components you define directly in code. You just don’t have to think about it for simple servers.
Providers become important when your components come from multiple sources: another FastMCP server to include, a remote MCP server to proxy, or a database where tools are defined dynamically. Each source gets its own provider, and FastMCP queries them all seamlessly.
​
Why Providers?
The provider abstraction solves a common problem: as servers grow, you need to organize components across multiple sources without tangling everything together.
Composition
: Break a large server into focused modules. A “weather” server and a “calendar” server can each be developed independently, then mounted into a main server. Each mounted server becomes a
FastMCPProvider
.
Proxying
: Expose a remote MCP server through your local server. Maybe you’re bridging transports (remote HTTP to local stdio) or aggregating multiple backends. Remote connections become
ProxyProvider
instances.
Dynamic sources
: Load tools from a database, generate them from an OpenAPI spec, or create them based on user permissions. Custom providers let components come from anywhere.
​
Built-in Providers
FastMCP includes providers for common patterns:
Provider
What it does
How you use it
LocalProvider
Stores components you define in code
@mcp.tool
,
mcp.add_tool()
FastMCPProvider
Wraps another FastMCP server
mcp.mount(server)
ProxyProvider
Connects to remote MCP servers
create_proxy(client)
Most users only interact with
LocalProvider
(through decorators) and occasionally mount or proxy other servers. The provider abstraction stays invisible until you need it.
​
Transforms
Transforms
modify components as they flow from providers to clients. Each transform sits in a chain, intercepting queries and modifying results before passing them along.
Transform
Purpose
Namespace
Prefixes names to avoid conflicts
ToolTransform
Modifies tool schemas (rename, description, arguments)
The most common use is namespacing mounted servers to prevent name collisions. When you call
mount(server, namespace="api")
, FastMCP creates a
Namespace
transform automatically.
Transforms can be added to individual providers (affecting just that source) or to the server itself (affecting all components). See
Transforms
for the full picture.
​
Provider Order
When a client requests a tool, FastMCP queries providers in registration order. The first provider that has the tool handles the request.
LocalProvider
is always first, so your decorator-defined tools take precedence. Additional providers are queried in the order you added them. This means if two providers have a tool with the same name, the first one wins.
​
When to Care About Providers
You can ignore providers entirely
if you’re building a simple server with decorators. Just use
@mcp.tool
,
@mcp.resource
, and
@mcp.prompt
- FastMCP handles the rest.
Learn about providers when
you want to:
Mount another server
into yours
Proxy a remote server
through yours
Control visibility state
of components
Build dynamic sources
like database-backed tools
​
Next Steps
Local
- How decorators work
Mounting
- Compose servers together
Proxying
- Connect to remote servers
Transforms
- Namespace, rename, and modify components
Visibility
- Control which components clients can access
Custom
- Build your own providers
Tool Fingerprinting
Previous
Local Provider
Next
Ctrl
+I
discord
github
website
x
Powered by
This documentation is built and hosted on Mintlify, a developer documentation platform
Assistant
Responses are generated using AI and may contain mistakes.
\n\n
\n
\n \n
\n
