wtp-mcp-rs
](https://crates.io/crates/wtp-mcp-rs)  ](https://crates.io/crates/wtp-mcp-rs)   
一种模型上下文协议(MCP)服务器 wtp (Worktree Plus),用Rust编写。它允许AI助手通过wtp CLI管理Git工作树。
对于:
- 想要的Rust用户
cargo install以及本地CLI。 - 希望使用npm的用户
npm install -g使用预构建的平台二进制文件。 - 希望安全、可脚本化的工作树自动化的Git用户。
适用于任何Git仓库。wtp二进制文件是必需的,并且必须在PATH上(或通过设置 --wtp-path /config)。
亮点
- 安全默认值:默认情况下,挂钩和分支删除是禁用的,必须明确启用。
- 丰富的资源:查询工作树列表、解析路径、分组视图和仓库概述。
安装
货物(板条箱.io)
cargo install wtp-mcp-rs家酿
brew install bnomei/wtp-mcp/wtp-mcp-rsGitHub发布
从GitHub发布页面下载预构建的存档,提取并放置 wtp-mcp-rs 在你的 PATH.
来源
git clone https://github.com/bnomei/wtp-mcp.git
cd wtp-mcp
cargo build --release快速开始
- 添加此MCP配置。常见MCP客户端示例(选择一个):
# Claude Code
claude mcp add --transport stdio --scope project wtp -- wtp-mcp-rs
# Codex CLI
codex mcp add wtp -- wtp-mcp-rs
# OpenCode (interactive)
opencode mcp add
# Amp (workspace)
amp mcp add --workspace wtp -- wtp-mcp-rs{
"mcpServers": {
"wtp": {
"command": "wtp-mcp-rs"
}
}
}- 从您的repo根(或pass)运行MCP客户端
--repo-root/--config如果你想钉一条不同的路径)。对于Codex CLI,MCP配置是全局的;使用codex --cd /path/to/repo如果你想在不更改目录的情况下设置工作根目录。 - 确保
wtp已安装并打开PATH(或设置--wtp-path/config)。 - 可选:运行
init-config一次生成.wtp.yml,然后编辑defaults.base_dir使用前使用挂钩add-worktree.
用法
MCP配置
将快速入门代码段添加到MCP客户端配置中。下面的示例包括所有支持的参数(删除不需要的参数):
{
"mcpServers": {
"wtp": {
"command": "wtp-mcp-rs",
"args": [
"--wtp-path",
"/usr/local/bin/wtp",
"--config",
"/path/to/config.toml"
]
}
}
}如果您的MCP客户端从存储库根(项目/工作区范围)启动服务器,则可以省略 --repo-root 因为 wtp-mcp-rs 默认为当前工作目录。
CLI选项
| 选项 | 描述 | 默认值 |
|---|---|---|
| `--repo-root | ||
| ` | 存储库根目录 | 当前工作目录 |
| `--wtp-path | ||
| ` | 覆盖wtp二进制文件的路径 | 自动检测 |
| `--config | ||
| ` | TOML配置文件的路径 | 无 |
工作树配置(.wtp.yml)
wtp 通过以下方式控制工作台布局和挂钩 .wtp.yml 在repo根目录中。
init-config跑wtp init生成.wtp.yml。默认模板通常设置为defaults.base_dir到../worktrees并且包括示例钩。- 编辑文件以选择您的工作树基目录(例如。,
.worktrees用于回购工作树)。 - 钩子是可选的创建/删除后操作(复制文件、符号链接dirs、运行安装命令)。他们是 默认情况下被阻止 在此服务器中,除非
security.allow_hooks = true. - 如果
.wtp.yml缺失,add-worktree创建一个最小配置defaults.base_dir = .worktrees而且没有钩子。
最小示例:
version: "1.0"
defaults:
base_dir: .worktrees合并工作树中的更改
典型流程:
- 每个工作树都是其自己目录中的分支签出。
- 在那台工作台上工作。
- 从任何工作树(通常是“主”工作树)合并到目标分支:
- git merge feature/x - 或者在GitHub上打开PR并合并。
示例配置(config.toml)
# Repository root (optional, defaults to cwd)
repo_root = "/path/to/repo"
[wtp]
# Path to wtp binary (optional, auto-detected from PATH)
path = "/usr/local/bin/wtp"
[security]
# Allow execution of wtp hooks (default: false)
allow_hooks = false
# Allow branch deletion with worktree removal (default: false)
allow_branch_delete = false安全默认值(为什么阻止破坏性操作)
默认情况下,潜在的破坏性操作被禁用:
- 钩子执行:默认情况下禁用。钩子可以执行任意代码。
- 分支删除:默认情况下禁用。这
--with-branch和--force-branch旗帜上remove-worktree需要明确启用。
要启用这些功能,请在配置文件中添加:
[security]
allow_hooks = true
allow_branch_delete = true工具
- 列出工作树 -列出存储库中的所有工作树
- 添加工作台 -为现有分支或新分支创建新工作树
- 拆下工作台 -移除工作台(可选配其分支)
- 合并工作台 -返回工作树分支的git merge命令
- 初始化配置 -在存储库中初始化wtp配置
- 获取工作台路径 -获取到工作台的绝对路径
- 贝壳钩 -获取shell钩子脚本(bash/zsh/fish)
- shell初始化 -获取shell初始化脚本(bash/zsh/fish)
资源
服务器公开以下MCP资源:
| URI | 描述 |
|---|---|
wtp://worktrees | 所有工作树列表(原始) |
wtp://worktrees/resolved | 具有解析绝对路径的工作树列表 |
wtp://worktree/{name} | 特定工作台的详细信息 |
wtp://overview | 包含工作树和安全设置的存储库概述 |
wtp://worktrees/by-branch-prefix | 按分支前缀(feature/、bugfix/等)分组的工作树 |
技能
skills/git-worktree-plus-with-mcp/SKILL.md:当用户想要通过wtp MCP服务器管理Git工作树(列表、创建、删除、解析路径、init.wtp.yml或准备合并命令)时,使用此技能,特别是在钩子和分支删除的安全默认情况下。
发展
运行测试
单元测试(无需wtp):
cargo test --lib集成测试(需要安装wtp;如果缺少,则跳过测试):
cargo test --test integration许可证
MIT许可证-请参阅 许可证 了解详情。
