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.
https://letsweft.com/api/mcpStreamable HTTP · OAuth o un token di accesso personale · 32 strumenti
Aggiungilo al tuo client IA
ChatGPT
Apri Weft in ChatGPT — oppure configuralo a mano:
- 1Apri Plugins nella barra laterale di ChatGPT — oppure Settings → Plugins.
- 2Cerca «Weft» e apri la scheda.
- 3Clicca «Connect» e controlla a cosa può accedere Weft.
- 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
- 1Apri Claude Desktop → Settings → Connectors.
- 2Clicca «Add custom connector».
- 3Incolla qui sotto l’URL MCP di Weft e salva.
- 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
claude mcp add --transport http weft https://letsweft.com/api/mcpEsegui `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:
{
"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
[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:
{
"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
- 1Apri Windsurf → Settings → Cascade → MCP servers.
- 2Clicca «Add server» e scegli Remote (HTTP).
- 3Incolla qui sotto l’URL MCP di Weft e salva.
- 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
gemini extensions install https://github.com/AndreiFinogeev/weft-gemini-extensionEsegui `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.


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.
| Strumento | Cosa fa | Tipo |
|---|---|---|
| search | Ricerca 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 |
| fetch | Recupera 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_board | Crea 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_state | Restituisce 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_columns | Elenca 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_tasks | Restituisce 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_task | Crea 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_tasks | Crea 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_task | Modifica 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_task | Sposta 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_task | L’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_progress | Dice 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_input | Chiede 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_answer | Riporta 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_work | Chiede 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_task | L’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_decision | Uno 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_context | Le 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_history | Cosa è 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_task | Sposta un’attività nel cestino della tua bacheca Weft. Recuperabile per 30 giorni con restore_task, dopodiché un job pianificato la elimina definitivamente. | Rimozione |
| restore_task | Recupera 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_tasks | Svuota 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_projects | Elenca 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_project | Crea 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_project | Rinomina 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_sprints | Elenca 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_sprint | Restituisce 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_sprint | Crea 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_sprint | Porta 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_sprint | Chiude 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_sprint | Assegna 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_sprint | Scollega 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.