たった5分でAIにAPIを操作させる「FastAPI-MCP」完全ガイド

FastAPI-MCPは、FastAPIアプリケーションをModel Context Protocol(MCP)ツールに変換し、AIモデル(GPTやClaude)がAPIを直接呼び出せるようにするライブラリです。認証機能の標準装備、FastAPIとの完全統合、最小限の設定で実現できる高速なASGI転送が特徴です。本記事では、Python環境の準備からAIクライアントとの接続、高度な機能の実装まで、初心者でも数分で設定できる実装方法を詳しく解説します。セキュリティ対策やカスタマイズ方法も網羅した完全ガイドです。

中村 拓也

中村 拓也

18 11月 2025

たった5分でAIにAPIを操作させる「FastAPI-MCP」完全ガイド

FastAPIを使用している開発者の皆さんに朗報です。APIをAIモデル(GPTやClaudeなど)に簡単に操作させることができる強力なツール「FastAPI-MCP」をご紹介します。初心者でも数分で設定できる、このツールの魅力と実装方法を詳しく解説します。

💡
APIの開発・テスト・管理を効率化するなら、Apidogをご活用ください。FastAPI-MCPと組み合わせることで、APIの開発からテスト、AI連携まで一気通貫で効率化できます。Apidogの直感的なインターフェースと強力な機能で、API開発の生産性を劇的に向上させることができます。
button

FastAPI-MCPとは?

FastAPI-MCPは、FastAPIアプリケーションをModel Context Protocol(MCP)ツールに変換するためのライブラリです。これにより、AIモデルがあなたのAPIを直接呼び出せるようになります。

GitHub - tadata-org/fastapi_mcp: Expose your FastAPI endpoints as Model Context Protocol (MCP) tools, with Auth!
Expose your FastAPI endpoints as Model Context Protocol (MCP) tools, with Auth! - tadata-org/fastapi_mcp

主な特徴

FastAPI-MCPを選ぶ理由

従来の方法でAPIをMCPツールに変換しようとすると、以下のような課題に直面します:

FastAPI-MCPは、FastAPIとの深い統合により、これらの課題を解決します。通常のFastAPIアプリケーションを作成するのと同じくらい簡単にMCPツールを生成でき、高いパフォーマンスとセキュリティを確保できます。

実装ガイド

ローカル環境でFastAPI MCPを構築してテストする手順を説明します。

ステップ1:Python環境の準備

Python 3.10以上(3.12推奨)の環境を用意します。

Pythonをインストールしていない場合は、Python公式サイトから最新版をダウンロードしてインストールしてください。

インストール後、バージョンを確認します:

python --version
# または
python3 --version

ステップ2:必要なパッケージのインストール

FastAPI、Uvicorn、FastAPI MCPをインストールします:

pip install fastapi uvicorn fastapi-mcp

ステップ3:FastAPIアプリケーションの作成

シンプルなFastAPIアプリケーションを作成します。main.pyファイルを作成し、以下のコードを記述します:

from fastapi import FastAPI
from fastapi_mcp import FastApiMCP

app = FastAPI(title="シンプルAPI")

@app.get("/hello", operation_id="say_hello")
async def hello():
    """シンプルな挨拶エンドポイント"""
    return {"message": "Hello World"}

# MCPサーバーを作成
mcp = FastApiMCP(app, name="シンプルMCPサービス")
mcp.mount()

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="127.0.0.1", port=8000)

このサンプルは、/helloエンドポイントのみを持つシンプルな構成です。

ステップ4:アプリケーションの実行とテスト

アプリケーションを実行します:

python main.py

または:

uvicorn main:app --reload

サーバーはhttp://127.0.0.1:8000で起動します。

ステップ5:MCPエンドポイントの確認

ブラウザでMCPエンドポイントにアクセスします:http://127.0.0.1:8000/mcp

MCPエンドポイントはServer-Sent Events (SSE)プロトコルを使用しているため、ブラウザには以下のような出力が表示されます:

event: endpoint
data: /mcp/messages/?session_id=02b22de319bb43e596ec91ed5d480411

これは、MCPサーバーが起動し、AIクライアントからのリクエストを受け付ける準備ができたことを示しています。

AIクライアントとの接続

MCPをサポートするAIクライアントをサーバーに接続します。Cursorを例に説明します。

方法1:SSE(Server-Sent Events)接続

Claude Desktop、Cursor、Windsurfなどの主要なMCPクライアントはSSE接続をサポートしています:

{
  "mcpServers": {
    "fastapi-mcp": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

Cursorの場合、右上の設定アイコンから「MCP -> Add new global MCP server」に移動し、開いたmcp.jsonファイルに上記の設定を追加します。

FastAPI MCPサービスが起動していれば、自動的に有効になります。

方法2:mcp-remoteをブリッジとして使用

認証が必要な場合や、MCPクライアントがSSEをサポートしていない場合は、mcp-remoteを使用できます:

{
  "mcpServers": {
    "fastapi-mcp": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://localhost:8000/mcp",
        "8080"
      ]
    }
  }
}

AIクライアントでの使用

CursorなどのAI IDEでFastAPI MCPに接続したら、対話を開始できます。例えば、Cursorのエージェントモードで「/helloインターフェースを呼び出して」と質問すると、AIがインターフェースの出力結果を返します。

高度な機能

カスタムエンドポイント公開

すべてのAPIエンドポイントをAIモデルに公開したくない場合、公開するエンドポイントを制御できます:

# 特定の操作IDのみを公開
mcp = FastApiMCP(
    app,
    include_operations=["say_hello", "get_user_info"]
)

