mcpField
C
codemcp

codemcp

github.com/ezyang编码 Agent1.6k44 周前更新

关于 codemcp

codemcp 是一个 MCP 客户端式的编码助手,让 Claude Desktop 可以直接编辑本地代码库、运行测试。它面向使用 Claude Pro 订阅的开发者,强调自动接受修改、Git 版本记录和与编辑器无关的工作方式。项目作者已表示该工具已过时,并计划将其设计思路移植到新一代编码 Agent 中。

主要功能

  1. 01直接在本地代码库中编辑文件并运行命令
  2. 02每次 LLM 修改自动生成 Git 提交
  3. 03通过 codemcp.toml 预先声明允许执行的命令
  4. 04format 命令在每次文件编辑后自动运行
  5. 05与 IDE 无关,可配合任意编辑器审查修改

适用场景

  1. 01在 Claude Desktop 中让 LLM 实现功能、修复 bug 或重构代码
  2. 02按需回滚 Agent 的某次修改
  3. 03在远程机器上通过 Tailscale 运行服务并供 Claude 调用

MCP 相关

codemcp 以 MCP 服务的形式运行,通过 SSE 端点(如 http://127.0.0.1:8000/sse)供 Claude Desktop 或浏览器扩展连接,向 Claude 暴露编码相关工具。

详细介绍

注意:Claude Code 可通过 Anthropic 的每月 20 美元订阅使用,因此我认为 codemcp 已完全过时。不过,其中有一些不错的设计理念(尤其是 Git 版本控制方案),我最终希望将它们移植到新一代 Agent 编码命令行工具中。

codemcp

安装 codemcp,让 Claude Desktop 成为你的结对编程助手。借助它,你可以直接让 Claude 为你电脑上的代码库实现功能、修复错误和重构;Claude 会直接编辑文件并运行测试。告别在 Claude 聊天窗口中来回复制代码!

Claude Desktop 搭配 codemcp 的截图

codemcp 提供了与其他 AI 编码软件(Claude Code、Cursor、Cline、Aider)类似的功能,但在设计空间中占据着独特的位置:

  1. 它面向 Claude Pro 用户,这是 Anthropic 每月 20 美元的订阅服务。我喜欢通过订阅方案为使用付费,因为这意味着 Agent 执行操作的 边际成本为零;再也不用担心为一组无法正常工作的更改白花五美元。

    请注意,如果你订阅了 Claude Max(每月 100 美元),也可以通过订阅定价使用 Claude Code。在这种情况下,codemcp 的价值主张就不那么明确了(而且在某些方面肯定不如 Claude Code),但如果你更喜欢它的一些界面设计,仍然可以搭配 Claude Max 使用 codemcp。(此外,它是开源的,如果你不喜欢它,还可以自行修改,不像 Claude Code!)

  2. 它的核心理念是 默认自动接受。我希望 Agent 在无需我监督的情况下尽可能多地完成工作,这样我就能在最后一次性审查所有内容。codemcp 与大多数编码 Agent 有两项关键区别:我们 禁止不受限制的 Shell,要求你在 codemcp.toml 中预先声明 Agent 可以使用的命令;并且我们会 对大模型所做的所有编辑进行 Git 版本控制,这样你就可以细粒度地回滚 Agent 的更改,也不必担心忘记提交更改。

  3. 它 与 IDE 无关:你让 Claude 进行更改,它完成更改后,你可以使用自己喜欢的 IDE 设置来审查更改并进一步编辑。我日常使用 vim 作为编辑器,因此需要 VSCode 或特定编辑器的编码环境对我来说并不合适。

重要:面向 master 用户——提升 Token 效率的重大更改

为了提升 codemcp 的 Token 效率,我正在 master 分支上将 codemcp 改回多工具模式(而不是在 InitProject 时把所有指令塞进聊天中的单工具模式)。这意味着你必须手动批准工具的使用。由于工具使用的批准在多个聊天中持续有效,我认为这是值得的权衡;但如果你实在不喜欢,可以向用于支持自动批准工具使用的 refined-claude 浏览器扩展提交错误报告。

安装

我推荐以下方式安装和使用 codemcp:

  1. 安装 uv 和 git(如果尚未安装)。

  2. 在浏览器中安装 claude-mcp。 这样可以直接在网站上连接 SSE MCP 服务, 意味着无需使用 Claude Desktop,还能轻松并行开启 多个聊天窗口。我们预计该扩展很快会被 Integrations 的推出所取代。不过 截至撰写本文时,Claude Pro 订阅用户还无法使用 Integrations。

  3. 使用 uvx --from git+https://github.com/ezyang/codemcp@prod codemcp serve 运行 codemcp。 如果需要监听非标准端口,可以添加 --port 1234。

    小技巧:如果你喜欢冒险,可以把 prod 改成 main。如果 想固定到某个特定版本,可以将其替换为 0.3.0 或类似版本号。

    小技巧:你还可以远程运行 codemcp!如果你使用 Tailscale 并且信任 Tailnet 中的所有设备, 可以通过传入 --host 100.101.102.103 安全地实现(请将该 IP 替换为你的节点的 Tailscale IP 地址。该 IP 通常位于 100.64.0.0/10 范围内。)警告: 任何能访问此 MCP 服务的人都可以在你的计算机上执行 任意代码,你极不可能希望绑定到 0.0.0.0。

  4. 为 claude-mcp 配置 URL:http://127.0.0.1:8000/sse(如有需要请替换端口。)

  5. 遗憾的是,网页 UI 显示锤子图标的表现并不稳定。不过,你可以通过以下方式验证 MCP 服务是否正常工作:在控制台中查找 "[MCP codemcp] SSE connection opened", 或者询问 Claude 它有哪些可用工具(它应该会说 codemcp 的工具可用。)

如果你更喜欢使用 Claude Desktop,或者有特殊需求,请查看 INSTALL.md, 了解各种非标准情况下的安装说明。

使用

首先,你必须在要处理的 Git 仓库检出目录中创建一个 codemcp.toml 文件。 如果希望 Agent 能够运行格式化工具或测试等操作, 请在 commands 部分添加执行这些操作的命令(注意:这些命令需要自行正确设置 所需的虚拟环境):

format = ["./run_format.sh"]
test = ["./run_test.sh"]

format 命令比较特殊:每次编辑文件后,它总会被运行。

接下来,在 Claude Desktop 中,我们建议创建一个 Project,并将以下内容放入 Project Instructions:

Initialize codemcp with $PROJECT_DIR

其中 $PROJECT_DIR 是你想要处理的项目的路径。

然后与 Claude 聊聊你想对项目做哪些修改。 codemcp 每次修改你的代码时,都会生成一个提交。

要查看使用该工具的一些示例对话记录,请参阅:

codemcp 会为每次聊天生成一个提交,并在处理你的功能时不断修订该提交。

理念

  • 当你被限流时,不妨利用这段时间做点别的事情(审查 Claude 的代码、审查别人的代码、制定计划、开几个会)

  • 这不是一个自主运行的 Agent。至少每次 聊天结束后,你都需要介入审查修改并提出下一项修改。虽然你 可以在单次聊天中要求完成一长串事项,但你很可能 会触及 Claude Desktop 的输出上限,仍然需要手动让 Agent “继续”。接受这一点,并利用这些中断来确保 Claude 做的是正确的事。

  • 当 Claude 跑偏时,损失的是你的时间而不是金钱。 请据此行事:如果时间是瓶颈,就仔细关注 Claude 的增量 输出。

配置

以下是 codemcp.toml 支持的所有配置项:

project_prompt = """
Before beginning work on this feature, write a short haiku.  Do this only once.
"""

[commands]
format = ["./run_format.sh"]
test = ["./run_test.sh"]

project_prompt 会在你于聊天中初始化项目时加载。

commands 部分用于为特定工具配置命令。这些命令的名称会告知大模型,由大模型决定何时运行它们。你可以在 project_prompt 中添加工具的使用说明;我们也支持更详细的语法,可以逐个工具给出具体说明:

[commands.test]
command = ["./run_test.sh"]
doc = "Accepts a pytest-style test selector as an argument to run a specific test."

故障排查

要使用 inspector 运行服务,请执行:

PYTHONPATH=. mcp dev codemcp/__main__.py

日志会写入 ~/.codemcp/codemcp.log。日志级别可以在全局配置文件 ~/.codemcprc 中设置:

[logger]
verbosity = "INFO"  # Can be DEBUG, INFO, WARNING, ERROR, or CRITICAL

日志不支持按项目单独配置,但这影响不大,因为同时在多个项目中并行使用 Claude Desktop 本身就比较困难。

贡献

请参阅 CONTRIBUTING.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。