コンテンツにスキップ

MCP Python SDK

機械翻訳

このページは英語版ドキュメントから自動翻訳されたものであり、正式な版は英語版のページです。不自然な箇所があれば、翻訳についてで報告の方法を説明しています。

このドキュメントの対象は v2(現行の安定版リリース系列)

v2 が初めての場合や v1 から移行する場合は、v2 の新機能で変更点を 5 分で確認できます。破壊的変更は移行ガイドがすべて扱っています。まだ v1.x を使っている場合、そのドキュメントは v1.x のドキュメントにあります。わかりにくい点や使いにくい点があれば、教えてください

Model Context Protocol(MCP)を使うと、アプリケーションは標準化された方法で LLM にコンテキストを提供できます。コンテキストを「提供する」という関心事を、LLM とのやり取りそのものから切り離せます。

これはその公式 Python SDK です。この SDK を使うと次のことができます。

  • あらゆる MCP ホストにツール、リソース、プロンプトを公開する MCP サーバーを構築できます。
  • あらゆる MCP サーバーに接続する MCP クライアントを構築できます。
  • stdio、Streamable HTTP、SSE という標準のトランスポートすべてを扱えます。

要件

Python 3.10 以上が必要です。

インストール

uv add "mcp[cli]"
pip install "mcp[cli]"

[cli] エクストラを付けると mcp コマンドが使えるようになります。開発には入れておくことをおすすめします。各依存関係の用途についてはインストールを参照してください。

作成する

server.py というファイルを作成します。

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:
    """Greet someone by name."""
    return f"Hello, {name}!"

これだけで完全な MCP サーバーです。

このサーバーは、ツールを 1 つ(add)と、テンプレート化されたリソースを 1 つ(greeting://{name})公開しています。

実行する

uv run mcp dev server.py

これでサーバーが起動し、MCP Inspector が開きます。サーバーをあれこれ触って試せる対話型の UI です。表示される URL を開いてください。

Note

Inspector は Node.js アプリなので、mcp dev を使うには PATH 上に npx が必要です。

試してみる

Inspector で Tools を開き、a=1b=2 を指定して add を呼び出してください。

3 が返ってきます。✨

Inspector はこのフォーム(a 用の必須の整数フィールドが 1 つ、b 用にもう 1 つ)を型ヒントから組み立てました。Claude も、そのほかのあらゆる MCP ホストも同じことをします。

今度は Resources を開き、greeting://World を読み取ってみてください。

Hello, World!

まとめ

ここで、書かなかったものに改めて目を向けてみましょう。

  • JSON Schema はありません。a: int, b: int がそのままスキーマです。
  • リクエストの解析も、シリアライズも、バリデーションのコードもありません。
  • プロトコルの処理は一切ありません。

書いたのは、型ヒントと docstring を付けた Python 関数 2 つだけです。残りは SDK が引き受けます。

次に読むもの

  • はじめにでは、インストールから、テストも済んだ動作するサーバーの完成までを案内します。
  • MCP サーバーを「使う」側のアプリケーションを作るなら、クライアントから始めてください。
  • すでに FastAPI や Starlette のアプリがあるなら、既存のアプリに追加するでその中に MCP サーバーをマウントできます。
  • 特定のエラーメッセージを探しているなら、トラブルシューティングがメッセージの文言そのままで引けるように整理されています。
  • v2 で何が変わったか気になるなら、v2 の新機能が 5 分で読めるツアーです。
  • v1 から移行するなら、移行ガイドから始めてください。
  • 正確なシグネチャを探しているなら、API リファレンスがソースから生成されています。
  • LLM と一緒に読んでいるなら、このドキュメントは llms.txt 形式でも公開されています。llms.txt は各ページの索引で、llms-full.txt は全ページを 1 つのファイルに収めたものです。