# 特定の操作IDを除外
mcp = FastApiMCP(
    app,
    exclude_operations=["delete_user", "update_settings"]
)

# 特定のタグを持つエンドポイントのみを公開
mcp = FastApiMCP(
    app,
    include_tags=["public", "read_only"]
)

# 特定のタグを持つエンドポイントを除外
mcp = FastApiMCP(
    app,
    exclude_tags=["admin", "sensitive"]
)

この柔軟性により、AIモデルが利用できる機能を正確に制御でき、セキュリティが向上します。

認証保護の追加

本番環境では、MCPエンドポイントを保護することが重要です:

from fastapi import FastAPI, Depends, Security, HTTPException
from fastapi.security import APIKeyHeader

app = FastAPI()
api_key_header = APIKeyHeader(name="X-API-Key")

async def verify_api_key(api_key: str = Security(api_key_header)):
    if api_key != "your-secret-key":
        raise HTTPException(status_code=403, detail="Invalid API key")
    return api_key

# 認証依存関係を追加
mcp = FastApiMCP(app, mcp_dependencies=[Depends(verify_api_key)])
mcp.mount()

これにより、MCPサービスへのすべてのリクエストには、有効なAPI鍵が必要になります。

カスタムレスポンス処理

AIモデルに返すレスポンスをカスタマイズできます:

from fastapi import FastAPI, Response, Request
from fastapi_mcp import FastApiMCP
from typing import Dict, Any
from datetime import datetime

app = FastAPI()

async def response_processor(
    request: Request,
    response: Response,
    response_data: Dict[str, Any]
) -> Dict[str, Any]:
    response_data["processed_by"] = "custom_processor"
    response_data["timestamp"] = datetime.now().isoformat()
    return response_data

mcp = FastApiMCP(
    app,
    response_processor=response_processor
)
mcp.mount()

分離デプロイ

MCPサーバーをメインAPIサービスとは別にデプロイすることも可能です:

# api_app.py - メインAPIアプリケーション
from fastapi import FastAPI
api_app = FastAPI()

@api_app.get("/data")
def get_data():
    return {"data": "some value"}

# mcp_app.py - 独立したMCPサーバーアプリケーション
from fastapi import FastAPI
from fastapi_mcp import FastApiMCP
from api_app import api_app

mcp_app = FastAPI()
mcp = FastApiMCP(api_app)
mcp.mount(mcp_app)

# 2つのアプリケーションを別々に実行
# uvicorn api_app:api_app --port 8001
# uvicorn mcp_app:mcp_app --port 8000

この方法により、MCPサービスを独立してスケーリングできます。

セキュリティに関する考慮事項

FastAPI MCPを使用する際は、以下のセキュリティ対策を実施してください:

  1. 公開するエンドポイントを制限:安全な読み取り専用のエンドポイントのみを公開し、システムに変更を加える可能性のあるエンドポイント(DELETE、PUT操作など)の公開を避けます
  2. 適切な認証を追加:認証されたユーザーのみがAIを通じてAPIにアクセスできるようにします
  3. リクエスト検証:FastAPIのPydanticモデルを使用して、リクエストパラメータを厳密に検証します
  4. レスポンスフィルタリング:レスポンス内の機密情報をフィルタリングすることを検討します

まとめ

FastAPI MCPは、FastAPI APIをMCPツールに迅速に変換できる、効率的で使いやすいツールです。わずか数行のコードで統合が完了し、認証、ドキュメント保持、柔軟なデプロイをサポートしています。

実装手順のまとめ:

  1. Python 3.10以上(3.12推奨)をインストール
  2. 必要なパッケージをインストール
  3. FastAPIアプリケーションを作成
  4. MCPサポートを追加
  5. AI IDEで実行してテスト

FastAPI-MCPを活用して、AIとAPIの連携を実現し、開発効率を向上させましょう。

💡
開発チームの生産性を最大化しながら、APIテストからドキュメント作成までを一括で行えるツールをお探しですか?

Apidogなら、美しいAPIドキュメントを自動生成するだけでなく、Postmanをより手頃な価格で置き換えることもできます。

オールインワンの開発体験を、ぜひお試しください。
button

Explore more

【無料・プライバシー保護】LMStudioでQwen3-2507を使う方法|256K長文対応の最新AI

【無料・プライバシー保護】LMStudioでQwen3-2507を使う方法|256K長文対応の最新AI

本記事では、LMStudioを使ってこれらの強力なAIモデルをローカルで動かす方法を詳しく解説します。Qwen3-235B-A22Bから効率的な30B-A3Bシリーズ、専門的なCoderコーディングモデルまで、最新世代の大規模言語モデルを自分のPCにデプロイする方法を学べます。256K超長コンテキスト、インテリジェント推論切り替えなど最先端機能を、クラウドAPI不要でプライバシーを守りながらゼロコストで活用!

18 11月 2025

Claudeのメモリ機能の使い方と設定手順まとめ

Claudeのメモリ機能の使い方と設定手順まとめ

Claudeの新機能「メモリ」(Claude Memory)を使えば、AIがあなたの好みや指示を記憶して、よりパーソナライズされた応答をしてくれます。この記事では、メモリ機能の有効化手順、設定画面のポイント、注意すべき点を詳しく解説します。

13 9月 2025

【実践編】Claude CodeにGPT-OSSを統合する方法

【実践編】Claude CodeにGPT-OSSを統合する方法

本記事では、Claude CodeでGPT-OSSを活用する方法を解説。Hugging Faceでのセルフホスト、OpenRouter経由のプロキシ、LiteLLMによるモデル切替などで、高効率かつ低コストなAIコーディング環境を構築します。

8 8月 2025

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる