Applied AI School
v0 · 規劃中
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 的方法手刻:

  1. 把 GitHub MCP server 的 tools/list 結果抓下來
  2. 翻成 Anthropic 的 tool schema
  3. 自己寫一個 client 連 MCP server、轉發 tool call、把結果包成 tool_result
  4. 維護這層轉接

這四步全部可以省掉。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_usemcp_tool_result,你不用處理 round trip:Anthropic 後端跟 MCP server 直接打完才把結果傳回你。

三條路怎麼選

自己寫 tool(Section 4API mcp_servers 欄位MCP Client SDK
Tool schema 誰寫MCP server 作者MCP server 作者
Tool 在哪執行你的 serverMCP server(透過 Anthropic 後端轉發)你連的 MCP server
Round trip 處理你的 codeAnthropic 託管你的 client SDK
支援 transport不適用HTTP / SSE onlystdio + 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..."
}

實務上:

  1. MCP Inspectornpx @modelcontextprotocol/inspector)跑一次 OAuth flow 拿 token,先做 PoC
  2. Production 自己接 OAuth:跑 authorization code flow → 存 refresh token → request 前換 access token
  3. Token 過期要 refresh 是你的責任,Anthropic API 不管這層

接下來

到這 Claude API 系列的「個別功能」都收完——request、prompt、tool、RAG、Claude features、MCP。最後一章把這些元件組起來:怎麼判斷一個任務該寫 workflow 還是 agent,這兩個詞混用很久但實際上是兩種設計取捨。