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.pypyproject.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