MCP 就是「一行 JSON-RPC 請求換一行回應」。用最小的 server 看懂 AI 怎麼發現工具、呼叫工具、拿回結果,並親手擋下一次目錄逃逸攻擊。
這頁讓你 3 分鐘知道這是什麼、能幹嘛、真的會動。要逐行、踩雷、FAQ 的完整版,在實戰手冊裡。
想讓 Claude、Cursor、或自家 Agent 調用你的內部 API/工具,常卡在「MCP 到底是什麼協定?怎麼把一個函式變成 AI 能呼叫的工具?把檔案讀取交給 AI 安全嗎?」
這個範本是一支純 Python 標準函式庫、零第三方相依的 stdio MCP server。沒有 HTTP port、不部署雲端,client 把它當 subprocess 啟動,走標準輸入輸出交換 JSON-RPC。小到你能一眼讀完,剛好夠看懂協定的每一段。
initialize / tools/list / tools/call 三段,一行請求換一行回應。需要 uv。不需要任何 API key。
git clone https://github.com/yazelin/mcp-server-starter.git
cd mcp-server-starter
uv sync
uv run python client_smoke_test.py
{"id": 1, "result": {"protocolVersion": "2024-11-05", ...}}
{"id": 2, "result": {"tools": [echo, now, read_text_file, word_count]}}
{"id": 3, "result": {"content": [{"type":"text","text":"hello"}], "isError": false}}
...
OK: all 6 checks passed
前半段你從零手刻;後半段用 FastMCP 重寫同樣的工具,體會「同樣的事,少寫一大截」。
| 面向 | 手刻 server.py | FastMCP |
|---|---|---|
| 工具 schema | 自己手寫 JSON | 從 type hints 自動生 |
| 迴圈 / 回傳包裝 | 自己寫 | 框架包掉 |
| 安全邊界 safe() | 自己寫 | 一樣自己寫 |
核心一句:框架省掉協定樣板,但安全邏輯永遠是你自己的責任。同一份 smoke test 對兩種寫法都過,證明行為一致。完整對照在 docs/08。
這頁是快速了解;下面每一章都是完整內容,在 GitHub 上點開就能讀。
這頁是快速了解。逐行讀懂、安全邊界深入、踩雷清單、FAQ、部署都在實戰手冊(PDF)裡。
延伸資源 · Awesome MCP:modelcontextprotocol/servers(官方參考實作)、punkpeye/awesome-mcp-servers(社群清單)。