mcp-wcgw

mcp-wcgw

紧密结合的 Shell 和文件编辑功能提供了强大的编码体验。 你可以使用不同的模式:架构师和代码编写者,分别用于计划和实施阶段。 你可以让它调用任何命令行指令,例如编译、类型检查、代码检查、GitHub CLI、Python。

开发者工具
操作系统自动化
版本控制
访问服务器

README

Claude 和 Chatgpt 的 Shell 和 Coding 代理

使聊天应用程序能够在您的本地机器上进行编码、构建和运行。

  • Claude - MCP 服务器,与 shell 和代码编辑工具紧密集成。
  • Chatgpt - 允许自定义 gpt 通过中继服务器与您的 shell 通信。(linux、mac、windows on wsl)

⚠️ 警告:在审查命令之前,不要允许 BashCommand 工具,这可能会导致数据丢失。

Tests Mypy strict Build codecov Reddit

演示

Workflow Demo

更新

  • [2025 年 3 月 24 日] 改进了 sonnet 3.7 的编写和编辑体验,CLAUDE.md 会自动加载。

  • [2025 年 2 月 16 日] 您现在可以连接到 AI 使用的工作终端。请参阅下面的“attach-to-terminal”部分。

  • [2025 年 1 月 15 日] 引入了模式:architect、code-writer 和功能强大的 wcgw 模式。

  • [2025 年 1 月 8 日] 上下文保存工具,用于将相关文件路径以及描述保存在单个文件中。可以用作任务检查点或知识转移。

  • [2024 年 12 月 29 日] 文件写入和编辑的语法检查现在稳定。使 initialize 工具调用有用;如果引用了任何 repo,则向 claude 发送智能 repo 结构。大型文件处理现在也得到了改进。

  • [2024 年 12 月 9 日] Vscode 扩展,用于在 Claude 应用程序上粘贴上下文

🚀 亮点

  • 创建、执行、迭代:要求 claude 不断运行编译器检查,直到所有错误都得到修复,或者要求它不断检查长时间运行的命令的状态,直到完成。
  • 大型文件编辑:支持大型文件的增量编辑,以避免令牌限制问题。根据所需更改的百分比,智能地选择何时进行小编辑或大型重写。
  • 编辑时的语法检查:如果其编辑有任何语法错误,则向 LLM 报告反馈,以便它可以重做。
  • 交互式命令处理:支持使用箭头键、中断和 ansi 转义序列的交互式命令。
  • 文件保护
    • AI 至少需要读取一次文件,然后才能编辑或重写它。这避免了意外覆盖。
    • 避免在读取非常大的文件时填满上下文。文件根据令牌长度进行分块。
    • 在初始化时,在选择重要文件后(基于 .gitignore 以及统计方法),返回提供的工作区的目录结构
    • 基于搜索替换的文件编辑尝试根据先前的搜索块找到正确的搜索块(如果它有多个匹配项)。否则失败(为了正确性)。
    • 文件编辑具有间距容错匹配,并在出现缩进不匹配等问题时发出警告。如果没有匹配项,则将最接近的匹配项返回给 AI 以修复其错误。
    • 使用类似 Aider 的搜索和替换,它比基于工具调用的搜索和替换具有更好的性能。
  • Shell 优化
    • 一次只允许运行一个命令,从而简化管理并避免恶意进程。在任何时间点都只有一个 shell 实例。
    • 在任何 shell 命令之后,始终返回当前工作目录,以防止 AI 迷失方向。
    • 命令轮询在快速超时后退出,以避免缓慢的反馈。但是,状态检查具有基于来自命令的新鲜输出流的等待容差。这两种方法结合在一起提供了良好的 shell 交互体验。
  • 将 repo 上下文保存在单个文件中:使用“ContextSave”工具的任务检查点将详细的上下文保存在单个文件中。任务稍后可以在新的聊天中通过询问“Resume task id”来恢复。保存的文件可用于进行其他类型的知识转移,例如从另一个 AI 寻求帮助。
  • 轻松在各种模式之间切换
    • 要求它在“architect”模式下运行以进行规划。受 adier 的 architect 模式的启发,首先与 Claude 合作制定计划。提高准确性并防止过早的文件编辑。
    • 要求它在“code-writer”模式下运行以进行代码编辑和项目构建。您可以提供带有通配符支持的特定路径,以防止其他文件被编辑。
    • 默认情况下,它在“wcgw”模式下运行,该模式没有限制并且具有完全授权。
    • 更多详细信息请参见 模式部分
  • 在多路复用终端中运行 运行 screen -x 以连接到 AI 在其上运行命令的终端。查看历史记录或中断进程或与 AI 使用的同一终端进行交互。

