Python MCP サーバーをゼロから構築する
Model Context Protocol (MCP) は、現在業界標準となっています。SDKの月間ダウンロード数は9,700万件に達しました。主要なAIツールはすべてこれを使用しています。ほとんどのガイドは既存のサーバーのインストール方法しか説明していませんが、このガイドでは、PythonとGitHub APIを使用して独自のサーバーを構築する方法を解説します。
MCPとは?
MCPは、AIクライアントが外部サービスを呼び出すことを可能にするプロトコルです。あなたのサーバーは、ClaudeやCursorといったツールからのリクエストを処理します。
MCPの3つの核となる要素:
- Tools(ツール): AIがアクションを実行したりデータを取得したりするために呼び出す関数。
- Resources(リソース): ファイルやデータベースのレコードなどの、読み取り専用のデータエンドポイント。
- Prompts(プロンプト): 一貫したワークフローを実現するための、再利用可能な指示テンプレート。
プロジェクトのセットアップ
ディレクトリを作成し、uvを使用して必要なライブラリをインストールします:
mkdir github-mcp-server
cd github-mcp-server
uv init .
uv add "mcp[cli]" httpx
サーバーの構築
複雑な処理にはFastMCPを使用します。優れたMCPサーバーは、server.py、pyproject.toml、およびGitHubトークンのためのオプションの.envファイルの3つの特定のファイルを使用します。
開発のプロのヒント:
- ツールの戻り値にはPydanticモデルを使用する: これにより、AIに乱雑な文字列ではなく、構造化されたデータを提供できます。
- 明確なdocstringを書く: AIはこれを読み、いつツールを使用するかを判断します。
- 数値入力を制限(Clamp)する: AIモデルは、0や100といった予期しない数値を送ってくることがよくあります。
- 例外処理を行う: サーバーがクラッシュすると、接続全体が切断される可能性があります。
テストとデプロイ
Claudeでテストするまで待たないでください。まずはMCP Inspectorを使用しましょう。以下を実行します:
uv run mcp dev server.py
これにより、http://localhost:5173 でローカルインターフェースが開きます。ツール、リソース、プロンプトを1か所でテストできます。
Claude Desktopへの接続:
設定ファイルを更新して、サーバーを含めます。server.pyファイルへのフルパスを使用してください。環境エラーを避けるため、pythonコマンドを直接使うのではなく、常にuv runを使用してください。
Claude Codeへの接続:
以下のCLIコマンドを使用します:
claude mcp add github-tools -- uv run python /path/to/server.py
カスタムMCPサーバーを構築することで、ライブデータをAIワークフローに取り込むことができます。
Source: https://dev.to/moksh/building-a-python-mcp-server-from-scratch-a-practical-github-api-guide-397k
Optional learning community: https://t.me/GyaanSetuAi