Claude Code 扩展点:MCP —— 给 AI 接入外部工具的完整手脚

本机参考:全局 MCP server 2 个(obsidian / unity-mcp),项目级 MCP server 2 个(obsidian-hybrid-search / chrome-devtools),另有 codegraph MCP 常驻。配置结构照实,API key 与内网地址已脱敏。

1. MCP 是什么

MCP(Model Context Protocol)= 外部工具的标准接入协议。它让 CC 能调用任意外部能力------读数据库、查文档、控制浏览器、操作 Unity 编辑器......而不需要 Anthropic 内置。

类比:

  • CC 是大脑 ,MCP 是给大脑接的感官和手脚
  • 一个 MCP server = 一组工具的集合,暴露给 CC 调用

CC 通过 MCP 调用工具时,工具名形如 mcp__<server名>__<工具名>,比如 mcp__obsidian__search_notes。

2. 工作原理

2.1 架构

scss 复制代码
┌────────────┐   MCP 协议   ┌──────────────┐   HTTP/WS    ┌──────────┐
│ Claude Code│◄───────────►│ MCP server    │◄────────────►│ 外部能力  │
│  (客户端)   │  stdio/SSE  │  (工具集合)    │              │  (服务)   │
└────────────┘             └──────────────┘               └──────────┘

两种传输方式:

方式 说明 典型场景
stdio server 是本地进程,通过标准输入输出通信 本地 CLI 工具(uvx/npx 起的 server)
SSE / HTTP server 是远程 HTTP 服务 远程服务、局域网服务

本机用的都是 stdio 本地进程。

2.2 配置位置

位置 文件 生效范围
全局 ~/.claude/settings.json 的 mcpServers 所有项目
项目级 <项目>/.claude/settings.json 的 mcpServers 该项目
CLI 管理 claude mcp add / list / remove 等价于改配置文件

经验:全局只放"所有项目都要用"的(如 obsidian、unity-mcp);项目专用放项目级(如 chrome-devtools、obsidian-hybrid-search 只在 vault 目录用)。配两处是冗余的,一处即可。

3. 本机 MCP 配置案例

3.1 obsidian ------ 读写知识库

json 复制代码
"mcpServers": {
  "obsidian": {
    "command": "uvx",
    "args": ["mcp-obsidian"],
    "env": {
      "OBSIDIAN_API_KEY": "****"  // 脱敏
    }
  }
}
  • 依赖 :Obsidian 桌面端 + obsidian-local-rest-api 插件(在本机 127.0.0.1 起 HTTPS 服务)
  • 提供工具 :read_file / search / patch_file / list_files 等
  • 坑 :Obsidian 没开就报连接拒绝;uvx 来自 uv(brew install uv)
json 复制代码
"obsidian-hybrid-search": {
  "command": "npx",
  "args": ["-y", "-p", "obsidian-hybrid-search@0.13.24", "obsidian-hybrid-search-mcp"],
  "env": {
    "OBSIDIAN_VAULT_PATH": "/Users/xxx/.../knowledge_base",
    "OBSIDIAN_PREFIX": "kb_",
    "OBSIDIAN_IGNORE_PATTERNS": ".obsidian/**,90-Templates/**,*.canvas,*.base",
    "OPENAI_BASE_URL": "http://127.0.0.1:11434/v1",
    "OPENAI_EMBEDDING_MODEL": "bge-m3"
  }
}
  • 能力:BM25 关键词 + 向量语义 双路混合检索(RRF 融合),比纯关键词搜召回更准
  • 关键配置 :embedding 走本地 ollama (127.0.0.1:11434,模型 bge-m3)------因为 HuggingFace 被墙,自动下模型的方案必失败
  • 坑:中文查询不能走 fulltext,混合检索默认适合中文

3.3 chrome-devtools ------ 联网搜索

json 复制代码
"chrome-devtools": {
  "command": "npx",
  "args": ["-y", "chrome-devtools-mcp@latest", "--wsEndpoint", "ws://127.0.0.1:9222/devtools/browser/****"]
}
  • 能力 :控制本机 Chrome(导航/抓取页面/执行 JS),是 CC 的联网眼睛
  • 为什么需要 :本机 CC 走自定义后端,WebSearch 内置工具实际不可用 → 靠它控制真实浏览器搜索最新资料
  • 前置 :Chrome 需以 --remote-debugging-port=9222 启动

3.4 unity-mcp ------ 操控 Unity 编辑器

