Skip to content

Latest commit

 

History

History
121 lines (81 loc) · 4.18 KB

File metadata and controls

121 lines (81 loc) · 4.18 KB

Model Context Protocol (MCP) Python 実装

このリポジトリには、Model Context Protocol (MCP) のPython実装が含まれており、MCP標準を使って通信するサーバーとクライアントアプリケーションの作成方法を示しています。

概要

MCPの実装は主に2つのコンポーネントで構成されています:

  1. MCPサーバー (server.py) - 以下を提供するサーバー:

    • Tools:リモートで呼び出せる関数
    • Resources:取得可能なデータ
    • Prompts:言語モデル用のプロンプトテンプレート
  2. MCPクライアント (client.py) - サーバーに接続し、その機能を利用するクライアントアプリケーション

機能

この実装では、MCPの主要な機能をいくつか示しています:

Tools

  • completion - AIモデルからテキスト補完を生成(シミュレーション)
  • add - 2つの数字を加算するシンプルな計算機

Resources

  • models:// - 利用可能なAIモデルの情報を返す
  • greeting://{name} - 指定した名前に対するパーソナライズされた挨拶を返す

Prompts

  • review_code - コードレビュー用のプロンプトを生成

インストール

このMCP実装を使うには、必要なパッケージをインストールしてください:

pip install mcp-server mcp-client

サーバーとクライアントの起動

サーバーの起動

別のターミナルでサーバーを起動します:

python server.py

MCP CLIを使って開発モードでサーバーを起動することもできます:

mcp dev server.py

または、Claude Desktopにインストールして起動することも可能です(利用可能な場合):

mcp install server.py

クライアントの起動

別のターミナルでクライアントを起動します:

python client.py

これによりサーバーに接続し、利用可能なすべての機能を実演します。

クライアントの使い方

クライアント (client.py) はMCPの全機能を示しています:

python client.py

これによりサーバーに接続し、tools、resources、promptsを含むすべての機能を利用します。出力には以下が表示されます:

  1. 計算機ツールの結果(5 + 7 = 12)
  2. 「What is the meaning of life?」に対するcompletionツールの応答
  3. 利用可能なAIモデルの一覧
  4. 「MCP Explorer」へのパーソナライズされた挨拶
  5. コードレビュー用のプロンプトテンプレート

実装の詳細

サーバーはFastMCP APIを使って実装されており、MCPサービスを定義するための高レベルの抽象化を提供します。以下はツールの定義例です:

@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers together
    
    Args:
        a: First number
        b: Second number
    
    Returns:
        The sum of the two numbers
    """
    logger.info(f"Adding {a} and {b}")
    return a + b

クライアントはMCPクライアントライブラリを使ってサーバーに接続し、呼び出します:

async with stdio_client(server_params) as (reader, writer):
    async with ClientSession(reader, writer) as session:
        await session.initialize()
        result = await session.call_tool("add", arguments={"a": 5, "b": 7})

詳しく知るには

MCPの詳細については、以下を参照してください: https://modelcontextprotocol.io/

免責事項
本書類はAI翻訳サービス「Co-op Translator」を使用して翻訳されました。正確性を期しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。原文の言語による文書が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用により生じた誤解や誤訳について、当方は一切の責任を負いかねます。