Um servidor MCP de kanban para ChatGPT, Claude, Cursor e Codex
Por Andrei Finogeev, fundador do Weft ·
O Weft é um quadro kanban alojado — Backlog, Todo, Doing, Done, com sprints opcionais — e o seu servidor MCP está em https://letsweft.com/api/mcp. Adicione esse URL ao seu cliente de IA e inicie sessão uma vez com OAuth; não há nada para instalar nem para correr localmente. A partir daí, o assistente lê o quadro, cria e move cartões, assume um cartão antes de trabalhar nele para que dois agentes nunca peguem no mesmo, reporta o progresso, pergunta-lhe quando a decisão é sua e fecha o cartão com o que fez. Grátis até 50 tarefas e 200 chamadas de IA por mês.
https://letsweft.com/api/mcpStreamable HTTP · OAuth ou um token de acesso pessoal · 32 ferramentas
Adicione-o ao seu cliente de IA
ChatGPT
Abrir o Weft no ChatGPT — ou configure-o manualmente:
- 1Abra Plugins na barra lateral do ChatGPT — ou Definições → Plugins.
- 2Procure "Weft" e abra a listagem.
- 3Clique em "Ligar" e reveja a que o Weft pode aceder.
- 4Inicie sessão com a sua conta do Weft na janela pop-up que se abre.
Mencione o plugin com @ em qualquer chat: "@Weft o que há no meu quadro?" — ou escolha o Weft no menu +. Se saltou a configuração, o ChatGPT oferece-se para ligar ali mesmo.
Claude Desktop
- 1Abra o Claude Desktop → Definições → Conectores.
- 2Clique em "Adicionar conector personalizado".
- 3Cole o URL do MCP do Weft abaixo e guarde.
- 4Conclua o OAuth na janela do navegador que se abre.
Comece um chat novo e pergunte: "o que há no meu quadro do Weft?". O Claude vai buscar o estado do quadro através do conector do Weft.
Claude Code
claude mcp add --transport http weft https://letsweft.com/api/mcpCorra `claude` em qualquer projeto e pergunte: "o que há no meu quadro?". Da primeira vez, abre-se uma janela do navegador para concluir o OAuth.
Cursor
Adicionar ao Cursor — ou configure-o manualmente:
{
"mcpServers": {
"weft": {
"url": "https://letsweft.com/api/mcp"
}
}
}Abra Cursor → Settings → MCP. O servidor "weft" deve aparecer com um indicador verde depois de concluir o OAuth.
Codex CLI
[mcp_servers.weft]
url = "https://letsweft.com/api/mcp"Corra `codex mcp login weft` para iniciar sessão pelo navegador, depois abra `codex` e pergunte: "o que há no meu quadro?". O comando `/mcp` lista o servidor ligado e as suas ferramentas.
VS Code
Instalar a extensão do Weft — ou configure-o 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 há no meu quadro?». Da primeira vez abre-se 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 o URL do MCP do Weft abaixo e guarde.
- 4Conclua o OAuth na janela do navegador que se abre.
Abra o Cascade e pergunte: "o que há 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-extensionCorra `gemini` e pergunte: "o que há no meu quadro do weft?". Na primeira utilização, abre-se um navegador para o OAuth. `gemini extensions list` deve mostrar "weft".
Feito para agentes, não só para si
Claims, não colisões
O start_task coloca um lease num cartão antes de um agente trabalhar nele. Um segundo agente que peça trabalho recebe outro cartão, e um cartão cujo agente ficou em silêncio volta a ser oferecido quando o lease expira.
Progresso e comprovativos
O report_progress mantém o claim ativo enquanto o agente trabalha; o complete_task fecha o cartão com o que foi feito, o que não foi e ligações que pode verificar.
As perguntas esperam por si
O request_input deixa uma pergunta com opções na sua Caixa de entrada — na web e no telemóvel — em vez de deixar o agente adivinhar algo que só o utilizador pode decidir.
A sua atenção dita o ritmo
Quando há demasiado trabalho terminado à espera da sua revisão, os agentes deixam de começar cartões novos. É o limite de trabalho em curso do kanban, aplicado a si.
Decide o que cada IA pode fazer
Dê a cada assistente ligado acesso total, de escrita ou só de leitura, e desligue-o com um clique. Os cartões eliminados vão para a reciclagem, não desaparecem de imediato.


