用途:把内部 API、数据库等能力以 Model Context Protocol(MCP)标准暴露给各类智能体运行时(Claude、Codex、Gemini、OpenCode 及自定义运行时),用标准协议替代脆弱的插件系统,构建可复用、可分享的能力包。
主要能力:区分五类原语——Tools 用于有副作用的操作(写入、调用 API、执行代码),Resources 用于只读数据(文件、数据库行、搜索结果),Prompts 为带参数的可复用模板,Sampling 让服务器向客户端 LLM 请求补全,Roots 限定服务器可访问的文件系统边界。资料建议不要把每个读取都做成 Tool,应使用 Resources,Tool 仅保留给改变状态或产生成本的操作。
传输选择:stdio 适合本地单用户(Claude Desktop、IDE 插件);Streamable HTTP 是 2026 年默认,适合多用户、远程、无状态、Web 场景;SSE 属旧方案,应迁移到 Streamable HTTP。无状态 Streamable HTTP 是生产默认,可置于负载均衡之后且无需粘性会话。
使用方式:以 Python FastMCP 为例,导入 FastMCP 并创建实例,用 @mcp.tool() 装饰副作用函数、@mcp.resource() 装饰只读资源,最后通过 mcp.run(transport="streamable-http", port=8080) 启动。发布注册表需 Server Card(含 name、version、description、publisher、homepage、transports、capabilities、auth、license 等字段),并使用 mcp registry publish 与 mcp registry verify 命令,公共注册表为 registry.modelcontextprotocol.io。
设计规则:工具描述即 API 契约,需面向 LLM 写明动作、何时调用、返回内容与副作用;为每个参数严格定义 JSON Schema,不用 Any;状态变更工具应接受 idempotency_key 保证幂等;列表资源返回 cursor 而非 offset;错误返回结构化 {error: {code, message, retriable}},不暴露原始堆栈;认证在传输层用 OAuth2/OIDC,不放在工具参数中;返回 X-RateLimit-* 头以便智能体退避。
适用场景:需要将内部服务暴露为跨运行时通用集成、构建可分享能力包、以标准协议统一工具接入时使用。
限制:资料未提供收费、价格、平台支持范围以外的具体信息,实际支持能力以 MCP 2026 规范为准。