AI 科技新聞站每日更新
開發工具2026年6月14日

Claude + MCP 實戰教學:我把踩過的坑全攤出來給你看

A
AI 觀察家
專欄作者 · 2313 字
Claude + MCP 實戰教學:我把踩過的坑全攤出來給你看

重點摘要

  • MCP 不是插件,是協議層:搞懂這個,你才不會一直在錯的地方找問題。
  • Claude + MCP 的組合,坑主要集中在三個地方:伺服器連線、工具描述寫法、context 用量控制。
  • 跑通之後,Coding 效率的提升是真實的:不是行銷話術,但前提是你得先把架構設對。

為什麼 MCP 和 Claude 的組合這麼難上手?

直接說結論:因為大部分教學都在講「MCP 是什麼」,卻沒人告訴你「連上去之後為什麼不動」。

MCP(Model Context Protocol)是 Anthropic 在 2024 年底推出的開放協議,設計目標是讓 AI 模型能夠跟外部工具、資料來源建立標準化的溝通介面。換句話說,它不是 Claude 的某個功能按鈕,而是一套讓 Claude 「看得懂」外部工具的語言規範。

問題在於,這套協議的生態系還很新。官方文件寫得頗為學術,社群裡的範例程式碼版本又常常對不上,許多開發者第一次跑,根本不確定自己是設定錯了、還是工具本身有 bug。


怎麼把 MCP 伺服器跑起來?

先把環境確認清楚,這步跳掉後面一定卡。

基本前置條件:

  • Node.js 18 以上(MCP SDK 有版本要求)
  • 安裝 @anthropic-ai/sdk@modelcontextprotocol/sdk
  • Claude API Key(用 claude-3-5-sonnet 或更新的模型)

最小可跑的 MCP Server 結構(以 TypeScript 為例):

import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';

const server = new Server(
  { name: 'my-coding-tools', version: '1.0.0' },
  { capabilities: { tools: {} } }
);

// 在這裡註冊你的工具
server.setRequestHandler(ListToolsRequestSchema, async () => ({
  tools: [{
    name: 'read_file',
    description: '讀取指定路徑的檔案內容',
    inputSchema: {
      type: 'object',
      properties: { path: { type: 'string' } },
      required: ['path']
    }
  }]
}));

const transport = new StdioServerTransport();
await server.connect(transport);

這是最簡版本。很多教學跳過了 StdioServerTransport 這個細節——MCP 預設用標準輸入輸出溝通,不是 HTTP,這個搞錯方向會浪費你很多時間。


為什麼工具描述寫不好、Claude 就不會用?

這是我觀察到開發者最常忽略的地方,也是真正影響 Coding 輔助品質的核心。

Claude 決定要不要呼叫某個工具,靠的是 description 欄位。這不是給人看的備注,是給模型做決策的 prompt。

差的寫法 vs 好的寫法:

差的 好的
read_file 「讀檔案」 「讀取本地檔案系統中指定路徑的文字內容,適合在需要查看程式碼、設定檔或文字資料時使用」
run_command 「執行指令」 「在專案根目錄執行 shell 指令並回傳 stdout/stderr,適合跑測試、build 或 lint 等開發指令」
search_code 「搜尋程式碼」 「在指定目錄內以關鍵字搜尋程式碼,回傳符合的行號與上下文,適合定位特定函式或變數的使用位置」

描述越具體,Claude 的工具選擇準確度越高。這不是玄學,是因為模型本質上是在做語義匹配。


怎麼控制 context 用量,讓 Coding 流程不爆掉?

MCP 帶來的最大副作用是 context 膨脹。每次工具呼叫的結果都會推進對話 context,一個複雜的 Coding 任務跑下來,很快就會碰到 token 上限。

幾個實用的控制策略:

  1. 工具回傳截斷:讓 read_file 工具只回傳前 200 行,需要更多再呼叫,而不是一口氣把整個檔案塞進去。
  2. 分任務拆對話:大功能拆成獨立子任務,每個子任務開新對話,避免單一 session 太長。
  3. 摘要 checkpoint:在對話中途請 Claude 產生一份「目前進度摘要」,存起來,下個 session 用這份摘要接力,而不是從頭讀完整紀錄。
  4. 過濾無用工具輸出:如果工具回傳的內容包含大量不相關資訊(例如完整的 package-lock.json),在 server 端先過濾,只傳關鍵欄位。

跑通之後,實際的 Coding 體驗是什麼樣子?

把環境設好之後,Claude + MCP 的 Coding 輔助確實進入另一個層次。

它可以主動讀你的程式碼、執行測試、看到錯誤訊息再修正,整個迴圈不需要你手動複製貼上。我自己測試過讓它接一個有 failing test 的 TypeScript 專案,它能夠自主跑 npm test、讀錯誤 log、定位問題、修改程式碼、再跑一次測試,整個過程幾乎不需要介入。

這才是 MCP 真正的價值主張——不是讓 Claude 「知道更多」,而是讓它能夠「行動」。

但前提是:你的工具設計要合理、描述要精確、context 要管理好。這三件事沒做對,你得到的只是一個更複雜的 debug 問題。


把這套架構跑起來需要一些前期投資,但一旦通了,它的可擴展性是相當驚人的——你可以持續加入新工具,讓 Claude 的 Coding 能力隨著你的工具庫一起成長。這才是值得認真投入的方向。

常見問題

MCP 和一般的 Claude API 工具呼叫有什麼差別?

一般工具呼叫是在 API 請求裡直接定義工具;MCP 是把工具抽離成獨立伺服器,透過標準協議溝通,更

一定要用 TypeScript 才能寫 MCP Server 嗎?

不是。官方有 Python SDK,社群也有 Go、Rust 的實作。TypeScript 是目前文

Claude 的哪個版本最適合搭配 MCP 做 Coding?

目前 claude-3-5-sonnet 在工具使用準確度和 Coding 能力上表現最均衡,是多數

MCP Server 需要部署到雲端嗎?

不需要。本地開發時直接跑在本機即可,透過 stdio 傳輸。如果需要讓多個使用者共用工具,才需要考慮

context 超過上限時,對話會直接崩潰嗎?

Claude API 會回傳錯誤,對話中斷。解決方式是提前監控 token 用量,在接近上限前主動產

分享這篇

同系列文章