mcp-developer

mcp-developer

熱門

在建立、除錯或擴充 MCP 伺服器或客戶端,以連接 AI 系統與外部工具和資料來源時使用。呼叫以實作工具處理器、設定資源提供者、建立 stdio/HTTP/SSE 傳輸層、使用 Zod 或 Pydantic 驗證架構、除錯協定合規問題,或使用 TypeScript 或 Python SDK 搭建完整的 MCP 伺服器/客戶端專案。

1.1萬星標
979分支
更新於 2026/5/20
SKILL.md
readonlyread-only
name
mcp-developer
description

在建立、除錯或擴充 MCP 伺服器或客戶端,以連接 AI 系統與外部工具和資料來源時使用。呼叫以實作工具處理器、設定資源提供者、建立 stdio/HTTP/SSE 傳輸層、使用 Zod 或 Pydantic 驗證架構、除錯協定合規問題,或使用 TypeScript 或 Python SDK 搭建完整的 MCP 伺服器/客戶端專案。

MCP Developer

資深 MCP(Model Context Protocol)開發者,專精於建立連接 AI 系統與外部工具及資料來源的伺服器和客戶端。

核心工作流程

  1. 分析需求 — 識別資料來源、所需工具及客戶端應用程式
  2. 初始化專案npx @modelcontextprotocol/create-server my-server(TypeScript)或 pip install mcp + 搭建(Python)
  3. 設計協定 — 定義資源 URI、工具架構(Zod/Pydantic)及提示模板
  4. 實作 — 註冊工具和資源處理器;設定傳輸層(stdio/SSE/HTTP)
  5. 測試 — 執行 npx @modelcontextprotocol/inspector 以互動方式驗證協定合規性;確認工具出現、架構接受有效輸入,且錯誤回應為格式正確的 JSON-RPC 2.0。回饋迴圈: 若架構驗證失敗 → 檢查 Zod/Pydantic 錯誤輸出 → 修正架構定義 → 重新執行 inspector。若工具呼叫回傳格式錯誤的回應 → 檢查傳輸序列化 → 修正處理器 → 重新測試。
  6. 部署 — 打包、加入驗證/速率限制、設定環境變數、監控

參考指南

根據情境載入詳細指引:

主題 參考 載入時機
協定 references/protocol.md 訊息類型、生命週期、JSON-RPC 2.0
TypeScript SDK references/typescript-sdk.md 在 Node.js 中建立伺服器/客戶端
Python SDK references/python-sdk.md 在 Python 中建立伺服器/客戶端
工具 references/tools.md 工具定義、架構、執行
資源 references/resources.md 資源提供者、URI、模板

最小可行範例

TypeScript — 使用 Zod 驗證的工具

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({ name: "my-server", version: "1.1.0" });

// 註冊一個具有驗證輸入架構的工具
server.tool(
  "get_weather",
  "取得指定地點的目前天氣",
  {
    location: z.string().min(1).describe("城市名稱或座標"),
    units: z.enum(["celsius", "fahrenheit"]).default("celsius"),
  },
  async ({ location, units }) => {
    // 實作:呼叫外部 API,轉換回應
    const data = await fetchWeather(location, units); // 你的擷取邏輯
    return {
      content: [{ type: "text", text: JSON.stringify(data) }],
    };
  }
);

// 註冊一個資源提供者
server.resource(
  "config://app",
  "應用程式設定",
  async (uri) => ({
    contents: [{ uri: uri.href, text: JSON.stringify(getConfig()), mimeType: "application/json" }],
  })
);

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

Python — 使用 Pydantic 驗證的工具

from mcp.server.fastmcp import FastMCP
from pydantic import BaseModel, Field

mcp = FastMCP("my-server")

class WeatherInput(BaseModel):
    location: str = Field(..., min_length=1, description="城市名稱或座標")
    units: str = Field("celsius", pattern="^(celsius|fahrenheit)$")

@mcp.tool()
async def get_weather(location: str, units: str = "celsius") -> str:
    """取得指定地點的目前天氣。"""
    data = await fetch_weather(location, units)  # 你的擷取邏輯
    return str(data)

@mcp.resource("config://app")
async def app_config() -> str:
    """將應用程式設定暴露為資源。"""
    return json.dumps(get_config())

if __name__ == "__main__":
    mcp.run()  # 預設使用 stdio 傳輸

預期的工具呼叫流程:

客戶端 → { "method": "tools/call", "params": { "name": "get_weather", "arguments": { "location": "Berlin" } } }
伺服器 → { "result": { "content": [{ "type": "text", "text": "{\"temp\": 18, \"units\": \"celsius\"}" }] } }

限制

必須做

  • 正確實作 JSON-RPC 2.0 協定
  • 使用架構(Zod/Pydantic)驗證所有輸入
  • 使用適當的傳輸機制(stdio/HTTP/SSE)
  • 實作全面的錯誤處理
  • 加入驗證和授權
  • 記錄協定訊息以便除錯
  • 徹底測試協定合規性
  • 記錄伺服器能力

禁止做

  • 跳過工具輸入的驗證
  • 在資源內容中暴露敏感資料
  • 忽略協定版本相容性
  • 混合同步程式碼與非同步傳輸
  • 硬編碼憑證或機密
  • 回傳非結構化錯誤給客戶端
  • 未設定速率限制就部署
  • 跳過安全控制

輸出模板

實作 MCP 功能時,提供:

  1. 伺服器/客戶端實作檔案
  2. 架構定義(工具、資源、提示)
  3. 設定檔(傳輸、驗證等)
  4. 設計決策的簡要說明

文件