341 查看 · 2026-07-07 更新
Claude Code MCP 服务器
这是一个 MCP(模型上下文协议)服务器,允许以一次性模式运行 Claude Code,并自动绕过权限。
你是否注意到 Cursor 在处理复杂的多步骤编辑或操作时有时会遇到困难?这个服务器通过其强大的统一 claude_code 工具,旨在使 Claude 成为你的编码任务中更直接和有能力的代理。
概述
此 MCP 服务器提供了一个工具,可以被 LLMs 用来与 Claude Code 交互。当与 Claude Desktop 或其他 MCP 客户端集成时,它允许 LLMs:
- 使用
--dangerously-skip-permissions绕过所有权限运行 Claude Code - 执行任何提示的 Claude Code 而不会受到权限中断
- 直接访问文件编辑功能
- 默认启用特定工具
优点
- Claude/Windsurf 经常在编辑文件时遇到困难。Claude Code 更好更快。
- 可以将多个命令排队而不是直接执行。这节省了上下文空间,因此更多重要信息可以保留更长时间,减少压缩次数。
- 文件操作、git 或其他操作不需要昂贵的模型。如果你注册了 Antropic Max,Claude Code 是非常经济的。你可以使用 Gemini 或 o3 的 Max 模式,并通过将任务卸载到更便宜的模型上来节省成本。
- Claude 具有更广泛的系统访问权限,可以做 Cursor/Windsurf 不能做(或认为不能做)的事情,所以每当它们卡住时,只需告诉它们“使用 Claude Code”,通常就能解决问题。
- 代理中的代理规则。
前提条件
- Node.js v20 或更高版本(使用 fnm 或 nvm 安装)
- 本地安装了 Claude CLI(运行并调用 /doctor),并且接受
-dangerously-skip-permissions。
配置
环境变量
-
CLAUDE_CLI_NAME:覆盖 Claude CLI 二进制文件名或提供绝对路径(默认值:claude)。这允许你使用自定义的 Claude CLI 二进制文件。这对于以下情况很有用:- 使用自定义 Claude CLI 封装
- 测试模拟二进制文件
- 并行运行多个 Claude CLI 版本
支持的格式:
- 简单名称:
CLAUDE_CLI_NAME=claude-custom或CLAUDE_CLI_NAME=claude-v2 - 绝对路径:
CLAUDE_CLI_NAME=/path/to/custom/claude
不允许相对路径(例如,
./claude或../claude),否则会抛出错误。当设置为简单名称时,服务器将在以下位置查找指定的二进制文件:
- 系统 PATH(而不是默认的
claude命令)
注意:本地用户安装路径(
~/.claude/local/claude)仍将被检查,但仅用于默认的claude二进制文件。 -
MCP_CLAUDE_DEBUG:启用调试日志(设置为true以输出详细信息)
安装与使用
推荐使用 npx 来安装和使用此服务器。
json "claude-code-mcp": { "command": "npx", "args": [ "-y", "@steipete/claude-code-mcp@latest" ] },
要使用自定义的 Claude CLI 二进制文件名,可以指定环境变量:
json "claude-code-mcp": { "command": "npx", "args": [ "-y", "@steipete/claude-code-mcp@latest" ], "env": { "CLAUDE_CLI_NAME": "claude-custom" } },
重要的一次性设置:接受权限
在 MCP 服务器能够成功使用 claude_code 工具之前,你必须先手动运行一次带有 --dangerously-skip-permissions 标志的 Claude CLI,登录并接受条款。
这是 Claude CLI 的一次性要求。
bash npm install -g @anthropic-ai/claude-code
bash claude --dangerously-skip-permissions按照提示接受。完成此步骤后,MCP 服务器将能够非交互地使用该标志。
macOS 可能在工具首次运行时请求各种文件夹权限,导致首次运行失败。后续运行将会正常工作。
连接到您的 MCP 客户端
在设置好服务器之后,您需要配置您的 MCP 客户端(如 Cursor 或其他使用 mcp.json 或 mcp_config.json 的客户端)。
MCP 配置文件
配置通常在一个 JSON 文件中完成。根据您的客户端不同,文件名和位置可能会有所不同。
Cursor
Cursor 使用 mcp.json。
- macOS:
~/.cursor/mcp.json - Windows:
%APPDATA%\Cursor\mcp.json - Linux:
~/.config/cursor/mcp.json
Windsurf
Windsurf 用户使用 mcp_config.json
- macOS:
~/.codeium/windsurf/mcp_config.json - Windows:
%APPDATA%\Codeium\windsurf\mcp_config.json - Linux:
~/.config/.codeium/windsurf/mcp_config.json
(注意:在某些混合设置中,如果也安装了 Cursor,这些客户端可能会回退到使用 Cursor 的 ~/.cursor/mcp.json 路径。如果使用 Codeium 扩展,请优先考虑 Codeium 特定的路径。)
如果该文件不存在,请创建它。添加或更新 claude_code 的配置:
提供的工具
此服务器提供一个主要工具:
claude_code
直接使用带有 --dangerously-skip-permissions 参数的 Claude Code CLI 执行提示。
参数:
prompt(字符串, 必需): 发送到 Claude Code 的提示。options(对象, 可选):tools(字符串数组, 可选): 启用特定的 Claude 工具(例如,Bash,Read,Write)。默认情况下启用常用工具。
示例 MCP 请求: json { "toolName": "claude_code:claude_code", "arguments": { "prompt": "将 main.py 中的函数 foo 重构为异步函数。" } }
示例
以下是一些服务器实际操作的视觉示例:
修复 ESLint 设置
这是一个使用 Claude Code MCP 工具交互式修复 ESLint 设置的示例,通过删除旧配置文件并创建新文件来实现:
列出文件示例
这是 Claude Code 工具列出目录中文件的示例:
主要使用场景
通过其统一的 claude_code 工具,此服务器解锁了一系列强大的功能,使您的 AI 直接访问 Claude Code CLI。以下是一些您可以实现的例子:
-
代码生成、分析与重构:
"生成一个解析 CSV 数据并输出 JSON 的 Python 脚本。""分析 my_script.py 潜在的错误并提出改进建议。"
-
文件系统操作(创建、读取、编辑、管理):
- 创建文件: `"您的工作文件夹是 /Users/steipete/my_project
在 app/settings 目录下创建一个名为 config.yml 的新文件,内容如下:
port: 8080
database: main_db" - **编辑文件:**"您的工作文件夹是 /Users/steipete/my_project
编辑 public/css/style.css 文件:在末尾添加一个新的 CSS 规则,使所有 h2 元素的颜色为 navy。" - **移动/复制/删除:**"您的工作文件夹是 /Users/steipete/my_project
将 drafts 文件夹中的 report.docx 文件移动到 final_reports 文件夹,并将其重命名为 Q1_Report_Final.docx。"`
-
版本控制(Git):
- `"您的工作文件夹是 /Users/steipete/my_project
-
将 src/main.java 文件暂存。
-
提交更改,消息为 feat: 实现用户认证。
-
将提交推送到 origin 的 develop 分支。"`### 运行终端命令
- `"你的工作目录是 /Users/steipete/my_project/frontend
运行命令 npm run build 。"`
"在我的默认浏览器中打开 URL https://developer.mozilla.org 。"
网络搜索与总结
"搜索网络上的 服务器端渲染的好处 并提供一个简洁的总结。"
复杂的多步骤工作流
- 自动化版本更新、更新变更日志并标记发布:`"你的工作目录是 /Users/steipete/my_project
按照以下步骤操作:1. 将 package.json 中的版本更新为 2.5.0。2. 在 CHANGELOG.md 中为版本 2.5.0 添加一个新的部分,标题为 ### Added ,并列出 新功能 X 。3. 暂存 package.json 和 CHANGELOG.md。4. 使用消息 release: version 2.5.0 提交更改。5. 推送提交。6. 创建并推送 git 标签 v2.5.0。"`
<img src="assets/multistep_example.png" alt="复杂多步骤操作示例" width="50%">
修复带有语法错误的文件
- `"你的工作目录是 /path/to/project
src/utils/parser.js 文件在最近的一次复杂编辑后出现了语法错误,导致其结构被破坏。请分析该文件,识别语法错误,并修正文件使其再次成为有效的 JavaScript,同时尽可能保留原始逻辑。"`
与 GitHub 交互(例如,创建拉取请求)
- `"你的工作目录是 /Users/steipete/my_project
在仓库 owner/repo 中从 feature-branch 分支向 main 分支创建一个 GitHub 拉取请求。标题:feat: 实现新的登录流程。正文:此 PR 为用户添加了一个新的改进版登录体验。"`
与 GitHub 交互(例如,检查 PR 的 CI 状态)
- `"你的工作目录是 /Users/steipete/my_project
检查 GitHub 仓库 owner/repo 中 Pull Request #42 的 CI 检查状态。报告它们是否已通过、失败或仍在运行。"`
修正 GitHub Actions 工作流
复杂的多步骤操作
此示例展示了 claude_code 如何处理更复杂的多步骤任务,如通过创建分支、更新多个文件(package.json、CHANGELOG.md)、提交更改和发起拉取请求来准备发布,所有这些都在一个连贯的操作中完成。
**重要提示:记得在涉及文件系统或 Git 操作的提示中提供当前工作目录 (CWD) 上下文(例如,`"你的工作目录是 /path/to/project
...你的命令..."`)。**
故障排除
- "找不到命令" (claude-code-mcp): 如果全局安装,请确保 npm 全局 bin 目录在系统的 PATH 中。如果使用
npx,请确保npx本身正常工作。 - "找不到命令" (claude 或 ~/.claude/local/claude): 确保 Claude CLI 正确安装。运行
claude/doctor或查阅其文档。 - 权限问题: 确保你已经执行了“重要的首次设置”步骤。
- 来自服务器的 JSON 错误: 如果
MCP_CLAUDE_DEBUG设置为true,错误消息或日志可能会干扰 MCP 的 JSON 解析。将其设置为false以恢复正常操作。 - ESM/导入错误: 确保你使用的是 Node.js v20 或更高版本。
对于开发者:本地设置与贡献
如果你想开发或为此项目做出贡献,或者从克隆的仓库运行它进行测试,请参阅我们的 本地安装与开发设置指南。
测试
该项目包含全面的测试套件:
bash
运行所有测试
npm test
仅运行单元测试
npm run test:unit
运行 e2e 测试(带模拟)
npm run test:e2e
本地运行 e2e 测试(需要 Claude CLI)
npm run test:e2e:local
开发时的监视模式
npm run test:watch
覆盖率报告
npm run test:coverage有关详细的测试文档,请参阅我们的E2E 测试指南。
通过环境变量进行配置
可以通过以下环境变量来自定义服务器的行为:
CLAUDE_CLI_PATH:Claude CLI 可执行文件的绝对路径。- 默认值:首先检查
~/.claude/local/claude,然后回退到claude(期望它在 PATH 中)。
- 默认值:首先检查
MCP_CLAUDE_DEBUG:设置为true以启用此 MCP 服务器的详细调试日志。默认值:false。
这些变量可以在您的 shell 环境中设置,也可以在 mcp.json 服务器配置文件的 env 块中设置(尽管为了简化,mcp.json 示例中的 env 块已被移除,但如果您需要的话,这仍然是为服务器进程设置它们的有效方式)。
贡献
欢迎贡献!请参考本地安装与开发环境设置指南以获取关于设置环境的详细信息。
将问题和拉取请求提交到GitHub 仓库。
许可证
MIT
来源
- 来源:github
- 链接:https://github.com/steipete/claude-code-mcp