🌐 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>。- 回包:统一
ContextJSON,直接喂给 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 为你所用!
1385

被折叠的 条评论
为什么被折叠?



