Um servidor MCP de kanban para ChatGPT, Claude, Cursor e Codex
Por Andrei Finogeev, fundador do Weft ·
O Weft é um quadro kanban hospedado — Backlog, Todo, Doing, Done, com sprints opcionais — e o servidor MCP dele fica em https://letsweft.com/api/mcp. Adicione essa URL ao seu cliente de IA e entre uma vez com OAuth; não há nada para instalar nem rodar localmente. A partir daí, o assistente lê o quadro, cria e move cartões, faz o claim de um cartão antes de trabalhar nele para que dois agentes nunca peguem o mesmo, relata o progresso, pergunta a você quando a decisão é sua e fecha o cartão com o que fez. Grátis para 50 tarefas e 200 chamadas de IA por mês.
https://letsweft.com/api/mcpStreamable HTTP · OAuth ou token de acesso pessoal · 32 ferramentas
Adicione ao seu cliente de IA
ChatGPT
Abrir o Weft no ChatGPT — ou configure manualmente:
- 1Abra Plugins na barra lateral do ChatGPT — ou Configurações → Plugins.
- 2Busque "Weft" e abra a listagem.
- 3Clique em "Conectar" e revise o que o Weft pode acessar.
- 4Entre com sua conta do Weft na janela pop-up que se abre.
Mencione o plugin com @ em qualquer chat: "@Weft o que tem no meu quadro?" — ou escolha o Weft no menu +. Se você pulou a configuração, o ChatGPT se oferece para conectar ali mesmo.
Claude Desktop
- 1Abra o Claude Desktop → Configurações → Conectores.
- 2Clique em "Adicionar conector personalizado".
- 3Cole a URL do MCP do Weft abaixo e salve.
- 4Conclua o OAuth na janela do navegador que se abre.
Comece um chat novo e pergunte: "o que tem no meu quadro do Weft?". O Claude busca o estado do quadro pelo conector do Weft.
Claude Code
claude mcp add --transport http weft https://letsweft.com/api/mcpRode `claude` em qualquer projeto e pergunte: "o que tem no meu quadro?". Na primeira vez, uma janela do navegador abre para concluir o OAuth.
Cursor
Adicionar ao Cursor — ou configure manualmente:
{
"mcpServers": {
"weft": {
"url": "https://letsweft.com/api/mcp"
}
}
}Abra Cursor → Settings → MCP. O servidor "weft" deve aparecer com um indicador verde depois que você concluir o OAuth.
Codex CLI
[mcp_servers.weft]
url = "https://letsweft.com/api/mcp"Rode `codex mcp login weft` para entrar pelo navegador, depois abra `codex` e pergunte: "o que tem no meu quadro?". O comando `/mcp` lista o servidor conectado e suas ferramentas.
VS Code
Instalar a extensão do Weft — ou configure manualmente:
{
"servers": {
"weft": {
"type": "http",
"url": "https://letsweft.com/api/mcp"
}
}
}Abra o chat, mude o seletor de modo para Agent e pergunte: «o que tem no meu quadro?». Na primeira vez abre uma janela do navegador para o OAuth. «MCP: List Servers» deve mostrar weft como Running.
Windsurf
- 1Abra Windsurf → Settings → Cascade → MCP servers.
- 2Clique em "Add server" e escolha Remote (HTTP).
- 3Cole a URL do MCP do Weft abaixo e salve.
- 4Conclua o OAuth na janela do navegador que se abre.
Abra o Cascade e pergunte: "o que tem no meu quadro?". O Cascade marca as respostas que usaram o servidor do Weft.
Gemini CLI
gemini extensions install https://github.com/AndreiFinogeev/weft-gemini-extensionRode `gemini` e pergunte: "o que tem no meu quadro do weft?". No primeiro uso, um navegador abre para o OAuth. `gemini extensions list` deve mostrar "weft".
Feito para agentes, não só para você
Claims, não colisões
O start_task coloca um lease em um cartão antes de um agente trabalhar nele. Um segundo agente que pede trabalho recebe outro cartão, e um cartão cujo agente ficou em silêncio é oferecido de novo quando o lease expira.
Progresso e recibos
O report_progress mantém o claim vivo enquanto o agente trabalha; o complete_task fecha o cartão com o que foi feito, o que não foi e links que você pode conferir.
As perguntas esperam por você
O request_input coloca uma pergunta com opções na sua Caixa de entrada — na web e no celular — em vez de deixar o agente adivinhar algo que só você pode decidir.
A sua atenção dita o ritmo
Quando há trabalho concluído demais esperando a sua revisão, os agentes param de começar cartões novos. É o limite de trabalho em andamento do kanban, aplicado a você.
Você decide o que cada IA pode fazer
Dê a cada assistente conectado acesso total, de escrita ou só de leitura, e desconecte-o com um clique. Cartões excluídos vão para a lixeira, em vez de deixarem de existir na hora.


