モデルコンテキストプロトコル(MCP)のPython実装
このプロジェクトは、Anthropic MCP仕様に準拠した、Pythonで動作するモデルコンテキストプロトコル(MCP)サーバーとクライアントを実装します。MCPプロトコルの主要なパターンを、シンプルでインタラクティブな例を通して示します。
MCPとは何ですか?
モデルコンテキストプロトコル(MCP)は、JSON-RPC 2.0を基盤とするオープンスタンダードで、AIモデルを外部データソースやツールに接続するためのものです。MCPは、AIアプリケーションが1つ以上のMCPサーバーと通信するクライアントサーバーアーキテクチャを定義します。各MCPサーバーは、以下のような機能を公開します。
ツール: アクションを実行する実行可能な関数
リソース: 情報を提供するデータソース
プロンプト: 定義済みのテンプレートまたはワークフロー
MCP は、これらの機能の検出および呼び出し方法を標準化し、モデルが外部システムと構造化された方法で対話できるようにする「AI 向け USB-C」として機能します。
Related MCP server: MCP Server Python Template
プロジェクト構造
server/: MCPサーバーの実装server.py: MCP リクエストを処理し、サンプルツール/リソースを提供する WebSocket サーバー
client/: MCPクライアント実装client.py: サーバーに接続し、すべての MCP 機能を実行するデモ クライアント
デモされた機能
この実装は、コア MCP プロトコル フローを紹介します。
機能ネゴシエーション:
initialize介したクライアント・サーバー間のハンドシェイク能力発見:利用可能なツールとリソースの一覧
ツールの呼び出し: パラメータを指定して
add_numbersツールを呼び出すリソースアクセス: リソースからテキストコンテンツを読み取る
設定
仮想環境を作成します。
python3 -m venv .venv source .venv/bin/activate依存関係をインストールします:
pip install -r requirements.txt
使用法
MCP サーバーを起動します (1 つのターミナルで):
python server/server.pyMCP クライアントを実行します (別のターミナルで)。
python client/client.py
クライアントはサーバーに接続し、MCP ハンドシェイクを実行し、機能を検出し、フォーマットされた出力でツールの呼び出しとリソースへのアクセスを実演します。
仕組み
MCPサーバー
サーバー:
WebSocket接続を受け入れる
MCP仕様に従ってJSON-RPCリクエストに応答します
サンプルツール(
add_numbers)を提供しますサンプルリソース(
example.txt)を提供しますMCPハンドシェイクと機能検出をサポート
MCPクライアント
クライアント:
WebSocket経由でサーバーに接続する
MCPハンドシェイクを実行する
利用可能なツールとリソースを発見する
ツールの呼び出しとリソースの読み取りを実演します
結果をフォーマットされた形式で表示します
プロトコルの詳細
MCP は次の主要なメソッドを実装します。
方法 | 説明 |
| 能力を確立するためのハンドシェイク |
| 利用可能なツールの一覧 |
| 引数を指定してツールを呼び出す |
| 利用可能なリソースを一覧表示する |
| リソースコンテンツを読む |
| 利用可能なプロンプトを一覧表示する |
プロジェクトの拡張
この実装は次のように拡張できます。
さまざまな機能を備えたツールを追加する
読み取りごとに変化する動的リソースの追加
ガイド付きインタラクションのためのプロンプトテンプレートの実装
よりインタラクティブなクライアントアプリケーションの作成