FastAPI-MCP

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

FastAPI-MCP

A zero-configuration tool for automatically exposing FastAPI endpoints as Model Context Protocol (MCP) tools.

Features

  • Direct integration - Mount an MCP server directly to your FastAPI app
  • Zero configuration required - just point it at your FastAPI app and it works
  • Automatic discovery of all FastAPI endpoints and conversion to MCP tools
  • Preserving schemas of your request models and response models
  • Preserve documentation of all your endpoints, just as it is in Swagger
  • Extend - Add custom MCP tools alongside the auto-generated ones

Installation

We recommend using uv, a fast Python package installer:

uv add fastapi-mcp

Alternatively, you can install with pip:

pip install fastapi-mcp

Basic Usage

The simplest way to use FastAPI-MCP is to add an MCP server directly to your FastAPI application:

from fastapi import FastAPI from fastapi_mcp import add_mcp_server # Your FastAPI app app = FastAPI() # Mount the MCP server to your app add_mcp_server( app, # Your FastAPI app mount_path="/mcp", # Where to mount the MCP server name="My API MCP", # Name for the MCP server )

That's it! Your auto-generated MCP server is now available at https://app.base.url/mcp.

Advanced Usage

FastAPI-MCP provides several ways to customize and control how your MCP server is created and configured. Here are some advanced usage patterns:

from fastapi import FastAPI from fastapi_mcp import add_mcp_server app = FastAPI() mcp_server = add_mcp_server( app, # Your FastAPI app mount_path="/mcp", # Where to mount the MCP server name="My API MCP", # Name for the MCP server describe_all_responses=True, # False by default. Include all possible response schemas in tool descriptions, instead of just the successful response. describe_full_response_schema=True # False by default. Include full JSON schema in tool descriptions, instead of just an LLM-friendly response example. ) # Optionally add custom tools in addition to existing APIs. @mcp_server.tool() async def get_server_time() -> str: """Get the current server time.""" from datetime import datetime return datetime.now().isoformat()

Examples

See the examples directory for complete examples.

Connecting to the MCP Server

Once your FastAPI app with MCP integration is running, you can connect to it with any MCP client, such as Claude:

  1. Run your application
  2. In Claude, use the URL of your MCP server endpoint (e.g., http://localhost:8000/mcp)
  3. Claude will discover all available tools and resources automatically

Development and Contributing

If you're interested in contributing to FastAPI-MCP:

# Clone the repository git clone https://github.com/tadata-org/fastapi_mcp.git cd fastapi_mcp # Create a virtual environment and install dependencies with uv uv venv source .venv/bin/activate # On Windows: .venv\Scripts\activate uv add -e ".[dev]" # Run tests uv run pytest

For more details about contributing, see CONTRIBUTING.md.

Requirements

  • Python 3.10+
  • uv

License

MIT License. Copyright (c) 2024 Tadata Inc.

About

Developed and maintained by Tadata Inc.

-
security - not tested
A
license - permissive license
-
quality - not tested

A zero-configuration tool that automatically exposes FastAPI endpoints as Model Context Protocol (MCP) tools, allowing LLM systems like Claude to interact with your API without additional coding.

  1. Features
    1. Installation
      1. Basic Usage
        1. Advanced Usage
          1. Examples
            1. Connecting to the MCP Server
              1. Development and Contributing
                1. Requirements
                  1. License
                    1. About