顶级用例示例

  • 使用 python 解决问题 X,创建并运行测试用例并修复任何问题。在临时目录中执行此操作
  • 在我的存储库中查找具有 X 行为的代码实例
  • 在我的主目录中 Git clone https://github.com/my/repo,然后了解项目,设置环境并构建
  • 创建一个 golang htmx tailwind webapp,然后打开浏览器查看它是否有效(与 puppeteer mcp 一起使用)
  • 编辑或更新大型文件
  • 在单独的分支中创建功能 Y,然后使用 github cli 创建到原始分支的 PR
  • 命令 X 在 Y 目录中失败,请运行并修复问题
  • 使用 X 虚拟环境运行 Y 命令
  • 使用 cli 工具,创建构建并测试一个 android 应用程序。最后使用模拟器运行它供我使用
  • 修复我在 X 路径的 repo 中的所有 mypy 问题。
  • 使用“screen”在后台运行我的服务器,然后在 bg 中运行另一个 api 服务器,最后运行前端构建。不断检查所有三个中的任何问题日志
  • 创建 repo 范围的 unittest 用例。不断迭代文件并创建用例。并在每次更新后不断运行测试。不要修改原始代码。

Claude 设置(使用 mcp)

Mac 和 linux

首先使用 homebrew 安装 uv brew install uv

(**重要提示:**使用 homebrew 安装 uv。否则,请确保 uv 存在于全局位置,例如 /usr/bin/)

然后使用以下 json 创建或更新 claude_desktop_config.json (~/Library/Application Support/Claude/claude_desktop_config.json)。

{
  "mcpServers": {
    "wcgw": {
      "command": "uv",
      "args": [
        "tool",
        "run",
        "--from",
        "wcgw@latest",
        "--python",
        "3.12",
        "wcgw_mcp"
      ]
    }
  }
}

然后重新启动 claude 应用程序。

如果设置中出现错误

  • 如果出现类似“uv ENOENT”的错误,请确保已安装 uv。然后在终端中运行“which uv”,并在配置中使用其输出代替“uv”。
  • 如果仍然存在问题,请检查 uv tool run --from wcgw@latest --python 3.12 wcgw_mcp 是否在您的终端中运行。它应该没有输出并且不应该退出。
  • 尝试删除 ~/.cache/uv 文件夹
  • 尝试使用此工具经过测试的 uv 版本 0.6.0
  • 使用 npx @modelcontextprotocol/inspector@0.1.7 uv tool run --from wcgw@latest --python 3.12 wcgw_mcp 调试 mcp 服务器

Windows on wsl

此 mcp 服务器仅在 windows 上的 wsl 上运行。

要设置它,请安装 uv

然后使用以下内容添加或更新 claude 配置文件 %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "wcgw": {
      "command": "wsl.exe",
      "args": [
        "uv",
        "tool",
        "run",
        "--from",
        "wcgw@latest",
        "--python",
        "3.12",
        "wcgw_mcp"
      ]
    }
  }
}

用法

等待几秒钟。如果一切顺利,您应该能够看到此图标。

mcp icon 在这里

mcp icon

然后要求 claude 执行 shell 命令、读取文件、编辑文件、运行您的代码等。

任务检查点或知识转移

  • 您可以通过使用“Attach from MCP”按钮附加“KnowledgeTransfer”提示来执行任务检查点或知识转移。
  • 在运行“KnowledgeTransfer”提示时,将调用“ContextSave”工具,将任务描述和所有文件内容一起保存在单个文件中。将生成任务的 id。
  • 您可以在新的聊天中说“Resume '<task id>'”,然后 AI 应该使用任务 id 调用“Initialize”并从那里加载上下文。
  • 或者您可以直接打开生成的文件并与另一个 AI 共享以获得帮助。

模式

有三种内置模式。您可以要求 Claude 在其中一种模式下运行,例如“Use 'architect' mode”

模式 描述 允许 拒绝 调用提示
Architect 旨在让您与 Claude 合作来调查和了解您的 repo。 只读命令 FileEdit 和 Write 工具 Run in mode='architect'
Code-writer 用于代码编写和开发 用于编辑或写入的指定路径 glob,指定命令 不匹配指定 glob 的路径的 FileEdit,不匹配指定 glob 的路径的 Write Run in code writer mode, only 'tests/**' allowed, only uv command allowed
**wcgw** 允许所有内容的默认模式 一切 No prompt, or "Run in wcgw mode"

