PythonでMCPサーバーを自作する方法(10分で完成)
公式のPython SDKとMCPServerを使って、最小構成のMCPサーバーを作成・テスト・接続する方法と設計のコツ。
SDKを選ぶ
公式SDKはTypeScript、Python、C#、Java、Kotlin、Goなど多くの言語で提供されています。このガイドでは公式Python SDK 2.x(Python 3.11以上が必要)を使います。以前の1.x系では、MCPServerの代わりにmcp.server.fastmcpのFastMCPを使っていました。
1. プロジェクトを準備する
uv init demo && cd demo
uv add "mcp[cli]"2. サーバーを書く
ツールは型ヒントとdocstringを付けた普通の関数です。SDKがそれをツールのスキーマと説明に変換します。mcp.run()でstdioサーバーが起動します。
# server.py
from mcp.server import MCPServer
mcp = MCPServer("demo")
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers."""
return a + b
if __name__ == "__main__":
mcp.run()3. テストする
MCP Inspectorで開くと、Web画面からツールを呼び出して試せます。
uv run mcp dev server.py4. クライアントにつなぐ
パスは絶対パスで指定します。Claude DesktopとCursorではこのエントリーを使います。Claude Codeではclaude mcp add demo -- uv run --with "mcp[cli]" mcp run /絶対パス/server.pyを実行します。
{
"mcpServers": {
"demo": {
"command": "uv",
"args": ["run", "--with", "mcp[cli]", "mcp", "run", "/absolute/path/to/server.py"]
}
}
}設計のコツ
- ツール名と説明はわかりやすく書きましょう。モデルはそれを読んでツールを選びます。
- 入力を検証し、短く役に立つテキストを返しましょう。
- 破壊的な操作は確認なしで公開しないでください。
- GitHubリポジトリにトピック
mcp-serverを付ければ、Socketlistに自動で掲載されます。