As 32 ferramentas
Cada ferramenta declara se só lê, se escreve ou se remove algo, para que o seu cliente saiba quando lhe deve perguntar primeiro.
| Ferramenta | O que faz | Tipo |
|---|---|---|
| search | Pesquisa por palavra-chave em tarefas, sprints, decisões e notas de memória. Devolve até 50 resultados {id, title, url} ordenados, cujos ids com prefixo do tipo servem de entrada ao fetch. | Leitura |
| fetch | Obtém o conteúdo completo de um resultado de pesquisa — título, representação em texto, url de origem e metadados estruturados. Recebe o id com prefixo devolvido pelo search. | Leitura |
| initialize_board | Cria as colunas predefinidas Backlog, Todo, Doing e Done no seu quadro do Weft, se não existirem — a configuração numa só chamada antes de um agente de IA gerir tarefas. Idempotente. | Escrita |
| get_board_state | Devolve um resumo compacto do quadro Scrumban do utilizador: colunas, sprint ativo, Doing, tarefas em atraso e conclusões recentes, cerca de 30 vezes mais pequeno do que um snapshot completo. | Leitura |
| list_columns | Lista todas as colunas do quadro, por ordem — id, nome e posição de cada uma, para que um agente saiba exatamente para onde uma tarefa pode ir. | Leitura |
| list_tasks | Devolve as tarefas do utilizador autenticado, opcionalmente filtradas 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 utilizador. Vai para o Backlog se não for indicada coluna. A prioridade predefinida é média. Use quando o utilizador pede para adicionar uma tarefa. | Escrita |
| bulk_create_tasks | Cria até 1000 tarefas numa só chamada atómica — importe exportações do Linear/Jira/Notion/Trello ou qualquer lista de 3 ou mais tarefas, gastando apenas uma chamada de IA da quota. | Escrita |
| update_task | Altera campos de uma tarefa existente. Só mudam os campos que passar; os omitidos mantêm-se — com uma exceção: limpar requiresReview é recusado a um agente, e a recusa leva consigo toda a alteração. | Escrita |
| move_task | Move uma tarefa para outra coluna e posição. Mover para uma coluna com semantic='doing' inicia a medição do tempo de ciclo; mover para semantic='done' regista a hora de conclusão. | Escrita |
| start_task | A IA chama-a no momento em que começa a executar uma tarefa — o cartão passa para Doing, para que o utilizador e todos os outros clientes ligados o vejam em curso (e não lhe peguem duas vezes). Inicia a medição do tempo de ciclo; uma tarefa sem responsável é assumida pelo agente que chama (um responsável existente nunca é substituído). Não precisa de id de coluna. | Escrita |
| report_progress | Diz que ainda está a trabalhar. O claim de uma tarefa expira se o cliente ficar em silêncio, e isto renova-o. Sem um sinal de vida, uma tarefa longa é tratada como abandonada e oferecida a outro — de propósito, porque um agente que morre a meio da execução não reporta nada, por isso 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 estiver no cliente, aparece aí um formulário e a resposta volta dentro da mesma chamada — o agente continua no mesmo contexto, com o mesmo claim. Se estiver ausente, a chamada regressa em espera e a pergunta fica na fila dela; a resposta chega ao agente no seu próximo start_task ou get_my_work. Para o irreversível e o genuinamente 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 respondeu a uma pergunta que o agente fez e devolve o trabalho com o mesmo runId e lease, para que continue na mesma tentativa em vez de recomeçar do zero. Fica marcado como transmitido, nunca como ação da própria pessoa — uma resposta trazida por um agente e um clique feito por uma pessoa são provas de natureza diferente, e o quadro mantém-nas separadas. Se a pergunta já tiver sido respondida na app do Weft, é essa resposta que é devolvida em vez de um erro: o que importa é que o agente continue com a resposta certa. | Escrita |
| get_my_work | Pergunte o que fazer a seguir, em vez de ler o quadro inteiro e adivinhar. Devolve as tarefas atribuídas a este cliente, o que já está à espera da pessoa e se a fila de atenção tem espaço. Indica também o que está em atraso e o que vence ou começa dentro da semana, para que um agente saiba de um prazo sem ter de perguntar. Quando a fila está cheia, o útil é ajudar a esvaziá-la, não começar algo novo — e isto di-lo antes de se escolher uma tarefa. | Leitura |
| complete_task | A IA chama-a quando o trabalho está realmente terminado — o cartão passa para Done com a hora de conclusão registada, e o outcome opcional (o que foi feito, onde está o resultado) é acrescentado ao cartão como nota "Outcome (AI, date)". Não precisa de id de coluna. O trabalho marcado como precisando de si NÃO passa para Done: vai para a sua fila com o comprovativo anexado e, se o agente disse o que faria a seguir, aceitar aprova exatamente esse passo e devolve-o ao agente. Se a tarefa tiver um plano de verificação, o servidor executa as verificações ali mesmo — abre o URL, procura a citação, compara o hash: um plano executable/state_delta cujas verificações bloqueantes passam todas fecha verificado pelo servidor; uma verificação bloqueante falhada 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 única tabela de registo. (1) Transmitir um veredito que deu na conversa sobre trabalho terminado à sua espera — aprovado, devolver, descartar, mais tarde —, retirando o cartão da fila de revisão; a entrada fica guardada como transmitida e não como ação sua na app, e essa diferença fica visível de propósito. (2) Registar uma decisão avulsa que valha a pena lembrar — 'escolhemos o Neon em vez do Supabase', uma lição aprendida — como um registo MADR-lite imutável, com as opções ponderadas e a condição para a rever. Os registos nunca são editados: uma nova decisão com supersedesId substitui a antiga, e a antiga continua legível tal como estava no dia em que foi tomada. São estes registos que o get_context entrega a todos os agentes na semana seguinte. | Escrita |
| get_context | As decisões e lições em vigor no espaço de trabalho, compactadas num orçamento de tokens, das mais recentes para as mais antigas — o que um agente deve ler antes de começar algo que não seja trivial. É derivado das decisões registadas, e não escrito como documento, por isso não envelhece: uma decisão substituída sai no momento em que a substituta é registada, e cada linha traz a sua data. Restrinja-o a um projeto ou a uma tarefa para o limitar; as linhas que não cabem no orçamento são contadas, nunca escondidas em silêncio. | Leitura |
| get_task_history | O que aconteceu a uma tarefa, não só os seus campos atuais. Três modos: 'summary' (predefinido, ≤500 tokens — o cartão, o último comprovativo, contagens), 'decisions' (todas as decisões registadas sobre ela, incluindo vereditos e os seus motivos — o motivo de um retrabalho sobrevive aqui depois de uma aceitação posterior sobrescrever o cartão), 'full' (o registo em bruto, limitado a 100 eventos e dizendo-o). Existe porque um registo de auditoria é demasiado verboso para ler diretamente, e a linha da tarefa só guarda o veredito mais recente. | Leitura |
| trash_task | Move uma tarefa para a reciclagem no seu quadro do Weft. Recuperável durante 30 dias com restore_task; depois disso, uma tarefa agendada elimina-a de vez. | Remove |
| restore_task | Recupera uma tarefa da reciclagem até 30 dias depois de lá ter ido parar. A tarefa volta ao quadro onde estava, intacta — para que um fundador a solo nunca perca trabalho por uma eliminação acidental. | Escrita |
| archive_done_tasks | Esvazia a coluna Done: todas as tarefas nela saem do quadro para o arquivo — continuam a ser encontradas por search/fetch e a aparecer no histórico do seu sprint, nunca são eliminadas. Concluir um sprint arquiva automaticamente as tarefas terminadas desse sprint; isto trata do resto. Leva a coluna inteira numa só chamada, sem contagem e sem volta atrás a partir do MCP — o restore_task restaura da reciclagem, não do arquivo —, e é por isso que está marcada como destrutiva: um cliente deve confirmar com o utilizador antes de a chamar. | Remove |
| list_projects | Lista os projetos do quadro — contextos leves (uma startup, um cliente, pessoal) a que uma tarefa pode pertencer. Exclui projetos arquivados, a menos que includeArchived esteja definido. | Leitura |
| create_project | Cria um contexto de projeto. O nome é único por quadro; a cor predefinida é escolhida de uma paleta rotativa; url é o site do projeto, cujo favicon aparece nos cartões das tarefas. | Escrita |
| update_project | Muda o nome de um projeto, a sua cor ou o url do site, ou arquiva/desarquiva-o. Os projetos arquivados desaparecem dos seletores; as suas tarefas mantêm a associação. | Escrita |
| list_sprints | Lista todos os sprints (planeados, ativos, concluídos, arquivados) do utilizador, para que um fundador a solo ou um agente possa rever o histórico de sprints e o estado atual sem abrir a app. | Leitura |
| get_active_sprint | Devolve o sprint ativo neste momento, ou null se nenhum estiver a decorrer — para que um fundador a solo ou um agente possa ver o objetivo atual sem abrir a app. | Leitura |
| create_sprint | Cria um novo sprint com o estado "planned" no seu quadro do Weft, pronto a agendar com um objetivo e datas. Use start_sprint à parte quando estiver pronto para começar a trabalhar. | Escrita |
| start_sprint | Passa um sprint planeado ao estado ativo. Só pode haver um sprint ativo de cada vez, em todos os planos — se outro sprint estiver a decorrer, a chamada falha e indica qual; conclua primeiro esse sprint e tente novamente. | Escrita |
| complete_sprint | Termina o sprint ativo. As tarefas terminadas são arquivadas no histórico do sprint — saem da coluna Done do quadro, continuam pesquisáveis e aparecem na página do sprint. As tarefas por terminar ficam no quadro, associadas ao sprint. Não pode ser desfeito por MCP — os clientes devem confirmar quando a intenção for ambígua. | Remove |
| add_task_to_sprint | Atribui uma tarefa existente a um sprint, para que apareça no âmbito e no burndown desse sprint. Idempotente — chamar duas vezes não tem efeito adicional, por isso é seguro repetir. | Escrita |
| remove_task_from_sprint | Desassocia uma tarefa do sprint atual sem a eliminar — a tarefa fica no quadro, na sua coluna, simplesmente deixa de fazer parte desse sprint e do seu burndown. | 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, passá-lo para Doing ou Done. O do Weft é alojado, por isso adiciona um URL em vez de correr um processo na sua máquina.
Preciso de instalar ou correr alguma coisa?
Não. Adicione https://letsweft.com/api/mcp ao seu cliente de IA e inicie sessão com OAuth. Os clientes sem OAuth usam um token de acesso pessoal de Definições → Tokens de acesso.
É gratuito?
Sim, até 50 tarefas e 200 chamadas de IA por mês. O Pro remove os limites por 7 US$ por lugar por mês, ou 60 US$ por lugar por ano.
Funciona com o ChatGPT Free?
Sim. O Weft está no Plugin directory do ChatGPT e funciona em todos os planos do ChatGPT, incluindo o Free. Adicionar um URL MCP direto no ChatGPT é uma funcionalidade do Business, Enterprise e Edu, mas não precisa dela para o Weft.
Dois agentes podem partilhar um quadro?
Sim — é para isso que o quadro serve. Cada agente assume um cartão com start_task antes de trabalhar nele, para que não peguem no mesmo cartão, e cada cartão mostra se foi uma IA ou uma pessoa que o criou ou concluiu.
Em que difere de um servidor MCP de kanban local?
Os servidores MCP de kanban open source correm na sua máquina e guardam o quadro num ficheiro ou base de dados local, por isso só os agentes nessa máquina o veem. O Weft é um quadro partilhado e alojado: os mesmos cartões no ChatGPT, no Claude, no Cursor, no Codex, na app web e nas apps para iOS e Android, para si e para a sua equipa.