modelcontextprotocol/python-sdk

The official Python SDK for Model Context Protocol servers and clients

What it is

MCP Python SDKModel Context Protocol (MCP) を実装する Python ライブラリです。MCP は、大規模言語モデル (LLM) アプリケーションが、Web API のようなプロトコルを介して外部サービス (ツール、リソース、プロンプト) と通信するための標準化された方法です。

What you can do with it

  • Write MCP servers:わずか数行の Python コードで MCP サーバーを記述できます。型ヒント付きの関数をデコレータで修飾することで、LLM が呼び出せる tools (アクション) または resources (テンプレート化された URL) として公開できます。
  • Write MCP clients:サポートされている転送方式 (stdio, Streamable HTTP, Server-Sent Events) を介して、それらのツール/リソースを呼び出す MCP クライアントを記述できます。クライアントは、スキーマ生成、リクエスト/レスポンスのエンコード、構造化された結果の返却を行います。
  • Use the bundled CLI (mcp dev, mcp run, mcp install):迅速な開発、ローカルテスト、および MCP パッケージのインストールに使用します。

How it works (high-level)

  1. Server sideMCPServer インスタンスを作成し、関数を @mcp.tool() または @mcp.resource() でデコレータとして使用します。SDK は Python の型ヒントと docstrings を抽出し、自動的に JSON-Schema 記述を作成し、選択した転送方式で提供します。
  2. Transport layer – MCP は 3 つの標準的な転送方式をサポートしています:
    • stdio – サブプロセスとしてサーバーを組み込む場合に便利です。
    • Streamable HTTP – メッセージをストリーミングする軽量な HTTP エンドポイントです。
    • SSE – Server-Sent Events によるプッシュ型の通信です。
  3. Client sideClient オブジェクトがサーバー URL (または stdio サブプロセス) に接続し、call_tool(name, args) のようなメソッドを提供します。これにより、レスポンスとして structured_content を含むオブジェクトが返されます。

Who might use it

  • LLM application developers:カスタムツール (例:計算機、データベース検索) を LLM に公開するための、クリーンで型付けされたインターフェースが必要な開発者。
  • Platform builders:再利用可能な LLM 互換サービスのマートプレイスを作成している構築者。
  • Researchers:LLM と外部コード間の新しいインタラクションパターンをプロトタイプ化する研究者。

Getting started (quick example)

# 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

@mcp.resource("greeting://{name}")
def greeting(name: str) -> str:
    return f"Hello, {name}!"

ローカルで実行:

uv run mcp dev server.py   # starts a dev server (streamable-http by default)

クライアント側:

import asyncio
from mcp import Client

async def main():
    async with Client("http://localhost:8000/mcp") as client:
        res = await client.call_tool("add", {"a": 1, "b": 2})
        print(res.structured_content)  # → {'result': 3}

asyncio.run(main())

Documentation & resources

License

MIT – 自由に使用、修正、および配布可能です。


All details are taken directly from the repository's README.

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト