Un server MCP kanban per ChatGPT, Claude, Cursor e Codex

Di Andrei Finogeev, fondatore di Weft ·

Weft è una bacheca kanban ospitata (Backlog, Todo, Doing, Done, con sprint facoltativi) e il suo server MCP si trova su https://letsweft.com/api/mcp. Aggiungi quell’URL al tuo client IA e accedi una volta con OAuth; niente da installare o da eseguire in locale. Da quel momento l’assistente legge la bacheca, crea e sposta schede, prende in carico una scheda prima di lavorarci così che due agenti non prendano mai la stessa, segnala i progressi, ti chiede quando la decisione è tua e chiude la scheda con ciò che ha fatto. Gratis per 50 attività e 200 chiamate IA al mese.

URL del server MCP
https://letsweft.com/api/mcp

Streamable HTTP · OAuth o un token di accesso personale · 32 strumenti

Aggiungilo al tuo client IA

ChatGPT

Apri Weft in ChatGPT — oppure configuralo a mano:

  1. 1Apri Plugins nella barra laterale di ChatGPT — oppure Settings → Plugins.
  2. 2Cerca «Weft» e apri la scheda.
  3. 3Clicca «Connect» e controlla a cosa può accedere Weft.
  4. 4Accedi con il tuo account Weft nella finestra che si apre.

Menziona il plugin con la @ in una chat qualsiasi: «@Weft cosa c’è sulla mia bacheca?» — oppure scegli Weft dal menu +. Se hai saltato la configurazione, ChatGPT ti propone di collegarlo lì per lì.

Claude Desktop

  1. 1Apri Claude Desktop → Settings → Connectors.
  2. 2Clicca «Add custom connector».
  3. 3Incolla qui sotto l’URL MCP di Weft e salva.
  4. 4Completa l’OAuth nella finestra del browser che si apre.

Apri una nuova chat e chiedi: «cosa c’è sulla mia bacheca Weft?». Claude recupera lo stato della bacheca tramite il connettore Weft.

Claude Code

bash
claude mcp add --transport http weft https://letsweft.com/api/mcp

Esegui `claude` in un progetto qualsiasi, poi chiedi: «cosa c’è sulla mia bacheca?». La prima volta si apre una finestra del browser per completare l’OAuth.

Cursor

Aggiungi a Cursor — oppure configuralo a mano:

~/.cursor/mcp.json
{
  "mcpServers": {
    "weft": {
      "url": "https://letsweft.com/api/mcp"
    }
  }
}

Apri Cursor → Settings → MCP. Dopo aver completato l’OAuth, il server «weft» deve comparire con l’indicatore verde.

Codex CLI

~/.codex/config.toml
[mcp_servers.weft]
url = "https://letsweft.com/api/mcp"

Esegui `codex mcp login weft` per accedere dal browser, poi avvia `codex` e chiedi: «cosa c’è sulla mia bacheca?». `/mcp` elenca il server collegato e i suoi strumenti.

VS Code

Installa l’estensione Weft — oppure configuralo a mano:

.vscode/mcp.json
{
  "servers": {
    "weft": {
      "type": "http",
      "url": "https://letsweft.com/api/mcp"
    }
  }
}

Apri la chat, porta il selettore su Agent e chiedi: «cosa c'è sulla mia bacheca?». La prima volta si apre una finestra del browser per l'OAuth. «MCP: List Servers» deve mostrare weft come Running.

Windsurf

  1. 1Apri Windsurf → Settings → Cascade → MCP servers.
  2. 2Clicca «Add server» e scegli Remote (HTTP).
  3. 3Incolla qui sotto l’URL MCP di Weft e salva.
  4. 4Completa l’OAuth nella finestra del browser che si apre.

Apri Cascade e chiedi: «cosa c’è sulla mia bacheca?». Cascade marca le risposte che hanno usato il server Weft.

Gemini CLI

bash
gemini extensions install https://github.com/AndreiFinogeev/weft-gemini-extension

Esegui `gemini` e chiedi: «cosa c’è sulla mia bacheca weft?». Al primo utilizzo si apre il browser per l’OAuth. `gemini extensions list` deve mostrare «weft».

Fatto per gli agenti, non solo per te

Prese in carico, non collisioni

start_task mette un lease su una scheda prima che un agente ci lavori. Un secondo agente che chiede lavoro riceve un’altra scheda, e una scheda il cui agente è andato in silenzio viene offerta di nuovo quando il lease scade.

Progressi e ricevute

report_progress tiene viva la presa in carico mentre l’agente lavora; complete_task chiude la scheda con cosa è stato fatto, cosa no e i link che puoi controllare.

Le domande ti aspettano

request_input mette una domanda con le opzioni nella tua Posta in arrivo, sul web e sul telefono, invece di lasciare che l’agente tiri a indovinare su qualcosa che puoi decidere solo tu.

La tua attenzione detta il ritmo

Quando troppo lavoro finito aspetta la tua revisione, gli agenti smettono di iniziare nuove schede. È il limite kanban al lavoro in corso, applicato a te.

Decidi tu cosa può fare ogni IA

Dai a ogni assistente collegato accesso completo, in scrittura o in sola lettura, e scollegalo con un clic. Le schede eliminate finiscono nel cestino, non spariscono subito.

Bacheca Weft su un telefono, colonna Doing: tre attività prese da un assistente IA, ciascuna contrassegnata come IA
Gli assistenti prendono l’attività successiva; ogni scheda mostra chi ci sta lavorando.
Un’attività Weft completata e creata dall’IA, con l’esito registrato dall’assistente: cosa ha corretto e che 40 esecuzioni di test sono passate
Quando un assistente finisce, lascia una ricevuta: cosa ha fatto e come lo ha verificato.

I 32 strumenti

Ogni strumento dichiara se si limita a leggere, se scrive o se rimuove qualcosa, così il tuo client sa quando chiederti prima.

StrumentoCosa faTipo
searchRicerca per parole chiave tra attività, sprint, decisioni e note di memoria. Restituisce fino a 50 risultati ordinati {id, title, url}, i cui id con prefisso del tipo vanno passati a fetch.Lettura
fetchRecupera il contenuto completo di un singolo risultato di ricerca: titolo, rappresentazione testuale, url di origine e metadati strutturati. Riceve l’id con prefisso restituito da search.Lettura
initialize_boardCrea sulla tua bacheca Weft le colonne predefinite Backlog, Todo, Doing e Done, se non ce ne sono: la configurazione in una sola chiamata prima che un agente IA gestisca le attività. Idempotente.Scrittura
get_board_stateRestituisce un riepilogo compatto della bacheca Scrumban dell’utente: colonne, sprint attivo, Doing, attività scadute e chiusure recenti, circa 30 volte più piccolo di un’istantanea completa.Lettura
list_columnsElenca tutte le colonne della bacheca, in ordine: id, nome e posizione di ciascuna, così un agente sa esattamente dove può spostarsi un’attività.Lettura
list_tasksRestituisce le attività dell’utente autenticato, con filtri facoltativi per colonna, sprint, progetto (nome o id), autore (persona o IA) o assegnatario (chi esegue).Lettura
create_taskCrea una nuova attività sulla bacheca dell’utente. Finisce in Backlog se non è indicata una colonna. La priorità di default è media. Da usare quando l’utente chiede di aggiungere un’attività.Scrittura
bulk_create_tasksCrea fino a 1000 attività in una sola chiamata atomica: importa export di Linear/Jira/Notion/Trello o qualsiasi elenco di 3 o più attività, consumando una sola chiamata IA della quota.Scrittura
update_taskModifica i campi di un’attività esistente. Cambiano solo i campi che passi; quelli omessi restano invariati, con un’eccezione: a un agente viene rifiutato di togliere requiresReview, e il rifiuto si porta via l’intera modifica.Scrittura
move_taskSposta un’attività in un’altra colonna e posizione. Spostarla in una colonna con semantic='doing' avvia la misura del tempo di ciclo; spostarla in semantic='done' registra il momento del completamento.Scrittura
start_taskL’IA lo chiama nel momento in cui inizia a eseguire un’attività: la scheda passa in Doing, così l’utente e ogni altro client collegato la vedono in corso (e non la prendono due volte). Avvia la misura del tempo di ciclo; un’attività non assegnata viene presa in carico dall’agente che chiama (un assegnatario esistente non viene mai sostituito). Non serve l’id della colonna.Scrittura
report_progressDice che stai ancora lavorando. La presa in carico di un’attività scade se il client resta in silenzio, e questo la rinnova. Senza un battito, un’attività lunga viene considerata abbandonata e offerta a qualcun altro, di proposito: un agente che muore a metà esecuzione non segnala niente, quindi il silenzio è l’unico segnale che la bacheca ha.Scrittura
request_inputChiede alla persona qualcosa che può decidere solo lei, e aspetta senza perdere la presa in carico dell’attività. Se la persona è davanti al suo client, lì compare un modulo e la risposta torna dentro la stessa chiamata: l’agente prosegue nello stesso contesto, con la stessa presa in carico. Se non c’è, la chiamata torna in stato di attesa e la domanda resta nella sua coda; la risposta arriva all’agente al successivo start_task o get_my_work. Serve per ciò che è irreversibile o davvero ambiguo, non per «posso continuare?»: ogni domanda consuma lo stesso budget di attenzione che limita il nuovo lavoro.Scrittura
submit_answerRiporta ciò che la persona ha risposto a una domanda sollevata dall’agente e restituisce il lavoro con lo stesso runId e lo stesso lease, così prosegue nello stesso tentativo invece di ripartire da zero. Viene segnata come riferita, mai come azione della persona stessa: una risposta portata da un agente e un clic fatto da una persona sono prove di tipo diverso, e la bacheca le tiene separate. Se alla domanda è già stata data risposta nell’app Weft, viene restituita quella risposta invece di un errore: conta che l’agente prosegua con quella giusta.Scrittura
get_my_workChiede cosa fare dopo, invece di leggere tutta la bacheca e tirare a indovinare. Restituisce le attività assegnate a questo client, cosa sta già aspettando la persona e se la coda di attenzione ha spazio. Indica anche cosa è scaduto e cosa scade o inizia entro la settimana, così un agente viene a sapere di una scadenza senza chiedere. Quando la coda è piena, la mossa utile è aiutare a svuotarla, non iniziare qualcosa di nuovo, e lo dice prima che venga scelta un’attività.Lettura
complete_taskL’IA lo chiama quando il lavoro è davvero finito: la scheda passa in Done con il momento del completamento registrato, e l’esito facoltativo (cosa è stato fatto, dove si trova il risultato) viene aggiunto alla scheda come nota "Outcome (AI, date)". Non serve l’id della colonna. Il lavoro segnato come bisognoso del tuo intervento NON passa in Done: va nella tua coda con la ricevuta allegata, e se l’agente ha detto cosa farebbe dopo, accettare approva esattamente quel passo e lo restituisce all’agente. Se l’attività ha un piano di verifica, il server esegue i controlli proprio qui (apre l’URL, cerca la citazione, confronta l’hash): un piano executable/state_delta i cui controlli bloccanti passano tutti si chiude verificato dal server; un controllo bloccante fallito tiene la scheda fuori da Done e mostra all’agente cosa ha osservato il server.Scrittura
record_decisionUno strumento, due usi, un’unica tabella di registro. (1) Riferisce un verdetto che hai dato in conversazione su un lavoro finito che ti aspetta (approvato, rimandalo indietro, lascia perdere, più tardi), togliendo la scheda dalla coda di revisione; la voce viene salvata come riferita e non come tua azione nell’app, e questa differenza resta visibile di proposito. (2) Registra una decisione a sé che vale la pena ricordare («scelto Neon invece di Supabase», una lezione imparata) come record immutabile in stile MADR-lite, con le opzioni valutate e la condizione per riconsiderarla. I record non vengono mai modificati: una nuova decisione con supersedesId sostituisce quella vecchia, che resta leggibile per ciò che diceva il giorno in cui è stata presa. Sono questi record che get_context restituisce a ogni agente la settimana dopo.Scrittura
get_contextLe decisioni e le lezioni attuali del workspace, impacchettate entro un budget di token, dalle più recenti: ciò che un agente dovrebbe leggere prima di iniziare qualsiasi cosa non banale. È derivato dalle decisioni registrate invece di essere scritto come documento, quindi non può invecchiare: una decisione superata esce nel momento in cui viene registrata quella che la sostituisce, e ogni riga riporta la sua data. Limitalo a un progetto o a un’attività per restringerlo; le righe che non stanno nel budget vengono contate, mai nascoste in silenzio.Lettura
get_task_historyCosa è successo a un’attività, non solo i suoi campi attuali. Tre modalità: 'summary' (predefinita, ≤500 token: la scheda, la sua ultima ricevuta, i conteggi), 'decisions' (ogni decisione registrata su di essa, compresi i verdetti e i loro motivi: il motivo di una rilavorazione sopravvive qui anche dopo che un’accettazione successiva sovrascrive la scheda), 'full' (il registro grezzo, limitato a 100 eventi, e lo dice). Esiste perché un log di audit è troppo prolisso da leggere direttamente, e la riga dell’attività contiene sempre e solo l’ultimo verdetto.Lettura
trash_taskSposta un’attività nel cestino della tua bacheca Weft. Recuperabile per 30 giorni con restore_task, dopodiché un job pianificato la elimina definitivamente.Rimozione
restore_taskRecupera un’attività dal cestino entro 30 giorni dall’eliminazione. L’attività torna sulla bacheca dov’era, intatta, così chi fonda da solo non perde mai lavoro per un’eliminazione accidentale.Scrittura
archive_done_tasksSvuota la colonna Done: ogni attività che contiene lascia la bacheca e va in archivio, sempre trovabile con search/fetch e sempre visibile nella cronologia del suo sprint, mai eliminata. Chiudere uno sprint archivia automaticamente le sue attività finite; questo si occupa del resto. Prende l’intera colonna in una sola chiamata, senza conteggio e senza modo di tornare indietro dalla superficie MCP (restore_task ripristina dal cestino, non dall’archivio), ed è per questo che è segnato come distruttivo: un client dovrebbe chiedere conferma all’utente prima di chiamarlo.Rimozione
list_projectsElenca i progetti della bacheca: contesti leggeri (una startup, un cliente, il personale) a cui può appartenere un’attività. Esclude i progetti archiviati, a meno che non sia impostato includeArchived.Lettura
create_projectCrea un contesto di progetto. Il nome è unico per bacheca; il colore di default è scelto a rotazione da una tavolozza; url è il sito web del progetto, la cui favicon compare sulle schede delle attività.Scrittura
update_projectRinomina un progetto, ne cambia il colore o l’url del sito, oppure lo archivia o lo ripristina dall’archivio. I progetti archiviati spariscono dai selettori; le loro attività mantengono il collegamento.Scrittura
list_sprintsElenca tutti gli sprint dell’utente (pianificati, attivi, completati, archiviati), così chi fonda da solo o un agente può rivedere la cronologia degli sprint e lo stato attuale senza aprire l’app.Lettura
get_active_sprintRestituisce lo sprint attualmente attivo, o null se non ce n’è nessuno in corso, così chi fonda da solo o un agente può controllare l’obiettivo attuale senza aprire l’app.Lettura
create_sprintCrea un nuovo sprint in stato "planned" sulla tua bacheca Weft, pronto da pianificare con un obiettivo e delle date. Usa start_sprint a parte quando sei pronto a iniziare.Scrittura
start_sprintPorta uno sprint pianificato allo stato attivo. Può essere attivo un solo sprint alla volta, su ogni piano: se un altro sprint è in corso, la chiamata fallisce e lo nomina; chiudi prima quello sprint, poi riprova.Scrittura
complete_sprintChiude lo sprint attivo. Le sue attività finite vengono archiviate nella cronologia dello sprint: fuori dalla colonna Done della bacheca, ancora cercabili e visibili nella pagina dello sprint. Le attività non finite restano sulla bacheca, collegate allo sprint. Non si può annullare via MCP: i client dovrebbero chiedere conferma quando l’intenzione è ambigua.Rimozione
add_task_to_sprintAssegna un’attività esistente a uno sprint, così compare nel perimetro e nel burndown di quello sprint. Idempotente: chiamarlo due volte non ha effetti in più, quindi si può riprovare senza rischi.Scrittura
remove_task_from_sprintScollega un’attività dal suo sprint attuale senza eliminarla: l’attività resta sulla bacheca nella sua colonna, semplicemente non fa più parte di quello sprint né del suo burndown.Scrittura