注意:在 code-writer 模式下,要么允许所有命令,要么不允许任何命令。如果您提供允许的命令列表,则指示 Claude 仅运行这些命令,但不会进行实际检查。(WIP)

连接到工作终端进行调查

如果您已安装 screen 命令,wcgw 会自动在 screen 实例上运行。如果您已启动 wcgw mcp 服务器,则可以列出 screen 会话:

screen -ls

并记下 wcgw screen 名称,它将类似于 93358.wcgw.235521,其中最后一个数字采用时-分-秒格式。

然后您可以使用 screen -x 93358.wcgw.235521 连接到会话

您可以安全地中断任何正在运行的命令。

您可以与终端进行交互,但请注意,AI 可能会并行运行,并且可能会与您正在执行的操作发生冲突。建议您将交互保持在最低限度。

您不应使用 exit 或 Ctrl-d 退出会话,而应使用 ctrl+a+d 安全地分离,而不会破坏 screen 会话。

[可选] Vs code 扩展

https://marketplace.visualstudio.com/items?itemName=AmanRusia.wcgw

命令:

  • 选择一段文本并按 cmd+',然后输入说明。这会将应用程序切换到 Claude 并粘贴包含您的说明、文件路径、工作区目录和所选文本的文本。

Chatgpt 设置

在此处阅读:https://github.com/rusiaaman/wcgw/blob/main/openai.md

示例

example

通过 docker 使用 mcp 服务器

首先构建 docker 镜像 docker build -t wcgw https://github.com/rusiaaman/wcgw.git

然后您可以更新 /Users/username/Library/Application Support/Claude/claude_desktop_config.json 以具有

{
  "mcpServers": {
    "filesystem": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--mount",
        "type=bind,src=/Users/username/Desktop,dst=/workspace/Desktop",
        "wcgw",
      ]
    }
  }
}

[可选] 使用 openai API 密钥或 anthropic API 密钥的本地 shell 访问

Openai

添加 OPENAI_API_KEYOPENAI_ORG_ID 环境变量。

然后运行

uvx --from wcgw@latest wcgw_local --limit 0.1 # 成本限制 $0.1

您现在可以直接编写消息或按 Enter 键打开 vim 以进行多行消息和文本粘贴。

Anthropic

添加 ANTHROPIC_API_KEY 环境变量。

然后运行

uvx --from wcgw@latest wcgw_local --claude

您现在可以直接编写消息或按 Enter 键打开 vim 以进行多行消息和文本粘贴。

工具

服务器提供以下 MCP 工具:

Shell 操作:

  • Initialize: 重置 shell 并设置工作区环境
    • 参数:any_workspace_path (string), initial_files_to_read (string[]), mode_name ("wcgw"|"architect"|"code_writer"), task_id_to_resume (string)
  • BashCommand: 执行具有超时控制的 shell 命令
    • 参数:command (string), wait_for_seconds (int, optional)
    • 参数:send_text (string) 或 send_specials (["Enter"|"Key-up"|...]) 或 send_ascii (int[]), wait_for_seconds (int, optional)

文件操作:

  • ReadFiles: 从一个或多个文件中读取内容
    • 参数:file_paths (string[])
  • WriteIfEmpty: 创建新文件或写入空文件
    • 参数:file_path (string), file_content (string)
  • FileEdit: 使用搜索/替换块编辑现有文件
    • 参数:file_path (string), file_edit_using_search_replace_blocks (string)
  • ReadImage: 读取图像文件以进行显示/处理
    • 参数:file_path (string)

项目管理:

  • ContextSave: 保存项目上下文和文件,用于知识转移或保存任务检查点以便稍后恢复
    • 参数:id (string), project_root_path (string), description (string), relevant_file_globs (string[])

所有工具都支持绝对路径,并包含针对常见错误的内置保护。有关详细的协议信息,请参阅 MCP 规范

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
Gitingest-MCP

Gitingest-MCP

一个用于 gitingest 的 MCP 服务器。它允许像 Claude Desktop、Cursor、Cline 等 MCP 客户端快速提取关于 Github 仓库的信息,包括仓库摘要、项目目录结构、文件内容等。

精选
本地
Python
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python