MCP 协议
MCP 协议
MCP 是 Model Context Protocol,中文可以理解为“模型上下文协议”。它的目标是让 AI 应用用统一方式连接外部工具、资源和提示词。
如果没有统一协议,每个 Agent 客户端都要为每个外部工具写一套专门适配。MCP 做的事情,就是把这类连接标准化。
MCP 解决什么问题
Agent 想使用外部能力,至少要解决四个问题:
- 工具有哪些?
- 每个工具怎么调用?
- 参数是什么格式?
- 返回结果怎么交给模型?
MCP 提供了一套统一接口,让不同工具可以作为 MCP Server 暴露给 Agent 应用。
三个核心角色
| 角色 | 说明 |
|---|---|
| Host | 使用模型的应用,例如编辑器、桌面 AI 工具、CLI Agent |
| Client | Host 内部和 MCP Server 通信的组件 |
| Server | 提供工具、资源或提示词的一端 |
Host 面向用户,Server 面向能力。Client 是中间的协议连接层。
MCP 提供的能力
Tools
Tools 是可以执行的动作。比如:
- 查询数据库
- 调用内部接口
- 读取某个系统资源
- 运行受控脚本
- 操作浏览器或模拟器
Resources
Resources 更偏向只读材料。例如:
- 项目文档
- API 说明
- 数据库 schema
- 日志片段
- 知识库条目
Prompts
Prompts 是可复用提示词模板。它们可以帮助用户或 Agent 快速生成某类任务输入。
MCP 和普通工具调用的关系
工具调用是一种能力形态;MCP 是一种接入工具的协议。
你可以有不基于 MCP 的工具调用,也可以通过 MCP 暴露工具。二者不是同一个层级。
关注“Agent 如何调用某个能力”。
例如读文件、执行命令、搜索内容。
关注“外部能力如何标准化接入 Agent”。
例如一个 MCP Server 暴露多个工具和资源。
MCP 和 Skill 的区别
MCP 很容易和 Skill 混淆,但它们解决的是不同问题。
| 概念 | 解决的问题 | 类比 |
|---|---|---|
| Tool | 能做什么具体动作 | 螺丝刀、钳子 |
| MCP | 工具如何接入系统 | 工具接口标准 |
| Skill | 某类任务该怎么做 | 操作手册 |
ljagiello/ctf-skills 是 Skill 项目,不是 MCP Server 项目。它的主要内容是 SKILL.md 和各方向补充说明,而不是提供一组可执行 API。
CTF 场景中的 MCP
在 CTF 中,MCP 可以用来连接很多外部能力:
- 本地文件分析服务
- 浏览器自动化
- 反编译器接口
- 私有知识库
- 靶场环境管理
- 日志或包分析工具
但 MCP 只负责连接能力,不保证 Agent 会正确使用这些能力。正确路线仍然要靠 Skill、上下文和人的审查。
注意
MCP 不等于安全。暴露给 Agent 的工具仍然需要权限控制、审计和沙箱。
为什么学习 ctf-skills 要懂 MCP
因为现代 Agent 生态里,Skill 和 MCP 经常一起出现。
一个完整工作流可能是:
- Agent 加载
ctf-webSkill。 - Skill 建议检查 HTTP 行为。
- Agent 通过某个 HTTP 工具或浏览器 MCP Server 请求页面。
- 工具结果返回上下文。
- Agent 根据 Skill 判断下一步。
Skill 决定“做什么”,MCP 让“能做什么”更容易接入。
小结
MCP 是 Agent 连接外部工具和资源的标准协议。它不替代 Skill,也不直接解决解题思路。理解 MCP 后,你能更清楚地区分:ctf-skills 提供的是路线和知识,不是工具执行层本身。