Domande

Cos’è un server MCP kanban?

Un server MCP (Model Context Protocol) che espone una bacheca kanban come strumenti che un assistente IA può chiamare: elencare le colonne, leggere le schede, creare una scheda, spostarla in Doing o Done. Quello di Weft è ospitato, quindi aggiungi un URL invece di far girare un processo sulla tua macchina.

Devo installare o eseguire qualcosa?

No. Aggiungi https://letsweft.com/api/mcp al tuo client IA e accedi con OAuth. I client senza OAuth usano un token di accesso personale da Impostazioni → Token di accesso.

È gratis?

Sì, per 50 attività e 200 chiamate IA al mese. Pro toglie i limiti per 7 $ per postazione al mese o 60 $ per postazione all’anno.

Funziona con ChatGPT Free?

Sì. Weft è nella Plugin directory di ChatGPT e funziona su ogni piano ChatGPT, Free compreso. Aggiungere un URL MCP diretto in ChatGPT è una funzione di Business, Enterprise ed Edu, ma per Weft non ti serve.

Due agenti possono condividere una bacheca?

Sì, la bacheca serve proprio a questo. Ogni agente prende in carico una scheda con start_task prima di lavorarci, così non prendono la stessa scheda, e ogni scheda mostra se l’ha creata o finita un’IA o una persona.

In cosa si differenzia da un server MCP kanban locale?

I server MCP kanban open source girano sulla tua macchina e salvano la bacheca in un file o in un database locale, quindi la vedono solo gli agenti su quella macchina. Weft è una bacheca condivisa e ospitata: le stesse schede in ChatGPT, Claude, Cursor, Codex, nella web app e nelle app iOS e Android, per te e per il tuo team.

Correlati