はじめに
適当なサービスの Web API を AI エージェントから叩けるようにするため、そのサービスに対応した MCP サーバーを作成したいと考えることもあると思います。
しかし、使いたいエンドポイントの数が多い場合、MCP サーバーを自作するのは少々手間がかかります。
もし、そのサービスが OpenAPI ドキュメントを公開しているのであれば、FastMCP を利用することでその手間を大幅に削減できます。
FastMCP とは
FastMCP は、Python で MCP アプリケーションを構築するためのフレームワークです。
これを用いることで、素早く MCP サーバーの作成を行うことができます。
現在、FastMCP というときには、公式の Python SDK に統合されたものと、それとは別に分岐した FastMCP 2.0 があります。
- 公式 Python SDK: https://github.com/modelcontextprotocol/python-sdk
- FastMCP 2.0: https://github.com/jlowin/fastmcp
この記事では、FastMCP 2.0 の方を使います。
OpenAPI ドキュメントから MCP サーバーを建てる
さっそく、OpenAPI ドキュメントから MCP サーバーを作成する方法について説明していきます。
まずは、FastMCP 2.0 のインストールから始めます。
FastMCP のインストール
以下のドキュメントに従って、インストールを進めていきます。
ここではパッケージマネージャとして uv を利用することにします。
プロジェクトの依存関係に fastmcp を追加します。
uv add fastmcp
インストールができているかどうかを、下記コマンドを実行して確認します。
FastMCP version や MCP version といった記述が確認できれば、問題ありません。
uv run fastmcp version
これで準備は整いました。
次は MCP サーバーを作成します。
MCP サーバーの作成
AI エージェントに叩かせたい Web API の OpenAPI ドキュメントを用意します。
大抵の場合は /openapi.json となっていると思います。
とりあえず、この記事では BODIK の Web API を使って説明していきます。
とはいえ、FastMCP の機能を使うだけなので、特に説明はしません。
以下のようなコードを書けば MCP サーバーが完成します。
import httpx
from fastmcp import FastMCP
api_base_url = "https://wapi.bodik.jp"
openapi_spec_url = "https://wapi.bodik.jp/openapi.json"
client = httpx.AsyncClient(base_url=api_base_url)
openapi_spec = httpx.get(openapi_spec_url).json()
mcp = FastMCP.from_openapi(
openapi_spec=openapi_spec,
client=client,
name="BODIK API Server",
)
if __name__ == "__main__":
mcp.run()
あとは、以下のように実行すれば MCP サーバーが立ち上がります。
uv run main.py
うまく動作しなかった場合、環境変数に
FASTMCP_EXPERIMENTAL_ENABLE_NEW_OPENAPI_PARSER=true
を追加すると、改善する可能性があります。
確認
実際に正しく動いているかどうかを AI エージェントを用いて確認してみます。
ここでは、MCP サーバーの登録の方法は省略します。
このように、MCP サーバーを使って Web API が呼び出されていることが確認できました。
おわりに
とても簡単に OpenAPI ドキュメントから MCP サーバーを建てることができました。
しかし、REST API を単純に MCP へ変換しただけでは、AI エージェントにとって真に使いやすいツールにはならない可能性があります。
REST API は、リソースを中心に設計されていますが、AI エージェントが利用するツールは、多くの場合、目的の達成に直結する機能が求められると思います。
そのため、単純な変換だけでは、AI エージェントはどのエンドポイントをどの順番で呼び出すべきかという推論に多くのコストを割くことになり、結果としてタスクの実行効率が落ちてしまうことも考えられます。
この記事の内容を実運用する前に、これらのことについて詳しく触れている、以下の記事を一度読んでみることをおすすめします。
