[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 mcp add <名称> <命令> [参数...]

# 示例:添加 GitHub MCP
claude mcp add github -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 mcp add --transport http my-server https://api.example.com/mcp

# 带认证头的 HTTP 服务器
claude mcp add --transport http \
  --header "Authorization: Bearer your-token" \
  my-server https://api.example.com/mcp

指定作用范围

# 全局(所有项目可用)
claude mcp add --scope user github -y @modelcontextprotocol/server-github

# 仅当前项目
claude mcp add --scope project 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 高级篇:记忆系统与工作流优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值