MCP
MCP 架构
理解客户端、服务端、工具、资源、提示词、权限和结果如何拼起来。
基本模型
MCP 把 agent 运行时和它要使用的系统拆开。客户端负责协议交互,服务端负责和数据库、API、文件系统、SaaS 或内部流程对接。
用户请求 ↓ AI 客户端 / agent 运行时 ↓ 发现 + 调用 MCP 服务端 ↓ 受控访问 工具、数据源、API、工作流或本地系统
能力类型
工具
带结构化输入的可调用动作,例如搜索、创建工单、查询数据库、校验文件。
资源
可读取上下文,例如文档、记录、schema、配置或项目元数据。
提示词
用于指导常见交互或工作流的可复用模板。
职责边界
| 层级 | 负责什么 | 不该负责什么 |
|---|---|---|
| 客户端 | 发现、选择、模型上下文、权限交互 | 把业务逻辑藏在外部系统里 |
| 服务端 | 集成逻辑、验证、执行、错误、审计日志 | 无边界的模型推理或无关的任务流程 |
| Skill | 任务步骤和可复用经验 | 直接负责协议传输或服务端实现 |
具体请求流
下面这个文档搜索场景按步骤拆开了。你能看清每层知道什么,也能看清每层不该瞎猜什么。
1. 用户提问:
“哪个页面解释了 Skill 的结构?”
2. 客户端准备可用能力:
search_docs(query, limit)
3. 模型选择能力:
query = "Skill structure"
limit = 3
4. 服务端验证输入:
query 必须是非空字符串
limit 必须在 1 到 10 之间
5. 服务端执行搜索并返回:
results: [{ title, url, snippet }]
6. 客户端把结果交回模型。
7. 模型给出链接和简短解释。边界测试 客户端不应该知道搜索索引是怎么做的。服务端不应该替模型决定整堂课怎么讲。Skill 则可以告诉模型如何组织答案。
安全边界
MCP 不会自动让权限安全,但它给你一个可以明确规定和执行权限的位置。
最小权限暴露窄能力,不要直接把整套系统权限扔出去。
输入校验在服务端边界拦住格式错误或危险输入。
人工确认对破坏性、昂贵或对外可见的动作做确认。
可审计性记录调用、输入、输出、操作者身份和失败状态。