WTP - Worktree Plus
Permite que los agentes gestionen worktrees de Git a través de la CLI de wtp.
Documentación
wtp-mcp-rs
Un servidor de Model Context Protocol (MCP) para wtp (Worktree Plus), escrito en Rust. Permite a los asistentes de IA gestionar worktrees de Git mediante la CLI de wtp.
Para:
- Usuarios de Rust que quieran
cargo instally una CLI nativa. - Usuarios de npm que quieran
npm install -gcon binarios de plataforma precompilados. - Usuarios de Git que quieran automatización de worktrees segura y scriptable.
Funciona en cualquier repositorio Git. El binario wtp es necesario y debe estar en PATH (o configurarse mediante --wtp-path / config).
Características destacadas
- Valores seguros por defecto: Los hooks y la eliminación de ramas están deshabilitados por defecto y deben habilitarse explícitamente.
- Recursos enriquecidos: Consulta listas de worktrees, rutas resueltas, vistas agrupadas y resumen del repositorio.
Instalación
Cargo (crates.io)
cargo install wtp-mcp-rs
Homebrew
brew install bnomei/wtp-mcp/wtp-mcp-rs
GitHub Releases
Descarga un archivo precompilado desde la página de GitHub Releases, extráelo y coloca wtp-mcp-rs en tu PATH.
Desde el código fuente
git clone https://github.com/bnomei/wtp-mcp.git
cd wtp-mcp
cargo build --release
Inicio rápido
- Añade esta configuración de MCP. Ejemplos para clientes MCP comunes (elige uno):
# 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"
}
}
}
- Ejecuta el cliente MCP desde la raíz de tu repositorio (o pasa
--repo-root/--configsi quieres fijar una ruta diferente). Para Codex CLI, la configuración de MCP es global; usacodex --cd /path/to/reposi quieres establecer la raíz de trabajo sin cambiar de directorio. - Asegúrate de que
wtpesté instalado y enPATH(o configura--wtp-path/ config). - Opcional: ejecuta
init-configuna vez para generar.wtp.yml, luego editadefaults.base_diry los hooks antes de usaradd-worktree.
Uso
Configuración de MCP
Añade el fragmento de Inicio rápido a la configuración de tu cliente MCP. El ejemplo siguiente incluye todos los argumentos soportados (elimina los que no necesites):
{
"mcpServers": {
"wtp": {
"command": "wtp-mcp-rs",
"args": [
"--wtp-path",
"/usr/local/bin/wtp",
"--config",
"/path/to/config.toml"
]
}
}
}
Si tu cliente MCP lanza servidores desde la raíz del repositorio (ámbito de proyecto/espacio de trabajo), puedes omitir --repo-root porque wtp-mcp-rs usa por defecto el directorio de trabajo actual.
Opciones de CLI
| Opción | Descripción | Por defecto |
|---|---|---|
--repo-root <path> | Directorio raíz del repositorio | Directorio de trabajo actual |
--wtp-path <path> | Ruta alternativa al binario wtp | Detección automática |
--config <path> | Ruta al archivo de configuración TOML | Ninguno |
Configuración de Worktree (.wtp.yml)
wtp controla el diseño de worktrees y los hooks mediante .wtp.yml en la raíz del repositorio.
init-configejecutawtp initpara generar.wtp.yml. La plantilla por defecto suele establecerdefaults.base_dira../worktreese incluye hooks de ejemplo.- Edita el archivo para elegir tu directorio base de worktrees (por ejemplo,
.worktreespara worktrees dentro del repositorio). - Los hooks son acciones opcionales posteriores a la creación/eliminación (copiar archivos, enlazar directorios simbólicamente, ejecutar comandos de configuración). Están bloqueados por defecto en este servidor a menos que
security.allow_hooks = true. - Si
.wtp.ymlfalta,add-worktreecrea una configuración mínima condefaults.base_dir = .worktreesy sin hooks.
Ejemplo mínimo:
version: "1.0"
defaults:
base_dir: .worktrees
Fusionar cambios desde worktrees
Flujo típico:
- Cada worktree es un checkout de una rama en su propio directorio.
- Haz commit en ese worktree.
- Fusiona en tu rama objetivo desde cualquier worktree (normalmente el "principal"):
git merge feature/x- o abre un PR y fusiona en GitHub.
Configuración de ejemplo (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
Valores seguros por defecto (por qué las acciones destructivas están bloqueadas)
Por defecto, las operaciones potencialmente destructivas están deshabilitadas:
- Ejecución de hooks: Deshabilitada por defecto. Los hooks pueden ejecutar código arbitrario.
- Eliminación de ramas: Deshabilitada por defecto. Las banderas
--with-branchy--force-branchenremove-worktreerequieren habilitación explícita.
Para habilitar estas características, añade a tu archivo de configuración:
[security]
allow_hooks = true
allow_branch_delete = true
Herramientas
- list-worktrees - Lista todos los worktrees del repositorio
- add-worktree - Crea un nuevo worktree para una rama existente o nueva
- remove-worktree - Elimina un worktree (opcionalmente con su rama)
- merge-worktree - Devuelve un comando git merge para una rama de worktree
- init-config - Inicializa la configuración de wtp en el repositorio
- get-worktree-path - Obtiene la ruta absoluta a un worktree
- shell-hook - Obtiene el script de hook de shell (bash/zsh/fish)
- shell-init - Obtiene el script de inicialización de shell (bash/zsh/fish)
Recursos
El servidor expone los siguientes recursos MCP:
| URI | Descripción |
|---|---|
wtp://worktrees | Lista de todos los worktrees (cruda) |
wtp://worktrees/resolved | Lista de worktrees con rutas absolutas resueltas |
wtp://worktree/{name} | Detalles de un worktree específico |
wtp://overview | Resumen del repositorio con worktrees y ajustes de seguridad |
wtp://worktrees/by-branch-prefix | Worktrees agrupados por prefijo de rama (feature/, bugfix/, etc.) |
Skill
skills/git-worktree-plus-with-mcp/SKILL.md: Usa este skill cuando el usuario quiera gestionar worktrees de Git a través del servidor MCP de wtp (listar, crear, eliminar, resolver rutas, inicializar .wtp.yml o preparar comandos de fusión), especialmente cuando los valores seguros por defecto en torno a hooks y eliminación de ramas sean relevantes.
Desarrollo
Ejecutar pruebas
Pruebas unitarias (no requieren wtp):
cargo test --lib
Pruebas de integración (requieren wtp instalado; las pruebas se omiten si falta):
cargo test --test integration
Licencia
Licencia MIT - consulta LICENSE para más detalles.