MCP Python SDK
這裡是 v2 的說明文件,也就是目前的穩定發行版本
剛接觸 v2,或是從 v1 過來?v2 的新功能 用五分鐘帶你看過有哪些改變,遷移指南 則涵蓋每一項破壞性變更。還在用 v1.x?它的說明文件在 v1.x 文件。哪裡卡住或看不懂?告訴我們。
Model Context Protocol(MCP) 讓應用程式能以標準化的方式為 LLM 提供上下文,把提供上下文這件事和與 LLM 的互動本身分開。
這是它的官方 Python SDK。有了它,你可以:
- 建立 MCP 伺服器,向任何 MCP 主機(host)公開工具、資源和提示詞。
- 建立 MCP 用戶端,連線到任何 MCP 伺服器。
- 支援每一種標準傳輸方式:stdio、Streamable HTTP 和 SSE。
環境需求
Python 3.10+。
安裝
uv add "mcp[cli]"
pip install "mcp[cli]"
[cli] extra 會提供 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 伺服器。
它公開了一個工具 add,以及一個範本化的資源 greeting://{name}。
執行
uv run mcp dev server.py
這會啟動伺服器並開啟 MCP Inspector,一個可以動手操作伺服器的互動式介面。打開它印出的 URL 即可。
Note
Inspector 是 Node.js 應用程式,所以 mcp dev 需要 PATH 上找得到 npx。
試試看
在 Inspector 中前往 Tools,用 a=1、b=2 呼叫 add。
得到的結果是 3。✨
那張表單(a 一個必填整數欄位、b 另一個)是 Inspector 從型別提示建出來的。Claude 和其他所有 MCP 主機也都會這麼做。
接著前往 Resources,讀取 greeting://World:
Hello, World!
重點回顧
再看一次你沒有寫的東西:
- 沒有 JSON Schema。
a: int, b: int就是 schema。 - 沒有請求解析、沒有序列化、不用寫驗證程式碼。
- 完全不用處理協定。
你寫了兩個帶型別提示和 docstring 的 Python 函式,剩下的交給 SDK。