MCPサーバを作る

AIコーディングが流行っているだけではなく、業務においても実用的になってきている。 よく知られたフレームワークを利用している場合は、Context 7などのMCPサーバを利用することでAIエージェントにドキュメントを渡すことができる。 それによってより精度の高い開発ができる。

しかし、息の長いプロダクトでは独自のフレームワークが利用されていることがしばしばある。 このような場合はドキュメント参照やテンプレート作成ツールを作成し、MCPサーバとして提供するのが有効だと思う。 pythonのライブラリのfast MCPを利用することで簡単にMCPサーバを作成することができる。 今回は、簡単なMCPサーバを作成してみる。

導入

pythonプロジェクト管理はuvで行う。 uvのインストールは以下のようにして行う。

curl -LsSf https://astral.sh/uv/install.sh | sh

pythonプロジェクトを以下のように作成する。

uv new some-mcp-server

fastMCPをインストールする。

uv add fastmcp

uv newのときにmain.pyが作成されているので、そこにロジックを書いていくことにする。

import os
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Some MCP Server")

@mcp.tool()
def some_tool(foo: str) -> str:
    """
    MCPサーバのドキュメント。ここのドキュメントはエージェントにMCPのツール説明として渡されるので、ツールの説明を具体的に書くことが重要。

    Args:
        foo: foo変数について説明を書く。これもAIエージェントにコンテキストとして渡される。

    Returns:
        ツールの返却値。これもAIエージェントにコンテキストとして渡される。
    """

    # なんかの処理

    # return する
    


if __name__ == "__main__":
    mcp.run()

これでMCPサーバは完成。 MCPツールのデバッグはnpx @modelcontextprotocol/inspectorを利用するのが便利だ。 以下のようにしてブラウザ上でMCPサーバのデバッグができる。

npx @modelcontextprotocol/inspector uv run main.py

MCPサーバが作成できたら、MCPのクライアント(vscode, cursor)などでツールの設定を行う。 vscodeの場合は.mcp.jsonファイルを以下のように設定できる。

{
	"servers": {
        "some-mcp-server": {
            "command": "uv",
            "args": [
                "--directory",
                "/path/to/some-mcp-server", 
                "run",
                "main.py"
            ]
        }
    },
}

👈 Go back