建立高品質 MCP (Model Context Protocol) 伺服器的指南,使 LLM 能夠透過精心設計的工具與外部服務互動。適用於建立 MCP 伺服器以整合外部 API 或服務,無論是使用 Python (FastMCP) 或 Node/TypeScript (MCP SDK)。
使用此技能來建立高品質的 MCP (Model Context Protocol) 伺服器,使 LLM 能夠有效地與外部服務互動。MCP 伺服器提供工具,允許 LLM 存取外部服務和 API。MCP 伺服器的品質取決於它能多好地讓 LLM 使用提供的工具完成真實世界的任務。
建立高品質的 MCP 伺服器涉及四個主要階段:
在深入實作之前,請先透過檢視這些原則來理解如何為 AI 代理設計工具:
為工作流程而非僅為 API 端點建立:
schedule_event 既檢查可用性又建立事件)針對有限的上下文進行最佳化:
設計可操作的錯誤訊息:
遵循自然任務細分:
使用評估驅動開發:
取得最新的 MCP 協定文件:
使用 WebFetch 載入:https://modelcontextprotocol.io/llms-full.txt
此綜合文件包含完整的 MCP 規範和指南。
載入並閱讀以下參考檔案:
對於 Python 實作,也請載入:
https://raw.githubusercontent.com/modelcontextprotocol/python-sdk/main/README.md對於 Node/TypeScript 實作,也請載入:
https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/main/README.md要整合服務,請閱讀所有可用的 API 文件:
為了收集全面的資訊,請根據需要使用網路搜尋和 WebFetch 工具。
根據您的研究,建立包含以下內容的詳細計劃:
工具選擇:
共用工具和輔助程式:
輸入/輸出設計:
錯誤處理策略:
現在您已有全面的計劃,請遵循特定語言的最佳實踐開始實作。
對於 Python:
.py 檔案,或如果複雜則組織成模組(參見 🐍 Python 指南)對於 Node/TypeScript:
package.json 和 tsconfig.json要開始實作,請在實作工具之前建立共用工具:
對於計劃中的每個工具:
定義輸入架構:
撰寫全面的文件字串/說明:
實作工具邏輯:
新增工具註解:
readOnlyHint: true(用於唯讀操作)destructiveHint: false(用於非破壞性操作)idempotentHint: true(如果重複呼叫具有相同效果)openWorldHint: true(如果與外部系統互動)此時,請載入適當的語言指南:
對於 Python:載入 🐍 Python 實作指南 並確保以下事項:
model_config 的 Pydantic v2 模型對於 Node/TypeScript:載入 ⚡ TypeScript 實作指南 並確保以下事項:
server.registerTool.strict() 的 Zod 架構any 類型 - 使用適當的類型npm run build)初始實作後:
為確保品質,請檢視程式碼的:
重要: MCP 伺服器是長時間執行的進程,透過 stdio/stdin 或 sse/http 等待請求。在主進程中直接執行它們(例如 python server.py 或 node dist/index.js)會導致進程無限期掛起。
測試伺服器的安全方式:
timeout 5s python server.py對於 Python:
python -m py_compile your_server.py對於 Node/TypeScript:
npm run build 並確保無錯誤完成為驗證實作品質,請從特定語言指南載入適當的檢查清單:
實作 MCP 伺服器後,建立全面的評估來測試其效能。
載入 ✅ 評估指南 以取得完整的評估指南。
評估測試 LLM 是否能有效使用您的 MCP 伺服器來回答實際的複雜問題。
要建立有效的評估,請遵循評估指南中概述的流程:
每個問題必須:
使用此結構建立 XML 檔案:
<evaluation>
<qa_pair>
<question>Find discussions about AI model launches with animal codenames. One model needed a specific safety designation that uses the format ASL-X. What number X was being determined for the model named after a spotted wild cat?</question>
<answer>3</answer>
</qa_pair>
<!-- More qa_pairs... -->
</evaluation>
在開發期間根據需要載入這些資源:
https://modelcontextprotocol.io/llms-full.txt 取得 - 完整的 MCP 規範https://raw.githubusercontent.com/modelcontextprotocol/python-sdk/main/README.md 取得https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/main/README.md 取得🐍 Python 實作指南 - 完整的 Python/FastMCP 指南,包含:
@mcp.tool 進行工具註冊⚡ TypeScript 實作指南 - 完整的 TypeScript 指南,包含:
server.registerTool 進行工具註冊