As 32 ferramentas
Cada ferramenta declara se só lê, se escreve ou se remove algo, para que o seu cliente saiba quando perguntar a você antes.
| Ferramenta | O que faz | Tipo |
|---|---|---|
| search | Busca por palavra-chave em tarefas, sprints, decisões e notas de memória. Retorna até 50 resultados {id, title, url} ordenados por relevância, cujos ids com prefixo de tipo servem de entrada para o fetch. | Leitura |
| fetch | Recupera o conteúdo completo de um resultado de busca — título, representação em texto, url de origem e metadados estruturados. Recebe o id com prefixo retornado pelo search. | Leitura |
| initialize_board | Cria as colunas padrão Backlog, Todo, Doing e Done no seu quadro do Weft se ainda não existirem — a configuração em uma chamada antes de um agente de IA gerenciar tarefas. Idempotente. | Escrita |
| get_board_state | Retorna um resumo compacto do quadro Scrumban do usuário: colunas, sprint ativa, Doing, tarefas atrasadas e conclusões recentes, cerca de 30 vezes menor que um snapshot completo. | Leitura |
| list_columns | Lista todas as colunas do quadro, em ordem — id, nome e posição de cada uma, para que o agente saiba exatamente para onde uma tarefa pode ir. | Leitura |
| list_tasks | Retorna as tarefas do usuário autenticado, com filtro opcional por coluna, sprint, projeto (nome ou id), criador (pessoa ou IA) ou responsável (quem executa). | Leitura |
| create_task | Cria uma nova tarefa no quadro do usuário. Vai para o Backlog se nenhuma coluna for indicada. A prioridade padrão é média. Use quando o usuário pedir para adicionar uma tarefa. | Escrita |
| bulk_create_tasks | Cria até 1000 tarefas em uma única chamada atômica — importe exportações do Linear/Jira/Notion/Trello ou qualquer lista de 3 ou mais tarefas, gastando só uma chamada de IA da cota. | Escrita |
| update_task | Altera campos de uma tarefa existente. Só os campos enviados mudam; os omitidos são preservados — com uma exceção: limpar requiresReview é recusado para um agente, e a recusa derruba a alteração inteira. | Escrita |
| move_task | Move uma tarefa para outra coluna e posição. Mover para uma coluna com semantic='doing' inicia a medição do cycle time; mover para semantic='done' registra o horário de conclusão. | Escrita |
| start_task | A IA chama esta ferramenta no momento em que começa a executar uma tarefa — o cartão vai para Doing, para que o usuário e todos os outros clientes conectados o vejam em andamento (e não o peguem duas vezes). Inicia a medição do cycle time; uma tarefa sem responsável é assumida pelo agente que chamou (um responsável já definido nunca é substituído). Não precisa de id de coluna. | Escrita |
| report_progress | Diz que você ainda está trabalhando. O claim de uma tarefa expira se o cliente fica em silêncio, e isto o renova. Sem esse sinal de vida, uma tarefa longa é tratada como abandonada e oferecida a outra pessoa — de propósito, porque um agente que morre no meio da execução não relata nada, então o silêncio é o único sinal que o quadro tem. | Escrita |
| request_input | Pergunta à pessoa algo que só ela pode decidir e espera sem perder o claim da tarefa. Se ela estiver no cliente, aparece um formulário ali e a resposta volta dentro da mesma chamada — o agente continua no mesmo contexto, com o mesmo claim. Se ela estiver ausente, a chamada retorna estacionada e a pergunta espera na fila dela; a resposta chega ao agente no próximo start_task ou get_my_work. Serve para o irreversível e o realmente ambíguo, não para "posso continuar?" — cada pergunta gasta o mesmo orçamento de atenção que limita o trabalho novo. | Escrita |
| submit_answer | Traz de volta o que a pessoa disse sobre uma pergunta que o agente fez e devolve o trabalho com o mesmo runId e o mesmo lease, para que ele continue na mesma tentativa em vez de começar uma do zero. Fica marcado como repassado, nunca como se a própria pessoa tivesse agido — uma resposta levada por um agente e um clique feito por uma pessoa são tipos diferentes de evidência, e o quadro os mantém separados. Se a pergunta já foi respondida no app do Weft, essa resposta é retornada em vez de um erro: o que importa é que o agente continue com a resposta certa. | Escrita |
| get_my_work | Pergunta o que fazer a seguir em vez de ler o quadro inteiro e adivinhar. Retorna as tarefas atribuídas a este cliente, o que já está esperando pela pessoa e se a fila de atenção tem espaço. Também aponta o que está atrasado e o que vence ou começa dentro da semana, para que o agente saiba de um prazo sem perguntar. Quando a fila está cheia, o útil é ajudar a esvaziá-la, não começar algo novo — e isto é dito antes de escolher uma tarefa. | Leitura |
| complete_task | A IA chama esta ferramenta quando o trabalho está de fato terminado — o cartão vai para Done com o horário de conclusão registrado, e o resultado opcional (o que foi feito, onde está o resultado) é anexado ao cartão como uma nota "Outcome (AI, date)". Não precisa de id de coluna. Trabalho marcado como precisando de você NÃO vai para Done: vai para a sua fila com o recibo anexado e, se o agente disse o que faria em seguida, aceitar aprova exatamente esse passo e o devolve ao agente. Se a tarefa tiver um plano de verificação, o servidor executa as checagens ali mesmo — abre a URL, procura a citação, compara o hash: um plano executable/state_delta cujas checagens bloqueantes passam todas fecha como verificado pelo servidor; uma checagem bloqueante que falha mantém o cartão fora de Done e mostra ao agente o que o servidor observou. | Escrita |
| record_decision | Uma ferramenta, dois usos, uma só tabela de registro. (1) Repassar um veredito que você deu na conversa sobre trabalho concluído que espera por você — aprovado, devolver, descartar, depois — tirando o cartão da fila de revisão; o registro fica guardado como repassado, e não como se você tivesse agido no app, e essa diferença fica visível de propósito. (2) Registrar uma decisão avulsa que vale lembrar — 'escolhemos Neon em vez de Supabase', uma lição aprendida — como um registro imutável no estilo MADR-lite, com as opções consideradas e a condição para revisitá-la. Os registros nunca são editados: uma nova decisão com supersedesId substitui a antiga, e a antiga continua legível como o que dizia no dia em que foi tomada. São esses registros que o get_context entrega de volta a todos os agentes na semana seguinte. | Escrita |
| get_context | As decisões e lições em vigor no workspace, compactadas em um orçamento de tokens, das mais novas para as mais antigas — o que um agente deve ler antes de começar qualquer coisa não trivial. Derivado das decisões registradas, e não escrito como documento, então não fica desatualizado: uma decisão substituída sai no momento em que a substituta é registrada, e cada linha traz a sua data. Restrinja a um projeto ou a uma tarefa para afunilar; linhas que não cabem no orçamento são contadas, nunca escondidas em silêncio. | Leitura |
| get_task_history | O que aconteceu com uma tarefa, não só os campos atuais. Três modos: 'summary' (padrão, ≤500 tokens — o cartão, o recibo mais recente, contagens), 'decisions' (todas as decisões registradas sobre ela, inclusive vereditos e seus motivos — o motivo de um retrabalho sobrevive aqui depois que um aceite posterior sobrescreve o cartão), 'full' (o diário bruto, limitado a 100 eventos e avisando disso). Existe porque um log de auditoria é verboso demais para ler direto, e a linha da tarefa só guarda o veredito mais recente. | Leitura |
| trash_task | Move uma tarefa para a lixeira do seu quadro do Weft. Recuperável por 30 dias via restore_task; depois disso, uma rotina agendada a apaga de vez. | Remove |
| restore_task | Recupera uma tarefa da lixeira em até 30 dias depois de ela ir para lá. A tarefa volta ao quadro onde estava, intacta — para que um fundador solo nunca perca trabalho por uma exclusão acidental. | Escrita |
| archive_done_tasks | Limpa a coluna Done: todas as tarefas dela saem do quadro e vão para o arquivo — continuam aparecendo no search/fetch e no histórico da sprint, nunca são apagadas. Concluir uma sprint arquiva automaticamente as tarefas terminadas dela; esta ferramenta cuida do resto. Ela leva a coluna inteira em uma chamada, sem contagem e sem volta pela superfície MCP — o restore_task restaura da lixeira, não do arquivo —, e por isso é marcada como destrutiva: o cliente deve confirmar com o usuário antes de chamá-la. | Remove |
| list_projects | Lista os projetos do quadro — contextos leves (uma startup, um cliente, pessoal) aos quais uma tarefa pode pertencer. Exclui projetos arquivados, a menos que includeArchived seja definido. | Leitura |
| create_project | Cria um contexto de projeto. O nome é único por quadro; a cor padrão vem de uma paleta em rodízio; url é o site do projeto, cujo favicon aparece nos cartões das tarefas. | Escrita |
| update_project | Renomeia um projeto, muda a cor ou a url do site, ou arquiva/desarquiva. Projetos arquivados somem dos seletores; as tarefas deles mantêm o vínculo. | Escrita |
| list_sprints | Lista todas as sprints (planejadas, ativas, concluídas, arquivadas) do usuário, para que um fundador solo ou um agente revise o histórico e o status atual das sprints sem abrir o app. | Leitura |
| get_active_sprint | Retorna a sprint ativa no momento, ou null se nenhuma estiver em andamento — para que um fundador solo ou um agente confira a meta atual sem abrir o app. | Leitura |
| create_sprint | Cria uma nova sprint com status "planned" no seu quadro do Weft, pronta para ser agendada com meta e datas. Use start_sprint separadamente quando for começar o trabalho. | Escrita |
| start_sprint | Passa uma sprint planejada para o status ativo. Só uma sprint pode estar ativa por vez, em todos os planos — se outra estiver em andamento, a chamada falha e diz qual é; conclua essa sprint primeiro e tente de novo. | Escrita |
| complete_sprint | Encerra a sprint ativa. As tarefas terminadas dela são arquivadas no histórico da sprint — saem da coluna Done do quadro, mas continuam pesquisáveis e aparecem na página da sprint. Tarefas não terminadas ficam no quadro, vinculadas à sprint. Não pode ser desfeito via MCP — os clientes devem confirmar quando a intenção for ambígua. | Remove |
| add_task_to_sprint | Atribui uma tarefa existente a uma sprint para que ela apareça no escopo e no burndown dessa sprint. Idempotente — chamar duas vezes não tem efeito extra, então é seguro tentar de novo. | Escrita |
| remove_task_from_sprint | Desvincula uma tarefa da sprint atual sem apagá-la — a tarefa continua no quadro, na sua coluna, só deixa de fazer parte do escopo e do burndown daquela sprint. | Escrita |
Perguntas
O que é um servidor MCP de kanban?
Um servidor MCP (Model Context Protocol) que expõe um quadro kanban como ferramentas que um assistente de IA pode chamar: listar as colunas, ler cartões, criar um cartão, movê-lo para Doing ou Done. O do Weft é hospedado, então você adiciona uma URL em vez de rodar um processo na sua máquina.
Preciso instalar ou rodar alguma coisa?
Não. Adicione https://letsweft.com/api/mcp ao seu cliente de IA e entre com OAuth. Clientes sem OAuth usam um token de acesso pessoal criado em Configurações → Tokens de acesso.
É grátis?
Sim, para 50 tarefas e 200 chamadas de IA por mês. O Pro remove os limites por US$ 7 por assento por mês, ou US$ 60 por assento por ano.
Funciona com o ChatGPT Free?
Sim. O Weft está no Plugin directory do ChatGPT e funciona em todos os planos do ChatGPT, inclusive o Free. Adicionar uma URL MCP direta no ChatGPT é recurso do Business, do Enterprise e do Edu, mas você não precisa disso para o Weft.
Dois agentes podem compartilhar um quadro?
Sim — é para isso que o quadro existe. Cada agente faz o claim de um cartão com start_task antes de trabalhar nele, para que não peguem o mesmo cartão, e cada cartão mostra se foi uma IA ou uma pessoa que o criou ou concluiu.
Qual a diferença para um servidor MCP de kanban local?
Os servidores MCP de kanban open source rodam na sua máquina e guardam o quadro em um arquivo ou banco de dados local, então só os agentes daquela máquina o veem. O Weft é um quadro compartilhado e hospedado: os mesmos cartões no ChatGPT, no Claude, no Cursor, no Codex, no app web e nos apps para iOS e Android, para você e o seu time.