# 附錄 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 應用所需的所有工具和資源。