もう迷わない!FastAPIエンドポイントをMCPツール化する手順
このライブラリは、皆さんが普段開発しているFastAPIのエンドポイントを、大規模言語モデル(LLM)が利用できる「ツール」として簡単に公開するためのものです。
世の中にはさまざまなライブラリがありますが、このライブラリは、特に以下の点で皆さんの開発に役立ちます。
LLMとの連携を簡単に
FastAPIで作成したAPIを、まるでLLMの機能拡張のように利用できます。例えば、LLMに「最新の天気予報を教えて」と尋ねたときに、皆さんが作った天気予報APIを自動で呼び出してくれる、といったことが可能になります。
認証機能を標準で搭載
LLMからのリクエストに認証機能を付加できます。これにより、APIを安全に公開し、意図しないアクセスを防ぐことができます。
開発効率の向上
定義済みのエンドポイントにデコレーターを付けるだけで、MCPツールとして公開できます。これにより、LLM連携のための追加コードをほとんど書く必要がなくなります。
fastapi_mcpをプロジェクトに導入するのはとても簡単です。pipを使ってインストールするだけです。
pip install fastapi_mcp
では、実際にどのように使うのか、簡単なサンプルコードを見てみましょう。この例では、ユーザー名を受け取って挨拶を返すAPIを、MCPツールとして公開します。
from fastapi import FastAPI, HTTPException
from fastapi_mcp import MCP
from pydantic import BaseModel
import uvicorn
# FastAPIアプリケーションのインスタンスを作成
app = FastAPI()
# MCPのインスタンスを作成
mcp = MCP(app)
# リクエストボディの型定義
class GreetRequest(BaseModel):
name: str
# 挨拶を返すエンドポイント
@mcp.tool()
@app.post("/greet")
def greet(request: GreetRequest):
"""
指定された名前に挨拶を返します。
"""
return {"message": f"Hello, {request.name}!"}
# FastAPIアプリケーションを実行
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)
from fastapi_mcp import MCP
まず、fastapi_mcpライブラリからMCPクラスをインポートします。
mcp = MCP(app)
FastAPIのインスタンスを渡して、MCPのインスタンスを作成します。
@mcp.tool()
これが一番重要な部分です。このデコレーターを、LLMに公開したいエンドポイントの上に付けるだけで、そのエンドポイントがMCPツールとして自動的に登録されます。
"""..."""
エンドポイントのdocstring(ドキュメンテーション文字列)は、LLMがこのツールをどのように使うべきかを理解するための重要な情報になります。分かりやすく書くことを心がけましょう。
このコードを実行すると、FastAPIのAPIエンドポイントが立ち上がるだけでなく、LLMが利用可能なMCPツールとしてのメタデータも自動的に生成されます。
tadata-org/fastapi_mcpは、LLMの進化に伴い、APIをLLMと連携させる機会が増えてきた現代において、非常に強力な味方となるライブラリです。皆さんの開発プロジェクトにぜひ取り入れてみてください。