wt-mcp
Provides tools for managing git worktrees per product, enabling creation, listing, syncing, and removal of task-based worktrees across multiple repositories.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@wt-mcpcreate a worktree for TASK-123 using the fullstack preset"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
worktree-manager
CLI para gerenciar git worktrees por produto: várias tasks em paralelo, com config YAML reutilizável, cópia de arquivos/dependências e workspace Cursor/VS Code gerado automaticamente.
Binário: wt · MCP: wt-mcp · Python 3.11+
Índice
Related MCP server: batuta-mcp
Para quem é
Útil quando você:
Mantém mais de um repositório por produto (ex.: API + web, backend + mobile)
Cria uma pasta por task/ticket com worktrees git isoladas
Quer reaproveitar arquivos locais (
.env,launch.json,node_modules, etc.)Abre tudo num
.code-workspacecom pastas extras (docs, utilitários, specs)
Não é um wrapper genérico de git worktree para um único repo solto — o foco é o workspace de produto com N projetos.
Como funciona
Pasta do produto/
├── api/ ← repositório git
├── web/ ← repositório git
├── docs/ ← pasta extra no workspace
└── .worktree-manager/ ← pasta do manager
├── config.yml ← config (versionável)
├── state.yml ← estado local (não versionar)
└── worktrees/
└── TASK-123/
├── api/ ← worktree
├── web/ ← worktree
└── TASK-123.code-workspaceDois caminhos para criar tasks:
Em etapas —
create(pasta + workspace + estado) e depoisaddprojeto a projetoPreset —
create --preset …encadeia create + vários adds
A branch de trabalho default é o nome da task (--branch sobrescreve; no preset, --branch proj=b por projeto).
A base de origem é por projeto (default_base no YAML, com override via --base).
Execute os comandos na pasta base do produto (pai de
.worktree-manager/) ou dentro de.worktree-manager/.
Outro produto = outra pasta = outroinit.
Instalação
Desenvolvimento (recomendado hoje)
git clone <url-deste-repo> worktree-manager
cd worktree-manager
uv venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
uv pip install -e ".[dev]"
wt --versionAlternativa com pip:
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"Deixe o venv ativo (ou exponha wt no PATH) para usar em qualquer pasta de produto.
Início rápido
1. Entre na pasta do produto
cd ~/projetos/meu-produtoEstrutura mínima esperada: repositórios git lado a lado (ex.: api/, web/).
2. Inicialize a config
wt initO assistente pergunta:
Nome do produto
Loop de projetos: path → nome (default: basename) → default base
Cria .worktree-manager/config.yml (worktrees em .worktree-manager/worktrees/).
Depois edite copy, workspace_folders e presets, ou use wt projects add.
3. Complete o YAML (exemplo)
name: meu-produto
root: .
worktrees_dir: worktrees
workspace_file: "{task}.code-workspace"
workspace_folders:
- path: docs
projects:
api:
path: api
default_base: main
copy:
- from: .env.local
to: .env.local
web:
path: web
default_base: main
copy:
- from: node_modules
to: node_modules
strategy: rsync
presets:
backend: [api]
frontend: [web]
fullstack: [api, web]Veja o schema completo em docs/configuracao.md e exemplos em docs/exemplos/.
4. Crie uma task
Rápido (preset):
wt create TASK-123 --preset fullstack --open
# ou com branches explícitas:
wt create TASK-123 --preset fullstack --branch feature/TASK-123 --openEm etapas:
wt create TASK-123
wt add TASK-123 api
wt add TASK-123 web --base develop
wt open TASK-1235. Gerencie
wt list
wt status TASK-123
wt sync TASK-123
wt doctor
wt doctor --fix
wt prune
wt remove TASK-123 --forceFluxos de trabalho
Só um projeto da stack
wt create TASK-10 --preset backendComeçar parcial e evoluir
wt create TASK-11
wt add TASK-11 api --branch feature/TASK-11
# ... trabalhar só na API ...
wt add TASK-11 web --branch feature/TASK-11Branches e bases diferentes por projeto no mesmo preset
wt create TASK-12 \
--preset fullstack \
--branch api=feature/TASK-12-api \
--branch web=feature/TASK-12-ui \
--base api=main \
--base web=developSimular antes de executar
wt create TASK-13 --preset fullstack --dry-run
wt add TASK-13 api --dry-run
wt remove TASK-13 --force --dry-run
wt sync TASK-13 --dry-runRemover um projeto sem apagar a task
wt remove TASK-12 web --forceRemover tudo (e opcionalmente a branch local)
wt remove TASK-12 --force --delete-branchComandos
Comando | Descrição |
| Cria |
| Cria task vazia (pasta + workspace + estado) |
| Create + adds do preset |
| Adiciona projeto à task (branch default = task) |
| Remove projeto da task ou a task inteira |
| Lista tasks do estado |
| Lista projetos do |
| Adiciona projeto à config (nome default = basename) |
| Remove projeto da config |
|
|
| Fetch + rebase/merge na base registrada |
| Abre o |
| Diagnóstico; |
| Limpa órfãos e ghosts |
| Ajuda detalhada |
| Ajuda curta e versão |
Opções úteis:
Opção | Onde | Efeito |
|
| Branch de trabalho (default: nome da task) |
|
| Branch por projeto (repetível) |
|
| Base de origem (senão usa |
|
| Override de base por projeto |
|
|
|
|
| Abre o workspace ao terminar |
|
| Apaga a branch local criada |
|
| Mostra o plano sem alterar nada |
|
| Confirma remoção / permite dirty no sync |
Referência detalhada: docs/comandos.md.
Configuração
Arquivo: .worktree-manager/config.yml.
Campo | Obrigatório | Default | Descrição |
| sim | — | Nome do produto |
| não |
| Raiz relativa ao produto (pai de |
| não |
| Pasta das tasks (relativa a |
| não |
| Nome do workspace gerado |
| não |
| Pastas extras no workspace |
| sim | — | Path do repositório (relativo à raiz do produto) |
| sim | — | Branch de origem padrão |
| não |
| Arquivos/pastas a copiar no |
| não |
|
|
| não |
| Nome → lista de ids de projeto |
Não existem allowed_bases nem pattern automático de branch.
Guia completo do schema, init e estado: docs/configuracao.md.
Estado
Arquivo local: .worktree-manager/state.yml.
Config | Estado | |
Responde | O que pode ser feito | O que já existe |
Versionar? | Sim ( | Não |
Quem escreve |
| Só o CLI |
Sugestão de .gitignore no produto:
.worktree-manager/state.ymlO wt doctor compara estado, pastas em disco e git worktree list (órfãos, drift de branch, worktrees fantasma, etc.).wt doctor --fix e wt prune corrigem o que for seguro; wt sync atualiza as branches da task com a base.
MCP para agentes
O servidor wt-mcp expõe as mesmas operações da CLI via Model Context Protocol (stdio), para agentes Cursor (e outros clientes MCP) criarem/listarem/sincronizarem tasks sem parsear stdout.
Pré-requisito: pacote instalado (uv tool install --editable . ou uv pip install -e .) e wt-mcp no PATH (which wt-mcp).
Adicionar no Cursor
Abra Cursor Settings → MCP (ou edite o JSON de MCP).
Inclua o servidor abaixo.
Salve e confirme que
worktree-manageraparece como conectado (tools disponíveis no chat/agente).
Global (~/.cursor/mcp.json):
{
"mcpServers": {
"worktree-manager": {
"command": "wt-mcp",
"args": []
}
}
}Só neste repo (.cursor/mcp.json na raiz do projeto):
{
"mcpServers": {
"worktree-manager": {
"command": "wt-mcp",
"args": []
}
}
}Se wt-mcp não estiver no PATH, use o caminho absoluto do venv:
{
"mcpServers": {
"worktree-manager": {
"command": "/caminho/para/worktree-manager/.venv/bin/wt-mcp",
"args": []
}
}
}Uso pelo agente
Passe
product_root(path absoluto da pasta do produto) quando o cwd do agente não for o produto.Respostas:
{ "ok": true, "data": … }ou{ "ok": false, "error": { "kind", "message" } }.Ações destrutivas (
remove,prune,doctorcomfix) exigemconfirm=true(oudry_run=truepara simular).
Tool | Equivale a |
| inventário |
|
|
|
|
|
|
|
|
| path do workspace / |
Skill opcional (orquestra MCP ou CLI): .cursor/skills/worktree-manager/.
Detalhes e contrato de erro: docs/mcp.md.
Vários produtos
Cada produto tem sua própria pasta .worktree-manager/:
ProdutoA/
├── api/
└── .worktree-manager/
├── config.yml
└── worktrees/
ProdutoB/
├── backend/
├── mobile/
└── .worktree-manager/
├── config.yml
└── worktrees/cd ~/projetos/ProdutoA && wt init
cd ~/projetos/ProdutoB && wt initDocumentação
Documento | Conteúdo |
Porta de entrada (este arquivo) | |
Schema YAML, init, estado | |
Referência detalhada dos comandos | |
Servidor MCP ( | |
YAMLs de exemplo (genérico + casos) | |
Caso: migrar script legado Clinic → | |
Histórico de fases / backlog interno |
Exemplos prontos para copiar:
# stack API + web (genérico)
mkdir -p /caminho/do/produto/worktree-manager
cp docs/exemplos/api-web.yml /caminho/do/produto/.worktree-manager/config.yml
# caso Clinic (referência)
mkdir -p /caminho/do/Clinic/worktree-manager
cp docs/exemplos/clinic.yml /caminho/do/Clinic/.worktree-manager/config.ymlSkill opcional do Cursor (orquestra MCP/wt, sem reimplementar lógica):.cursor/skills/worktree-manager/
Desenvolvimento
source .venv/bin/activate
uv pip install -e ".[dev]"
pytest
wt --help
wt-mcp # sobe o servidor MCP em stdio (usado pelo Cursor)Layout do pacote:
src/worktree_manager/
├── cli/ # comandos Typer
├── config/ # load/validate/write YAML
├── state/ # estado local
├── git/ # operações git
├── workspace/ # geração .code-workspace
├── mcp/ # servidor MCP (wt-mcp)
├── copyops.py # cópias declarativas
└── services.py # create/add/remove/sync/doctor/prunePlano e backlog: docs/plano-desenvolvimento.md.
Licença
MIT (ver pyproject.toml).
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityCmaintenanceMCP server that gives AI agents deep code understanding across multiple git repositories, combining git lifecycle management, Zoekt-based trigram code search, and cross-repo dependency analysis.MIT
- Alicense-qualityBmaintenanceMCP server that decomposes tasks into plans with disjoint file boundaries, validates overlaps, and creates git worktrees with a ready prompt per plan.332MIT
- Alicense-qualityBmaintenanceAn MCP server that wraps git-worktree-runner to enable AI agents to manage git worktrees safely.Apache 2.0
- Alicense-qualityDmaintenanceA filesystem-based MCP server for AI coding agents to coordinate work across git worktrees by claiming files, checking for conflicts, and logging progress without affecting the repository's git history.MIT
Related MCP Connectors
A MCP server built for developers enabling Git based project management with project and personal…
User-owned memory for AI agents, Copilot, Claude, IDEs, CLIs, and chat apps over remote MCP.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/felipemdf/wt-manager'
If you have feedback or need assistance with the MCP directory API, please join our Discord server