Anthropic
在 Anthropic API 裡用 MCP
Anthropic API 的 mcp_servers 欄位讓你直接掛遠端 MCP server,不用自己包 tool schema;MCP 本身的概念請看 MCP 系列。
TL;DR
- Anthropic API 有一個
mcp_servers欄位——把遠端 MCP server URL 丟進去,Claude 就能直接呼叫上面的 tools,不用你自己寫 schema - 比起 Section 4 自己包 tool use 的 4 步來回,
mcp_servers是「託管模式」:tool list / tool call / tool result 都在 Anthropic 後端跟 MCP server 之間直接打 - MCP 本身(協定、架構、怎麼自己寫 server)這篇不重講——請走 MCP 系列
一個情境:想連公司的 GitHub MCP
老闆說:「我們已經有一個內部 GitHub MCP server(IT 平台組維護的),你的 LLM 助手可以直接用嗎?我不想你又重寫一份 GitHub tool。」
如果你照 Section 4 的方法手刻:
- 把 GitHub MCP server 的
tools/list結果抓下來 - 翻成 Anthropic 的 tool schema
- 自己寫一個 client 連 MCP server、轉發 tool call、把結果包成
tool_result - 維護這層轉接
這四步全部可以省掉。Anthropic API 直接吃 MCP server URL。
mcp_servers 怎麼用
一個 messages.create request 加兩個欄位:
{
"model": "claude-opus-4-7",
"max_tokens": 1024,
"messages": [
{ "role": "user", "content": "列出我所有 repo 的 open PR" }
],
"mcp_servers": [
{
"type": "url",
"url": "https://mcp.github.example.com/sse",
"name": "github-mcp",
"authorization_token": "ghp_xxx..."
}
],
"tools": [
{ "type": "mcp_toolset", "mcp_server_name": "github-mcp" }
]
}
要點:
- beta header:目前要帶
anthropic-beta: mcp-client-2025-11-20(功能還在 beta,header 名稱會隨版本改) mcp_servers描述「server 在哪、怎麼認證」tools裡用mcp_toolset引用 server name——可以 allowlist / denylist 特定 tool(用default_config+configs)- 必須是 HTTP / SSE 遠端 server——本機 stdio server 不能直連,要走 MCP client SDK 自己接
回應裡會多兩個 block type:mcp_tool_use 跟 mcp_tool_result,你不用處理 round trip:Anthropic 後端跟 MCP server 直接打完才把結果傳回你。
三條路怎麼選
| 自己寫 tool(Section 4) | API mcp_servers 欄位 | MCP Client SDK | |
|---|---|---|---|
| Tool schema 誰寫 | 你 | MCP server 作者 | MCP server 作者 |
| Tool 在哪執行 | 你的 server | MCP server(透過 Anthropic 後端轉發) | 你連的 MCP server |
| Round trip 處理 | 你的 code | Anthropic 託管 | 你的 client SDK |
| 支援 transport | 不適用 | HTTP / SSE only | stdio + HTTP |
| 適合 | 內部 API、薄薄一層 tool | 已有遠端 MCP server,想最少 code 接 | 本機 server、需要 prompts / resources、想精細控制 |
簡單規則:
- 已經有遠端 MCP server,只要 tool 能用就好 →
mcp_servers欄位 - 要連本機 MCP server(例如
npx some-mcp-server)→ MCP client SDK - 連 MCP 都不需要、就一兩個 internal tool → 自己寫 tool use
認證:OAuth bearer token
很多正經的 MCP server 會要 OAuth(GitHub、Google Calendar、Notion 那種)。mcp_servers 欄位不幫你跑 OAuth flow——你要自己拿到 access token,再丟進 authorization_token:
{
"type": "url",
"url": "https://mcp.notion.com/sse",
"name": "notion-mcp",
"authorization_token": "ya29.a0Af..."
}
實務上:
- 用 MCP Inspector(
npx @modelcontextprotocol/inspector)跑一次 OAuth flow 拿 token,先做 PoC - Production 自己接 OAuth:跑 authorization code flow → 存 refresh token → request 前換 access token
- Token 過期要 refresh 是你的責任,Anthropic API 不管這層
接下來
到這 Claude API 系列的「個別功能」都收完——request、prompt、tool、RAG、Claude features、MCP。最後一章把這些元件組起來:怎麼判斷一個任務該寫 workflow 還是 agent,這兩個詞混用很久但實際上是兩種設計取捨。

