[claude code] 05 实战篇:MCP 服务器与技能扩展
📅 2026/7/31 16:56:54
👁️ 阅读次数
📝 编程学习
05 实战篇:MCP 服务器与技能扩展
通过 MCP 连接外部世界,用 Skills 扩展 Claude 的能力边界。
5.1 MCP 协议概念
MCP(Model Context Protocol)是 Anthropic 的开源协议,标准化 AI 模型与外部数据源的交互方式。
核心概念
Claude Code ←→ MCP Server ←→ 外部服务 (客户端) (中间层) (数据源)- MCP Server:一个独立进程,提供工具(Tools)和资源(Resources)
- 传输方式:stdio(本地进程通信)或 HTTP(网络通信)
- 协议:JSON-RPC 2.0
MCP 能做什么
| 能力 | 说明 | 示例 |
|---|---|---|
| Tools | Claude 可调用的函数 | 搜索 GitHub Issue、查询数据库 |
| Resources | Claude 可读取的数据 | 文件内容、API 响应 |
| Prompts | 预定义的提示模板 | 代码审查模板 |
5.2 添加与管理 MCP 服务器
添加 stdio 服务器(本地进程)
# 基本格式claude mcpadd<名称><命令>[参数...]# 示例:添加 GitHub MCPclaude mcpaddgithub-y@modelcontextprotocol/server-github# 示例:添加带环境变量的服务器claude mcp add-json brave-search'{ "command": "npx", "args": ["-y", "brave-search-mcp"], "env": { "BRAVE_API_KEY": "your-api-key" } }'添加 HTTP 服务器(远程服务)
# 基本 HTTP 服务器claude mcpadd--transporthttp my-server https://api.example.com/mcp# 带认证头的 HTTP 服务器claude mcpadd--transporthttp\--header"Authorization: Bearer your-token"\my-server https://api.example.com/mcp指定作用范围
# 全局(所有项目可用)claude mcpadd--scopeuser github-y@modelcontextprotocol/server-github# 仅当前项目claude mcpadd--scopeproject my-db-y@modelcontextprotocol/server-postgres管理命令
# 列出所有已配置的服务器claude mcp list# 查看服务器详情claude mcp get github# 移除服务器claude mcp remove github# 在对话中检查服务器状态/mcp配置文件
全局配置~/.claude.json:
{"mcpServers":{"github":{"command":"npx","args":["-y","@modelcontextprotocol/server-github"],"env":{"GITHUB_TOKEN":"ghp_xxxxx"}}}}项目配置.mcp.json(项目根目录):
{"mcpServers":{"postgres":{"command":"npx","args":["-y","@modelcontextprotocol/server-postgres"],"env":{"POSTGRES_URL":"postgresql://localhost:5432/mydb"}}}}最佳实践:
- 全局通用的服务器用
--scope user(如 GitHub、搜索)- 项目特定的服务器用
--scope project(如数据库、内部 API)- 敏感信息(API Key)放在
env中,不要硬编码在命令行- 定期用
/mcp检查服务器状态,移除不用的服务器
5.3 常用 MCP 服务器推荐
开发工具类
| 服务器 | 安装命令 | 功能 |
|---|---|---|
| GitHub | claude mcp add github -y @modelcontextprotocol/server-github | Issue、PR、代码搜索 |
| PostgreSQL | claude mcp add postgres -y @modelcontextprotocol/server-postgres | 数据库查询 |
| SQLite | claude mcp add sqlite -y @modelcontextprotocol/server-sqlite | SQLite 操作 |
| Filesystem | claude mcp add fs -y @modelcontextprotocol/server-filesystem /path | 安全文件访问 |
搜索与信息类
| 服务器 | 安装命令 | 功能 |
|---|---|---|
| Brave Search | claude mcp add-json brave-search '{...}' | 网页搜索 |
| Puppeteer | claude mcp add puppeteer -y @modelcontextprotocol/server-puppeteer | 浏览器自动化 |
| Memory | claude mcp add memory -y @modelcontextprotocol/server-memory | 持久化知识图谱 |
设计与协作类
| 服务器 | 安装命令 | 功能 |
|---|---|---|
| Figma | 通过 Figma 插件市场安装 | 设计到代码工作流 |
| Slack | claude mcp add slack -y @modelcontextprotocol/server-slack | Slack 消息读写 |
基础设施类
| 服务器 | 安装命令 | 功能 |
|---|---|---|
| Docker | claude mcp add docker -y @modelcontextprotocol/server-docker | 容器管理 |
| SSH | claude mcp add ssh -y mcp-ssh-manager | SSH 连接管理 |
5.4 Skills 技能体系
Skills 是 Claude Code 的可扩展能力包,按需加载,节省 token。
技能类型
| 类型 | 位置 | 作用范围 | 是否共享 |
|---|---|---|---|
| 个人技能 | ~/.claude/skills/ | 所有项目 | 否 |
| 项目技能 | .claude/skills/ | 当前项目 | 是(提交 Git) |
| 插件技能 | 随插件安装 | 插件范围 | 是 |
技能目录结构
my-skill/ ├── SKILL.md # 必需:指令和元数据 ├── scripts/ # 可选:可执行脚本 ├── references/ # 可选:参考文档 └── assets/ # 可选:模板、资源SKILL.md 格式
--- name: code-review description: 代码审查技能,检查安全、性能和可维护性 triggers: - "review code" - "审查代码" - "code review" --- # 代码审查技能 ## 审查维度 1. **安全性**:SQL 注入、XSS、敏感信息泄露 2. **性能**:N+1 查询、内存泄漏、不必要的循环 3. **可维护性**:函数长度、命名规范、注释质量 4. **错误处理**:异常捕获、边界条件、资源释放 ## 审查流程 1. 读取目标文件 2. 按维度逐项检查 3. 标注严重程度(Critical / Warning / Suggestion) 4. 给出修复建议 ## 输出格式 ### [Critical] 问题标题 - 位置:文件:行号 - 描述:问题说明 - 建议:修复方案内置技能一览
| 技能 | 调用方式 | 功能 |
|---|---|---|
/init | /init | 生成项目 CLAUDE.md |
/review | /review | 审查 Pull Request |
/security-review | /security-review | 安全审查 |
/simplify | /simplify | 优化代码质量 |
/commit | /commit | 智能提交 |
/loop | /loop 5m /check-deploy | 定时循环执行 |
/insights | /insights | 使用分析报告 |
5.5 自定义斜杠命令
在.claude/commands/目录下创建.md文件,自动变成斜杠命令。
创建自定义命令
.claude/commands/review.md:
审查当前分支的所有变更,关注以下维度: 1. **安全性**:是否有敏感信息泄露、注入风险 2. **性能**:是否有 N+1 查询、不必要的计算 3. **可维护性**:函数是否过长、命名是否清晰 4. **测试覆盖**:变更是否有对应测试 输出格式: - 每个问题标注严重程度 [Critical/Warning/Suggestion] - 给出具体的修复建议 - 最后给出整体评分 (A/B/C/D).claude/commands/test-changed.md:
检测当前分支相对于 main 分支的变更文件, 为每个变更的源文件找到对应的测试文件, 运行所有相关测试,报告结果。 如果没有测试,建议应该添加哪些测试。命令命名规则
| 文件路径 | 命令名 |
|---|---|
.claude/commands/review.md | /project:review |
.claude/commands/test-changed.md | /project:test-changed |
~/.claude/commands/daily.md | /user:daily |
- 项目命令前缀:
/project: - 个人命令前缀:
/user:
带参数的命令
在命令文件中使用$ARGUMENTS占位符:
.claude/commands/explain.md:
详细解释以下代码的工作原理:$ARGUMENTS 要求: 1. 逐行解释关键逻辑 2. 画出执行流程图(用文字描述) 3. 指出潜在的边界情况 4. 给出优化建议使用方式:
> /project:explain @src/auth.py:validate_token5.6 MCP vs Skills vs Hooks 选择指南
| 需求 | 选择 | 原因 |
|---|---|---|
| 连接外部服务(GitHub、数据库) | MCP | 需要外部 API 交互 |
| 代码质量自动化(格式化、lint) | Hooks | 需要在特定时机自动触发 |
| 重复性工作流(审查、测试) | Skills | 按需加载,节省 token |
| 安全防护(阻止危险操作) | Hooks + 权限 | PreToolUse 钩子 + deny 规则 |
| 自定义提示模板 | 斜杠命令 | 简单、可参数化 |
| 持久化知识存储 | MCP Memory | 跨会话知识保留 |
组合使用示例
MCP(GitHub) + Skill(/review) + Hook(ESLint) → Claude 自动获取 PR → 按审查技能分析 → 编辑后自动 lint5.7 小结
| 概念 | 关键要点 |
|---|---|
| MCP | 连接外部服务的标准协议,stdio 或 HTTP 传输 |
| 添加 MCP | claude mcp add <名称> <命令> |
| Skills | 按需加载的能力包,SKILL.md 定义 |
| 斜杠命令 | .claude/commands/*.md自动注册 |
| 选择策略 | MCP 连外部,Hooks 做自动化,Skills 做工作流 |
上一篇:04 进阶篇:权限、Hooks 与自动化
下一篇:06 高级篇:记忆系统与工作流优化
编程学习
技术分享
实战经验