json 复制代码
"unity-mcp": {
  "command": "/Users/xxx/.../relay_mac_arm64",
  "args": ["--mcp", "--instance-id", "****"]
}
  • 能力:双层桥接让 AI 操控 Unity 编辑器------创建对象 / 写脚本 / 读 Console / 跑测试
  • 配合 :unity-mcp-skill
  • 案例:Unity 游戏自动化开发预研、AI 生成 Spine 动画预研

3.5 codegraph ------ 代码图谱

  • 能力:SQLite 代码知识图谱,符号/调用关系/文件树亚毫秒查询,CC 改代码前先查图谱给"外科手术式上下文"
  • 定位:确定性索引,零 token 成本、100% 本地,减少 grep/Read 调用

4. 如何配置一个新 MCP

4.1 找现成 server

  • 官方 marketplace(/mcp 菜单浏览)
  • GitHub 搜 xxx-mcp(如 mcp-obsidian、chrome-devtools-mcp)
  • 大部分本地 server 用 npx -y <包名> 或 uvx <包名> 直接起

4.2 配置模板

json 复制代码
"mcpServers": {
  "我的工具": {
    "command": "npx",
    "args": ["-y", "<包名>", "<参数>"],
    "env": {
      "KEY": "value"
    }
  }
}

4.3 验证

  1. 重启 CC 会话
  2. /mcp 查看 server 连接状态(绿色=OK,红色=失败)
  3. 直接调 mcp__<名字>__* 工具确认返回正常

4.4 写一个自定义 MCP server

如果现成的没有,可以自己写。最小结构(Python,用官方 SDK):

perl 复制代码
my-mcp/
├── server.py      # 实现工具
└── requirements.txt
python 复制代码
# server.py ------ 极简示例
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("my-mcp")

@mcp.tool()
def hello(name: str) -> str:
    """向调用者打招呼。"""
    return f"Hello, {name}!"

if __name__ == "__main__":
    mcp.run()

配置:command: "python",args: ["server.py"]。重启会话后即可 mcp__my-mcp__hello。

5. 最佳实践与坑

主题 建议
超时 远程 MCP 调用挂起会中止,MCP_TOOL_TIMEOUT 调大(本机 30000)
鉴权 API key 走 env 注入,别写死在命令参数里;key 别进 git
密钥脱敏 settings.json 可能被同步备份,key 一律打码处理
server 生命周期 本地 stdio server 随会话起停;Obsidian 依赖桌面进程,Obsidian 关了工具就挂
能用本地不联网 embedding / 索引类优先本地(ollama),避免外网依赖与数据外泄
工具命名 server 名要见名知意,工具多了才好找

6. 与其它扩展点的关系

  • MCP 是"手" ,skill 是"脑"------skill 正文里调用 MCP 工具,组合成工作流(kb-lookup 调 obsidian MCP 就是范例)
  • Hooks 可拦截 MCP 调用做安全审计
  • 配置在 settings.json,与权限/插件同一文件
相关推荐
阿明副业观察3 小时前
AI视频生成技术全解:生成方法、操作流程与选型指南
大数据·人工智能·ai作画·aigc·ai写作
threerocks3 小时前
重磅开源!sweety-handdraw-video:目前市面最强手绘视频管线,ChatGPT 完美运行
aigc·openai·ai编程
后端小肥肠3 小时前
做公众号漫画还在纯手搓?这套工具从选题到复刻任意热门漫画一键搞定
人工智能·aigc·agent
AIGCmagic社区6 小时前
多模态Jev专题:FastJEV剪掉45.83%候选层,0.8B平均分还留97.52%
人工智能·aigc·jev模型
文谦南宁AI普工9 小时前
写了个 PAP/PACT 授权面审计器:把 `poppy.json` 和 PACT 委托链的检查项跑成一条命令
aigc·ai编程
技灵AI10 小时前
AI 家具视频提示词教程:单张客厅参考图生成竖版带货短片,提示词逐层怎么写
人工智能·prompt·aigc·电商运营
xrlfreedom11 小时前
MCP 面试高频考点:本地 MCP Server 改造成远程服务,安全与 Tools 设计怎么落地
tools·mcp·提示注入防护·python mcp sdk
Evanfu021611 小时前
整部短剧文件怎么管理:目录、命名与版本规则
aigc·音视频·视频·机器翻译·自动翻译
星云低代码开发平台11 小时前
AI 连接器运行健康度:指标、异常恢复和联调清单
大数据·运维·网络·数据库·人工智能·mcp
Maxwin11 小时前
AI 生成的视频怎么局部修改?2026 年分章生成 Manim 代码的最新做法
python·aigc