核心能力对比
协议层创新:
# MCP请求示例(JSON-RPC 2.0) { "jsonrpc": "2.0", "method": "ip_query", "params": {"ip": "202.96.128.86"}, "id": "req-001", "context": { # 会话上下文 "session_id": "user-123", "preferences": {"language": "zh"} } } # 响应示例 { "jsonrpc": "2.0", "result": "上海", "id": "req-001" }
关键突破:通过context
字段实现跨工具会话状态保持,解决复杂任务中的信息孤岛问题。
# 使用uv替代pip(速度提升10倍) curl -LsSf https://astral.sh/uv/install.sh | sh source ~/.bashrc # 创建虚拟环境 uv venv .mcp-env source .mcp-env/bin/activate # 安装核心库 uv pip install fastmcp mcp-client
验证安装:
mcp info # 输出服务元信息表示成功
诊断步骤:
检查端口占用:lsof -i :8000
验证环境变量:printenv | grep MCP
测试协议兼容性:
curl -X POST http://localhost:8000/tools/list \ -H "Content-Type: application/json" \ -d '{}'
根治方案:
# 清理缓存并重建环境 uv pip uninstall fastmcp uv clean uv pip install --no-cache fastmcp
推荐工作流:
MCP Hub:官方认证仓库
GitHub Topic:搜索mcp-tool
标签
Awesome-MCP:社区维护精品列表
筛选标准:
文档完整性:必须有OpenAPI规范描述
活跃度:最近90天有更新
测试覆盖率:>80%的代码覆盖率
方法(Method):工具调用的唯一标识(如ip_query
)
参数(Params):强类型输入(支持str/int/float等)
资源(Resource):跨工具共享的数据源
from fastmcp import FastMCP import ipinfo mcp = FastMCP("IPLookup") # 加载IP数据库(资源仅初始化一次) @mcp.resource("ipdb") def load_ip_database(): return ipinfo.getHandler().get_all() @mcp.tool def ip_query(ip: str) -> dict: """查询IP地理位置""" ipdb = mcp.access_resource("ipdb") return ipdb.get(ip, {"city": "未知", "country": ""}) if __name__ == "__main__": # 启动HTTP+STDIO双模服务 mcp.run(transport="both", http_port=8080)
测试工具:
mcp call --tool ip_query --params '{"ip":"8.8.8.8"}' # 输出:{"city":"Mountain View","country":"US"}
你是一个IP查询专家,请遵循以下规则: 1. 严格校验输入是否为有效IPv4地址 2. 调用`ip_query`工具获取基础数据 3. 若城市为空,使用备用API:https://ipapi.co/{ip}/json/ 4. 输出格式:"IP地址 {ip} 位于{城市},{国家}"
6.2 Claude执行跟踪
// 用户输入 {"text": "查询202.96.128.86的位置"} // Claude生成请求 { "method": "ip_query", "params": {"ip": "202.96.128.86"}, "context": {"session_id": "claude-123"} } // 服务响应 {"result": {"city":"上海","country":"中国"}} // Claude最终回复 "IP地址 202.96.128.86 位于上海,中国"
# mcp-starter/config.yaml services: ip_service: command: python ip_server.py transport: stdio description: IP地理位置查询服务
7.2 生产环境部署
# 构建Docker镜像 docker build -t mcp/ip-service . # 运行容器 docker run -d \ -p 8080:8080 \ -e MCP_LOG_LEVEL=INFO \ mcp/ip-service
// .vscode/settings.json { "mcp.servers": [ { "name": "IP Service", "transport": "http", "endpoint": "http://localhost:8080" } ] }
from fastmcp.cache import RedisCache mcp = FastMCP("IPService", cache=RedisCache()) @mcp.tool(cache_ttl=3600) # 结果缓存1小时 def ip_query(ip: str): ...
性能指标:
智能客服工单系统架构:
复合工具调用示例:
@mcp.tool def handle_ticket(user_id: int, question: str): # 步骤1:分类问题 category = classify_question(question) # 步骤2:路由到专业工具 if category == "TECH": return kb_mcp.search(question) elif category == "LOCATION": ip = get_user_ip(user_id) return ip_query(ip)
通过MCP协议,将传统需2天开发的客服系统缩短至4小时。
更多AI大模型应用开发学习视频内容和资料,尽在聚客AI学院。