Appearance
AI协议栈最佳实践
主题:MCP、Skills 与 AI 能力扩展协议
类别:软件项目(software)
版本:v1
日期:2026-01-25
深度:深度分析
概述
AI协议栈是连接大模型与外部世界的桥梁。本文档聚焦两大核心协议层:
- MCP (Model Context Protocol):AI与外部工具/数据源的标准化通信协议
- Skills System:可复用的专业能力封装机制
一、MCP (Model Context Protocol)
1.1 核心概念
MCP是由Anthropic开发的开放标准,被称为"AI的USB-C接口",实现了AI模型与外部系统的标准化连接。
| 特性 | 说明 |
|---|---|
| 标准化 | 统一的工具调用和数据访问协议 |
| 模块化 | 即插即用的Server架构 |
| 跨平台 | 支持Claude、ChatGPT、Gemini等多个模型 |
| 预计采用率 | 90%组织将在2025年底前采用 |
1.2 架构设计
核心组件
| 组件 | 角色 | 说明 |
|---|---|---|
| Host | 宿主应用 | Claude Desktop、IDE、自定义应用 |
| Client | 协议客户端 | 维护与Server的连接 |
| Server | 能力提供者 | 暴露特定工具/资源 |
| Protocol | 通信协议 | JSON-RPC 2.0 over stdio/SSE |
1.3 MCP Server 分类
| 类别 | 典型Server | 功能 |
|---|---|---|
| 文件系统 | filesystem | 文件读写、目录操作 |
| 版本控制 | git | Git操作、代码历史 |
| 数据库 | postgres, sqlite | 数据查询与操作 |
| 搜索 | brave-search, google | 网络搜索 |
| 浏览器 | puppeteer | 网页抓取、自动化 |
| 知识库 | notion, obsidian | 笔记和文档管理 |
| 开发工具 | docker, kubernetes | 容器和编排 |
| 通信 | slack, discord | 消息发送和接收 |
1.4 配置与使用
基础配置
json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
},
"web-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "${BRAVE_API_KEY}"
}
},
"database": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"POSTGRES_URL": "postgresql://user:pass@localhost/db"
}
}
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
配置位置
| 平台 | 配置路径 |
|---|---|
| Claude Desktop (macOS) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude Desktop (Windows) | %APPDATA%\Claude\claude_desktop_config.json |
| Claude Code | 项目根目录 .claude/mcp.json 或全局配置 |
1.5 MCP最佳实践
安全原则
| 原则 | 实施方法 |
|---|---|
| 最小权限 | 只授予完成任务所需的最小权限 |
| 沙箱隔离 | 使用容器化部署Server |
| TLS加密 | 启用安全通信 |
| 访问控制 | 实施RBAC角色权限 |
| 定期更新 | 及时应用安全补丁 |
性能优化
| 策略 | 说明 |
|---|---|
| 本地优先 | 优先使用本地MCP Server减少延迟 |
| 缓存机制 | 对频繁查询的数据启用缓存 |
| 按需加载 | 不要一次加载所有Server,按需启用 |
| 连接池 | 对数据库类Server使用连接池 |
开发规范
markdown
# MCP Server 开发检查清单
## 设计
- [ ] 工具命名清晰、语义化
- [ ] 工具描述详细、包含参数说明
- [ ] 单一职责原则(每个工具做一件事)
## 实现
- [ ] 输入参数验证
- [ ] 错误处理和友好提示
- [ ] 日志记录关键操作
## 测试
- [ ] 单元测试覆盖核心逻辑
- [ ] 集成测试验证端到端流程
- [ ] 边界条件测试
## 文档
- [ ] README包含安装和配置说明
- [ ] 提供使用示例
- [ ] 说明已知限制1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1.5 MCP Server 开发实战
本节演示如何开发一个自定义的 Weather MCP Server。
Python 开发环境
安装SDK:
bashpip install mcp-server-py1实现Server逻辑 (
weather_server.py):pythonfrom mcp.server import Server import httpx app = Server("weather-server") @app.tool() async def get_weather(city: str) -> str: """获取指定城市的天气信息""" async with httpx.AsyncClient() as client: # 示例API调用 resp = await client.get(f"https://api.weather.com/v1/{city}") data = resp.json() return f"{city}的天气: {data['condition']}, 温度: {data['temp']}°C" if __name__ == "__main__": # 使用stdio作为通信传输层 app.run(transport='stdio')1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17配置到 Client:
json{ "mcpServers": { "weather": { "command": "python", "args": ["/path/to/weather_server.py"] } } }1
2
3
4
5
6
7
8
Node.js 开发环境
安装SDK:
bashnpm install @modelcontextprotocol/sdk1实现Server逻辑 (
index.js):javascriptimport { Server } from "@modelcontextprotocol/sdk/server/index.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; const server = new Server({ name: "weather-server", version: "1.0.0", }, { capabilities: { tools: {}, }, }); server.setRequestHandler("call_tool", async (request) => { if (request.params.name === "get_weather") { const city = request.params.arguments.city; return { content: [{ type: "text", text: `Fetching weather for ${city}...` }], }; } throw new Error("Tool not found"); }); const transport = new StdioServerTransport(); await server.connect(transport);1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
二、Skills System
2.1 核心概念
Skills是可复用的专业能力封装,通过标准化的文件结构定义AI的专业知识和行为模式。它填补了通用大模型与特定业务流程之间的空白。
2.2 Skill结构规范与高级配置
一个成熟的Skill目录包含完整的生命周期管理:
.agent/skills/
└── code-review/
├── SKILL.md # 1. 核心定义 (Trigger, Flow)
├── config/
│ ├── settings.yaml # 2. 行为参数 (Parameters)
│ └── rules.md # 3. 审查规则知识库
├── templates/
│ └── report.md # 4. 输出模板 (Jinja2支持)
├── scripts/
│ └── verify.py # 5. 验证脚本 (Pre/Post hooks)
└── examples/
└── bad_code.py # 6. 少样本学习示例1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
2.3 SKILL.md 高级定义
markdown
---
name: code-review
description: 对代码进行安全、性能、可维护性审查
version: 2.0
author: ArchitectureTeam
---
# Code Review Skill
## 触发条件 (Refined Triggers)
- 用户明确要求:"审查这段代码"
- 检测到潜在风险代码模式 (如 `eval()`, `exec()`)
- Git Commit 前自动触发
## 执行流程 (Orchestration)
```mermaid
sequenceDiagram
participant U as User
participant A as Agent
participant S as Skill
participant M as MCP(Filesystem)
U->>A: REVIEW src/main.py
A->>S: Activate Skill
S->>S: Load config/rules.md
S->>M: Read src/main.py
M-->>S: File Content
S->>S: Analyze(Safety, Perf)
S-->>A: Structured Report
A-->>U: Final Output1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
硬性约束 (Guardrails)
- 必须检查 OWASP Top 10 安全漏洞
- 任何
TODO注释必须提取到报告末尾 - 禁止对第三方库代码(
node_modules/)进行深度审查
2.6 Skill开发最佳实践:配置驱动与模板化
1. 复杂配置 (settings.yaml)
yaml
review_depth:
quick:
checks: [syntax, style]
max_issues: 3
deep:
checks: [syntax, style, security, performance, architecture]
max_issues: unlimited
output_language: zh-CN
ignore_patterns: ["*.test.js", "dist/*"]1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
2. 动态模板 (report.md)
使用模板引擎(如Jinja2语法)实现动态输出:
markdown
# 代码审查报告
## 总体评分: {{ score }}/100
{% if critical_issues %}
### 🔴 严重问题
{% for issue in critical_issues %}
- **{{ issue.location }}**: {{ issue.description }}
{% endfor %}
{% endif %}
### 💡 改进建议
{{ suggestions }}1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
2.4 Skill设计原则
| 原则 | 说明 | 示例 |
|---|---|---|
| 单一职责 | 每个Skill专注一件事 | code-review专注代码审查 |
| 可组合 | Skill之间可以互相调用 | 最佳实践先调用第一性原理分析 |
| 配置驱动 | 行为通过配置文件控制 | 不同深度级别通过配置切换 |
| 输出标准化 | 使用模板统一输出格式 | 报告模板确保一致性 |
| 版本迭代 | 支持版本演进 | v1→v2→v3功能递增 |
2.5 常用Skill类型
| 类型 | 功能 | 示例 |
|---|---|---|
| 分析类 | 深度问题分析 | first-principles (第一性原理) |
| 方案类 | 制定解决方案 | best-practice (最佳实践) |
| 生成类 | 内容/代码生成 | api-docs-generator |
| 审查类 | 质量检查 | code-review |
| 转换类 | 格式/风格转换 | markdown-to-json |
2.6 Skill开发最佳实践
结构化提示编写
markdown
# 分析框架
## 第1步:问题识别
[描述如何识别核心问题]
## 第2步:深度分析
[描述分析方法和维度]
## 第3步:结论输出
[描述如何生成结论]
## 输出格式
```markdown
### 问题定义
[模板]
### 分析过程
[模板]
### 结论与建议
[模板]1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#### 配置分离
```yaml
# config/settings.yaml
defaults:
depth: standard
language: zh-CN
output_format: markdown
depth_levels:
quick:
description: "快速分析"
max_sections: 3
standard:
description: "标准分析"
max_sections: 6
deep:
description: "深度分析"
max_sections: unlimited1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
版本管理
yaml
# meta.yaml
name: best-practice
version: 2.1.0
changelog:
- version: 2.1.0
date: 2026-01-25
changes:
- 增加AI工具场景
- 优化输出模板
- version: 2.0.0
date: 2026-01-18
changes:
- 重构分析框架
- 新增深度级别控制1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
2.7 Skill与MCP集成
Skills可以调用MCP Server扩展能力:
集成示例:
markdown
# Research Skill
## 执行流程
1. 解析用户研究主题
2. 调用 `web-search` MCP Server 获取最新信息
3. 调用 `database` MCP Server 查询历史数据
4. 整合分析,生成研究报告1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
三、协议栈集成架构
3.1 完整架构图
3.2 集成最佳实践
| 层次 | 最佳实践 |
|---|---|
| Skills层 | 专注业务逻辑,数据获取委托给MCP |
| MCP层 | 标准化接口,隐藏底层复杂性 |
| 服务层 | 最小权限,安全优先 |
| 资源层 | 数据隔离,访问审计 |
3.3 常见集成模式
模式1:研究助手
用户问题 → Research Skill → web-search MCP → 互联网
→ database MCP → 历史数据
→ 综合分析 → 研究报告1
2
3
2
3
模式2:代码Agent
开发任务 → Code Skill → filesystem MCP → 代码文件
→ git MCP → 版本历史
→ bash MCP → 测试执行
→ 代码变更 → 提交PR1
2
3
4
2
3
4
模式3:自动化工作流
触发事件 → Workflow Skill → slack MCP → 通知
→ calendar MCP → 日程
→ notion MCP → 文档更新
→ 完成报告 → 归档1
2
3
4
2
3
4
四、实施路线图
4.1 阶段规划
4.2 检查清单
MCP部署检查
- [ ] 配置文件位置正确
- [ ] 必要的API Key已设置
- [ ] 权限范围已限制
- [ ] TLS加密已启用(生产环境)
- [ ] 日志记录已配置
Skills开发检查
- [ ] SKILL.md结构完整
- [ ] 触发条件明确
- [ ] 输出格式标准化
- [ ] 配置与逻辑分离
- [ ] 版本信息记录
版本记录
| 版本 | 日期 | 变更内容 |
|---|---|---|
| v1 | 2026-01-25 | 初始版本:MCP协议与Skills系统最佳实践 |
本方案将随着协议标准演进持续更新。