# 附錄 C:開發者工具包與 SDK 回到白皮書首頁:[MCP 全方位技術白皮書](/@thc1006/mcp-whitepaper-home) --- ## 官方 SDK 與開發框架 ### Python SDK **官方 MCP Python SDK** - **套件名稱**: `mcp` (PyPI) - **安裝方式**: `pip install mcp` - **主要功能**: - 完整的 MCP 伺服器和客戶端實現 - 支援 stdio 和 HTTP 傳輸 - 內建的工具、資源、提示管理 - 類型提示支援 **FastMCP Framework (Python)** - **套件名稱**: `fastmcp` - **特色**: 高階 Python 框架,類似 FastAPI 的設計哲學 - **優勢**: - 簡化的裝飾器語法 - 自動 JSON Schema 生成 - 內建驗證和錯誤處理 - **範例**: ```python from fastmcp import FastMCP mcp = FastMCP("my-server") @mcp.tool() def calculate_sum(a: int, b: int) -> int: """計算兩個數字的和""" return a + b @mcp.resource("config://settings") def get_settings(): return {"version": "1.0", "debug": True} ``` **其他 Python 工具**: - **langchain-mcp**: LangChain 集成 - **mcp-use**: 輕量級客戶端庫 - **easymcp**: 異步原生客戶端 SDK - **mcp-cli**: 命令行客戶端工具 ### JavaScript/TypeScript SDK **官方 MCP TypeScript SDK** - **套件名稱**: `@modelcontextprotocol/sdk-typescript` - **安裝方式**: `npm install @modelcontextprotocol/sdk-typescript` - **支援環境**: Node.js、Deno、Bun、瀏覽器 **FastMCP Framework (TypeScript)** - **套件名稱**: `@fastmcp/core` - **特色**: TypeScript 優先的高級框架 - **範例**: ```typescript import { FastMCP } from '@fastmcp/core'; const mcp = new FastMCP({ name: 'my-server', version: '1.0.0' }); mcp.addTool({ name: 'get_weather', description: '獲取天氣資訊', inputSchema: { type: 'object', properties: { location: { type: 'string' } } }, handler: async ({ location }) => { // 天氣 API 呼叫 return `${location} 的天氣是晴天`; } }); ``` **其他 TypeScript/JavaScript 工具**: - **LiteMCP**: 輕量級框架 - **ModelFetch**: 運行時無關的 SDK - **simple-mcp**: 簡單的 TypeScript 庫 - **MCPcat**: 分析和調試工具 ### C# SDK **官方 MCP C# SDK** - **套件名稱**: `ModelContextProtocol` (NuGet) - **安裝方式**: `dotnet add package ModelContextProtocol --prerelease` - **特色**: - .NET Core 相容性 - 屬性驅動的工具定義 - 結構化工具輸出支援 - **範例**: ```csharp using ModelContextProtocol; public class WeatherServer : MCPServer { [MCPTool("get_weather", "獲取天氣資訊")] public async Task<WeatherInfo> GetWeather(string location) { // 實現天氣查詢邏輯 return new WeatherInfo { Location = location, Temperature = 25 }; } } ``` **Azure Functions 支援**: - **套件**: `Microsoft.Azure.Functions.Worker.Extensions.Mcp` - **功能**: 在 Azure Functions 中託管 MCP 伺服器 ### Java SDK **官方 MCP Java SDK** - **Maven 座標**: `io.modelcontextprotocol:mcp-java-sdk` - **特色**: - Maven/Gradle 支援 - Spring Boot 整合 - 執行緒安全的客戶端 ## 社群開發工具 ### 開發與測試工具 **MCP Inspector** - **功能**: 瀏覽器基礎的 MCP 伺服器測試工具 - **特色**: 即時測試工具、資源和提示 **MCP CLI** - **安裝**: `pip install mcp-cli` - **功能**: 命令行客戶端,支援遠程 MCP 伺服器連接 **MCPcat** - **功能**: 使用者分析、會話追蹤、即時調試 - **支援**: Python 和 TypeScript ### 專業開發框架 **Google ADK (Agent Development Kit)** - **MCP 整合**: `MCPToolset` 類別 - **功能**: 將 MCP 伺服器作為工具集成到 ADK 代理中 **Firebase Genkit MCP 整合** - **套件**: `@google-labs/genkit-mcp` - **功能**: Genkit 與 MCP 的雙向整合 ## 語言特定資源 ### Go 語言 **社群 SDK**: - `github.com/mark3labs/mcp-go` - 基礎 MCP 客戶端實現 - 功能較基礎,缺乏高級功能 ### Rust 語言 **狀態**: 官方計劃中,目前需要使用 gRPC/HTTP API ### Ruby 語言 **社群支援**: 基礎實現可用,但不夠成熟 ## 部署與託管工具 ### 容器化工具 **MCP Docker 統一部署** - **專案**: `BigUncle/MCP-Server-Unified-Deployment` - **功能**: Docker Compose 統一部署多個 MCP 伺服器 **Kubernetes 操作器** - **ToolHive**: Kubernetes Operator 用於部署 MCP 伺服器 - **功能**: 自動化 MCP 伺服器在 K8s 叢集中的部署 ### 雲端平台支援 **Cloudflare Workers** - **文檔**: Cloudflare Agents 文檔包含 MCP 支援 - **功能**: 在 Edge 部署 MCP 伺服器 **Microsoft Azure** - **Azure Functions**: 透過 MCP 擴展支援 - **Visual Studio Code**: 內建 MCP 客戶端支援 **OpenAI 平台** - **ChatGPT Connectors**: 支援遠程 MCP 伺服器 - **API 整合**: 透過 API 使用 MCP 伺服器 ## 開發工具鏈 ### IDE 支援 **Visual Studio Code** - **MCP 整合**: 內建支援本地和遠程 MCP 伺服器 - **功能**: 自動發現、工具提示、調試支援 **Cursor IDE** - **MCP 支援**: 原生 MCP 客戶端整合 - **配置**: 透過 `mcp.json` 配置伺服器 **Claude Desktop** - **本地伺服器**: 支援 stdio MCP 伺服器 - **配置檔案**: `claude_desktop_config.json` ### 測試與調試 **MCP 測試框架** ```python import asyncio from mcp.testing import MCPTestClient async def test_weather_tool(): client = MCPTestClient("./weather_server.py") # 測試工具列表 tools = await client.list_tools() assert "get_weather" in [t.name for t in tools] # 測試工具調用 result = await client.call_tool("get_weather", {"location": "台北"}) assert "台北" in result.content[0].text ``` **性能基準測試** ```python from mcp.benchmarks import MCPBenchmark benchmark = MCPBenchmark() results = await benchmark.run_tool_latency_test( server_path="./server.py", tool_name="calculate", iterations=1000 ) print(f"平均延遲: {results.avg_latency}ms") ``` ## 最佳實踐工具 ### 程式碼生成 **MCP 樣板生成器** ```bash npx create-mcp-server my-server --template=typescript cd my-server npm install npm run dev ``` **自動 Schema 生成** ```python from mcp.schema import generate_schema_from_function def my_tool(param1: str, param2: int = 10) -> dict: """我的工具描述""" return {"result": f"{param1}-{param2}"} schema = generate_schema_from_function(my_tool) ``` ### 安全與驗證 **身份驗證中介軟體** ```python from mcp.middleware import OAuth2Middleware auth_middleware = OAuth2Middleware( client_id="your-client-id", client_secret="your-secret", scopes=["read", "write"] ) server.add_middleware(auth_middleware) ``` **輸入驗證** ```typescript import { z } from 'zod'; import { validateInput } from '@mcp/validation'; const weatherSchema = z.object({ location: z.string().min(1), units: z.enum(['celsius', 'fahrenheit']).optional() }); mcp.addTool({ name: 'get_weather', inputSchema: weatherSchema, handler: validateInput(weatherSchema, async (input) => { // 已驗證的輸入 return getWeatherData(input.location, input.units); }) }); ``` ## 監控與分析工具 ### 效能監控 **Prometheus 整合** ```python from mcp.monitoring import PrometheusMetrics metrics = PrometheusMetrics() server.add_middleware(metrics.middleware) # 自動追蹤工具調用次數、延遲等指標 ``` **日誌結構化** ```python import structlog from mcp.logging import MCPLogger logger = MCPLogger( structlog.get_logger(), include_context=True, sanitize_sensitive_data=True ) ``` ### 分析儀表板 **Grafana 儀表板** - MCP 伺服器效能指標 - 工具使用統計 - 錯誤率監控 **自定義分析** ```python from mcp.analytics import UsageTracker tracker = UsageTracker( events=['tool_call', 'resource_access', 'prompt_invocation'] ) @tracker.track_usage async def my_tool(params): return await process_request(params) ``` ## 生態系統工具 ### 服務發現 **MCP 註冊中心客戶端** ```python from mcp.registry import MCPRegistry registry = MCPRegistry("https://registry.modelcontextprotocol.org") servers = await registry.discover_servers({ 'capabilities': ['weather', 'calendar'], 'quality_threshold': 0.8 }) ``` ### 開發環境 **Docker 開發環境** ```dockerfile FROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD ["npm", "run", "dev"] ``` **開發腳本** ```bash #!/bin/bash # 快速啟動 MCP 開發環境 docker-compose up -d postgres redis npm run start:server & npm run start:client & wait ``` 這個開發者工具包涵蓋了從基礎 SDK 到高級部署工具的完整生態系統,為開發者提供了構建 MCP 應用所需的所有工具和資源。