[claude code] 05 实战篇:MCP 服务器与技能扩展

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 能做什么

能力说明示例
ToolsClaude 可调用的函数搜索 GitHub Issue、查询数据库
ResourcesClaude 可读取的数据文件内容、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 服务器推荐

开发工具类

服务器安装命令功能
GitHubclaude mcp add github -y @modelcontextprotocol/server-githubIssue、PR、代码搜索
PostgreSQLclaude mcp add postgres -y @modelcontextprotocol/server-postgres数据库查询
SQLiteclaude mcp add sqlite -y @modelcontextprotocol/server-sqliteSQLite 操作
Filesystemclaude mcp add fs -y @modelcontextprotocol/server-filesystem /path安全文件访问

搜索与信息类

服务器安装命令功能
Brave Searchclaude mcp add-json brave-search '{...}'网页搜索
Puppeteerclaude mcp add puppeteer -y @modelcontextprotocol/server-puppeteer浏览器自动化
Memoryclaude mcp add memory -y @modelcontextprotocol/server-memory持久化知识图谱

设计与协作类

服务器安装命令功能
Figma通过 Figma 插件市场安装设计到代码工作流
Slackclaude mcp add slack -y @modelcontextprotocol/server-slackSlack 消息读写

基础设施类

服务器安装命令功能
Dockerclaude mcp add docker -y @modelcontextprotocol/server-docker容器管理
SSHclaude mcp add ssh -y mcp-ssh-managerSSH 连接管理

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_token

5.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 → 按审查技能分析 → 编辑后自动 lint

5.7 小结

概念关键要点
MCP连接外部服务的标准协议,stdio 或 HTTP 传输
添加 MCPclaude mcp add <名称> <命令>
Skills按需加载的能力包,SKILL.md 定义
斜杠命令.claude/commands/*.md自动注册
选择策略MCP 连外部,Hooks 做自动化,Skills 做工作流

上一篇:04 进阶篇:权限、Hooks 与自动化
下一篇:06 高级篇:记忆系统与工作流优化