Model Context Protocol(MCP)入门
🌐 Model Context Protocol(MCP)入门
目录
- 为什么需要 MCP?
- 整体流程一览(含 Mermaid 图)
- 协议四要素:Manifest ➜ Source ➜ Tool ➜ Context
- 端到端 Demo(20 行 Shell)
- 可用服务器目录(7 个直达链接)
- 安全性分析:风险清单 & 防护建议
- 自建 MCP 服务器速查
- FAQ
- 结语
1. 为什么需要 MCP?
场景 | 传统做法 | 难点 |
---|---|---|
LLM 取数据 | 为每个数据源写专用 API 适配 | 重复劳动、成本高 |
LLM 调工具 | 各写各的插件 / SDK | 生态碎片化 |
MCP 像 USB‑C:统一“数据 + 工具”接口,做到 一次接入,多处可用。
2. 整体流程一览
三句话概括流程
- 发现:读 Manifest,知道服务器有什么能力。
- 调用:要查资料则
/resolve
,要做动作则/invoke/<tool_id>
。- 回包:统一
Context
JSON,直接喂给 LLM。
3. 协议四要素(从总到分)
要素 | 作用 | 关键字段(示例) |
---|---|---|
Manifest | “说明书” | name , version , sources[] , tools[] , auth |
Source | 查资料 | /resolve 、params_schema |
Tool | 做动作 | /invoke/<tool_id> 、/status/<task_id> |
Context | 统一回包 | type , content , metadata |
记忆口诀:说明书‑>查‑>做‑>回(Manifest ➜ Source ➜ Tool ➜ Context)
4. 端到端 Demo(20 行)
# 1. 读 Manifest
curl https://demo.mcp.com/.well-known/manifest.json | jq .# 2. 查询 Source
curl -X POST https://demo.mcp.com/resolve \-H 'Content-Type: application/json' \-d '{ "query": "Rust 所有权", "top_k": 3 }' > ctx.json# 3. 把 ctx.json 投喂 LLM
# "请根据以下 Context 回答:\n{{file:ctx.json}}"
5. 可用服务器目录
分类 | 站点 | 链接 |
---|---|---|
GitHub 官方 | modelcontextprotocol/servers | https://github.com/modelcontextprotocol/servers |
GitHub 社区 | punkpeye/awesome‑mcp‑servers | https://github.com/punkpeye/awesome-mcp-servers |
目录站 | Glama | https://glama.ai/mcp/servers |
Smithery | https://smithery.ai | |
Cursor Directory | https://cursor.directory | |
中文镜像 | MCP.so | https://mcp.so/zh |
云市场 | 阿里云百炼 MCP 市场 | https://bailian.console.aliyun.com/?tab=mcp#/mcp-market |
6. 安全性分析
威胁面 | 典型风险 | 防护建议 |
---|---|---|
身份与授权 | 恶意客户端调用高危 Tool | Manifest 声明 auth ;OAuth 2.0 + RBAC;最小权限 |
数据传输 | 中间人窃听 / 篡改 Context | 强制 HTTPS;可选签名校验 |
数据完整性 | Source 返回伪造内容 | 在 metadata 加签名 / 哈希;客户端可交叉验证 |
供应链 | Manifest 被恶意替换 | 使用 .well-known 固定路径;CDN HSTS;发布 PGP 签名 |
滥用 / DDoS | 过量调用导致宕机 | 配额、速率限制、WAF |
敏感数据暴露 | Context 泄露隐私 | 服务端脱敏;客户端设置“仅摘要”模式 |
长期凭据泄漏 | API Key 被硬编码 | 支持短时 Token;Env Var + 轮换 |
客观结论:
MCP 本身不限定安全等级,安全好坏取决于服务器实现与运维策略。
只要遵守 HTTPS + 认证 + RBAC + 速率限制 等通用 Web 安全实践,MCP 可以达到与主流 REST API 相当的安全水平。对于高敏场景,建议再加 端到端加密 与 请求签名。
7. 自建 MCP 服务器速查
语言 | SDK | 起步命令 |
---|---|---|
TypeScript | @mcp/sdk | npx mcp init my-server |
Python | mcp-sdk-py | pip install mcp-sdk-py |
Kotlin | mcp-kotlin | mcp-kotlin create my-server |
manifest.json
➜ 2. 实现/resolve
、/invoke
➜ 3. 部署 ➜ 4. 提交到目录站。
8. FAQ(高频问答)
问题 | 摘要回答 |
---|---|
MCP 和 REST/GraphQL 区别? | MCP 抽象“上下文 & 动作”给 LLM 用,REST 关注业务资源。 |
需要额外网关吗? | 不是必须,但生产推荐放在 API Gateway/WAF 之后。 |
可以收费吗? | 协议开源,具体服务器可按请求、订阅或增值服务收费。 |
9. 结语
MCP = LLM 生态的 USB‑C:统一接口、随插即用。
- 开发者 写一次 Server,全球 Agent 可调用。
- 使用者 逛目录站,像装 VS Code 扩展一样挑选数据源 & 工具。
掌握 MCP,就是抢占 AI 标准化浪潮的“船票”。现在就试试上面的 Demo,或把你的服务封装成一个 Source / Tool,让更多 LLM 为你所用!