3.3 Skill + MCP 协同实战
小林体验了纯 Skill 和纯 MCP 的局限,现在来试试两者结合——"SOP + 工具箱"。
协同方案
Skill 负责知识层(定义标准、流程、格式):
markdown
# SKILL.md: security-code-review
## Instructions
你是一个安全代码审查专家。审查代码时请按以下标准:
### 审查清单(必须逐项检查)
1. SQL 注入 — 检查所有数据库查询是否使用参数化
2. XSS — 检查所有用户输入是否转义
3. CSRF — 检查状态变更操作是否有 CSRF Token
4. 敏感信息 — 检查是否有硬编码密钥/密码
5. 认证授权 — 检查是否有未保护的 API 端点
### 审查流程
1. 先调用 get_pr_diff 获取代码变更
2. 调用 query_vulnerability_history 查询该文件的历史漏洞
3. 对照审查清单逐项检查
4. 按标准格式输出结果
5. 调用 post_review_comment 发布评论
### 输出格式
对每个发现的问题:
- 严重程度:🔴高危 / 🟡中危 / 🟢低危
- 位置:文件名:行号
- 描述:问题说明
- 建议:修复方案MCP 负责连接层(提供工具能力):
python
# GitHub Security Server(同 3.2)
@mcp.tool()
def get_pr_diff(pr_number: int) -> str: ...
@mcp.tool()
def post_review_comment(pr_number: int, comment: str) -> str: ...
@mcp.tool()
def list_open_prs() -> str: ...
# Database Server
@mcp.tool()
def query_vulnerability_history(file_path: str) -> str: ...协同流程
SkillSkill 激活,注入审查标准、流程、格式
MCPAI 调用 list_open_prs 获取待审查 PR 列表
MCPAI 调用 get_pr_diff 获取代码变更
MCPAI 调用 query_vulnerability_history 查询历史
SkillAI 按审查清单逐项检查(标准由 Skill 定义)
SkillAI 按标准格式输出结果(格式由 Skill 定义)
MCPAI 调用 post_review_comment 发布评论
结果标准化审查 + 自动化执行 ✅
三种方案对比
只用 Skill
✓ 审查标准一致
✓ 输出格式统一
✗ 手动获取代码
✗ 手动发布评论
✗ 无法查历史
✗ 无法持续运行
只用 MCP
✗ 审查标准波动
✗ 输出格式不统一
✓ 自动获取代码
✓ 自动发布评论
✓ 能查历史
✓ 可持续运行
Skill + MCP
✓ 审查标准一致
✓ 输出格式统一
✓ 自动获取代码
✓ 自动发布评论
✓ 能查历史
✓ 可持续运行
协同的关键
Skill 和 MCP 的协同不是简单叠加,而是相互增强:
| 没有对方 | 有了对方 |
|---|---|
| Skill 说"查询历史漏洞"——但 AI 做不到 | MCP 提供 query_vulnerability_history——AI 能做到 |
| MCP 返回历史漏洞数据——AI 不知道怎么用 | Skill 说"历史有相似漏洞的文件要重点检查"——AI 知道怎么用 |
| Skill 说"按严重程度排序"——AI 可能忘 | MCP 工具返回结构化数据——格式确定,AI 排序容易 |
核心:Skill 告诉 AI「应该做什么、怎么思考」,MCP 告诉 AI「能做什么、怎么操作」。两者结合才能发挥最大价值。
成本对比
Skill-onlyMCP-onlySkill+MCP
开发时间
维护成本
Token 成本
审查质量
本节核心要点
- Skill + MCP 协同:Skill 定义标准和流程,MCP 提供工具能力
- 协同流程:Skill 激活 → MCP 获取数据 → Skill 指导审查 → MCP 执行操作
- 1+1 > 2:Skill 让 MCP 的数据用得更好,MCP 让 Skill 的指令能落地
- 成本中等,但质量和自动化程度最高
练习:为你的项目设计一个 Skill + MCP 协同方案。列出 Skill 负责什么、MCP 负责什么。