En kanban MCP-server for ChatGPT, Claude, Cursor og Codex

Av Andrei Finogeev, grunnlegger av Weft ·

Weft er en driftet kanban-tavle — Backlog, Todo, Doing, Done, med valgfrie sprinter — og MCP-serveren ligger på https://letsweft.com/api/mcp. Legg den URL-en til AI-klienten din og logg inn én gang med OAuth; ingenting å installere eller kjøre lokalt. Fra da av leser assistenten tavlen, oppretter og flytter kort, gjør krav på et kort før den jobber med det så to agenter aldri tar det samme, rapporterer fremdrift, spør deg når en avgjørelse er din, og lukker kortet med hva den gjorde. Gratis for 50 oppgaver og 200 AI-kall i måneden.

URL til MCP-serveren
https://letsweft.com/api/mcp

Streamable HTTP · OAuth, eller et personlig tilgangstoken · 32 verktøy

Legg den til i AI-klienten din

ChatGPT

Åpne Weft i ChatGPT — eller konfigurer den manuelt:

  1. 1Åpne Plugins i ChatGPT-sidepanelet — eller Settings → Plugins.
  2. 2Søk etter «Weft» og åpne oppføringen.
  3. 3Klikk «Connect» og se gjennom hva Weft får tilgang til.
  4. 4Logg inn med Weft-kontoen din i vinduet som åpnes.

@-omtal pluginen i enhver chat: «@Weft hva ligger på tavlen min?» — eller velg Weft fra +-menyen. Hoppet du over oppsettet, tilbyr ChatGPT å koble den til direkte.

Claude Desktop

  1. 1Åpne Claude Desktop → Settings → Connectors.
  2. 2Klikk «Add custom connector».
  3. 3Lim inn Weft-MCP-adressen nedenfor og lagre.
  4. 4Fullfør OAuth i nettleservinduet som åpnes.

Start en ny chat og spør: «hva ligger på Weft-tavlen min?». Claude henter tavlens tilstand via Weft-koblingen.

Claude Code

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

Kjør `claude` i et hvilket som helst prosjekt og spør: «hva ligger på tavlen min?». Et nettleservindu åpnes for OAuth første gang.

Cursor

Legg til i Cursor — eller konfigurer den manuelt:

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

Åpne Cursor → Settings → MCP. Serveren «weft» skal vises med en grønn indikator etter at du har fullført OAuth.

Codex CLI

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

Kjør `codex mcp login weft` for å logge inn gjennom nettleseren, start så `codex` og spør: «hva ligger på tavlen min?». `/mcp` lister den tilkoblede serveren og verktøyene dens.

VS Code

Installer Weft-utvidelsen — eller konfigurer den manuelt:

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

Åpne Chat, bytt modusvelgeren til Agent, og spør: «hva ligger på tavlen min?». Et nettleservindu åpnes for OAuth første gang. «MCP: List Servers» skal vise weft som Running.

Windsurf

  1. 1Åpne Windsurf → Settings → Cascade → MCP servers.
  2. 2Klikk «Add server» og velg Remote (HTTP).
  3. 3Lim inn Weft-MCP-adressen nedenfor og lagre.
  4. 4Fullfør OAuth i nettleservinduet som åpnes.

Åpne Cascade og spør: «hva ligger på tavlen min?». Cascade merker svar som brukte Weft-serveren.

Gemini CLI

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

Kjør `gemini` og spør: «hva ligger på weft-tavlen min?». En nettleser åpnes for OAuth ved første bruk. `gemini extensions list` skal vise «weft».

Bygget for agenter, ikke bare for deg

Krav, ikke kollisjoner

start_task legger en leieavtale på et kort før en agent jobber med det. En annen agent som ber om arbeid, får et annet kort, og et kort der agenten har gått stille, tilbys på nytt når leieavtalen går ut.

Fremdrift og kvitteringer

report_progress holder kravet i live mens agenten jobber; complete_task lukker kortet med hva som ble gjort, hva som ikke ble det, og lenker du kan sjekke.

Spørsmål venter på deg

request_input legger et spørsmål med alternativer i Innboksen din — på nettet og på telefonen — i stedet for å la agenten gjette på noe bare du kan avgjøre.

Oppmerksomheten din setter tempoet

Når for mye ferdig arbeid venter på gjennomgangen din, slutter agentene å starte nye kort. Det er kanbans grense for arbeid i gang, brukt på deg.

Du bestemmer hva hver AI får gjøre

Gi hver tilkoblede assistent full tilgang, skrivetilgang eller lesetilgang, og koble den fra med ett klikk. Slettede kort havner i papirkurven, de forsvinner ikke rett ut av verden.

Weft-tavle på en telefon, Doing-kolonnen: tre oppgaver en AI-assistent har plukket opp, hver merket AI
Assistentene plukker opp neste oppgave; hvert kort viser hvem som jobber med det.
En ferdig Weft-oppgave opprettet av AI, med resultatet assistenten registrerte: hva den fikset, og at 40 testkjøringer gikk gjennom
Når en assistent er ferdig, legger den igjen en kvittering: hva den gjorde og hvordan den sjekket det.

De 32 verktøyene

Hvert verktøy oppgir om det bare leser, skriver eller fjerner noe, så klienten din vet når den skal spørre deg først.

VerktøyHva det gjørType
searchSøk med nøkkelord i oppgaver, sprinter, beslutninger og minnenotater. Returnerer opptil 50 rangerte {id, title, url}-treff der id-ene med typeprefiks kan brukes videre i fetch.Leser
fetchHent hele innholdet i ett søketreff — tittel, tekstrepresentasjon, kilde-URL og strukturerte metadata. Tar id-en med prefiks som search returnerte.Leser
initialize_boardOppretter standardkolonnene Backlog, Todo, Doing og Done på Weft-tavlen din hvis det ikke finnes noen — oppsettet i ett kall før en AI-agent styrer oppgaver. Idempotent.Skriver
get_board_stateReturnerer en kompakt oversikt over brukerens Scrumban-tavle: kolonner, aktiv sprint, Doing, forfalte oppgaver og nylig lukkede, omtrent 30 ganger mindre enn et fullt øyeblikksbilde.Leser
list_columnsLister alle kolonnene på tavlen i rekkefølge — id, navn og posisjon for hver, så en agent vet nøyaktig hvor en oppgave kan flyttes.Leser
list_tasksReturnerer oppgavene til den autentiserte brukeren, eventuelt filtrert etter kolonne, sprint, prosjekt (navn eller id), oppretter (menneske eller AI) eller ansvarlig (den som utfører).Leser
create_taskOppretter en ny oppgave på brukerens tavle. Havner i Backlog hvis ingen kolonne er angitt. Prioritet er medium som standard. Brukes når brukeren ber om å legge til en oppgave.Skriver
bulk_create_tasksOppretter opptil 1000 oppgaver i ett atomisk kall — importer eksporter fra Linear/Jira/Notion/Trello eller en hvilken som helst liste med 3+ oppgaver, og bruk bare ett AI-kall av kvoten.Skriver
update_taskEndrer feltene i en eksisterende oppgave. Bare feltene du sender, endres; utelatte felt beholdes — med ett unntak: å fjerne requiresReview avvises for en agent, og avvisningen gjelder hele endringen.Skriver
move_taskFlytter en oppgave til en annen kolonne og posisjon. Flytting til en kolonne med semantic='doing' starter måling av syklustid; flytting til semantic='done' registrerer tidspunktet for fullføring.Skriver
start_taskAI-en kaller dette i det øyeblikket den begynner å utføre en oppgave — kortet flyttes til Doing, så brukeren og alle andre tilkoblede klienter ser at den er i gang (og ikke plukker den opp to ganger). Starter måling av syklustid; en oppgave uten ansvarlig blir tatt av agenten som kaller (en eksisterende ansvarlig overstyres aldri). Ingen kolonne-id trengs.Skriver
report_progressSi fra at du fortsatt jobber. Et krav på en oppgave utløper hvis klienten går stille, og dette fornyer det. Uten et hjerteslag regnes en langvarig oppgave som forlatt og tilbys noen andre — med vilje, fordi en agent som dør midt i en kjøring ikke rapporterer noe, så stillhet er det eneste signalet tavlen har.Skriver
request_inputSpør personen om noe bare de kan avgjøre, og vent uten å miste kravet på oppgaven. Hvis de sitter ved klienten sin, dukker det opp et skjema der, og svaret kommer tilbake i det samme kallet — agenten fortsetter i den samme konteksten, med det samme kravet. Hvis de er borte, returnerer kallet som parkert, og spørsmålet venter i køen deres; svaret når agenten ved neste start_task eller get_my_work. For det som ikke kan angres og det som virkelig er tvetydig, ikke for «kan jeg fortsette?» — hvert spørsmål bruker av det samme oppmerksomhetsbudsjettet som begrenser nytt arbeid.Skriver
submit_answerBringer tilbake det personen svarte på et spørsmål agenten stilte, og gir arbeidet tilbake med samme runId og leieavtale, så det fortsetter i det samme forsøket i stedet for å starte et kaldt. Merkes som videreformidlet, aldri som at personen handlet selv — et svar båret av en agent og et klikk gjort av et menneske er forskjellige typer bevis, og tavlen holder dem atskilt. Hvis spørsmålet allerede er besvart i Weft-appen, returneres det svaret i stedet for en feil: det som betyr noe, er at agenten fortsetter med det riktige.Skriver
get_my_workSpør hva du skal gjøre nå i stedet for å lese hele tavlen og gjette. Returnerer oppgavene som er tildelt denne klienten, hva som allerede venter på mennesket, og om oppmerksomhetskøen har plass. Den nevner også hva som er forfalt og hva som forfaller eller starter i løpet av uken, så en agent får høre om en frist uten å spørre. Når køen er full, er det nyttige trekket å hjelpe med å tømme den, ikke å starte noe nytt — og dette sier den før en oppgave velges.Leser
complete_taskAI-en kaller dette når arbeidet faktisk er ferdig — kortet flyttes til Done med tidspunktet for fullføring registrert, og det valgfrie resultatet (hva som ble gjort, hvor resultatet ligger) legges til på kortet som et notat «Outcome (AI, date)». Ingen kolonne-id trengs. Arbeid som er merket med at det trenger deg, flyttes IKKE til Done: det går til køen din med kvitteringen vedlagt, og hvis agenten sa hva den ville gjøre videre, godkjenner en aksept nøyaktig det steget og gir det tilbake til agenten. Hvis oppgaven har en verifiseringsplan, kjører serveren sjekkene akkurat her — henter URL-en, ser etter sitatet, sammenligner hashen: en executable/state_delta-plan der alle blokkerende sjekker består, lukkes som verifisert av serveren; en blokkerende sjekk som feiler, holder kortet ute av Done og viser agenten hva serveren observerte.Skriver
record_decisionEtt verktøy, to bruksområder, én registertabell. (1) Videreformidle en dom du ga i samtalen om ferdig arbeid som venter på deg — godkjent, send det tilbake, dropp det, senere — og fjern kortet fra gjennomgangskøen; oppføringen lagres som videreformidlet i stedet for som at du handlet i appen, og den forskjellen holdes synlig med vilje. (2) Registrere en frittstående beslutning som er verdt å huske — «valgte Neon fremfor Supabase», en lærdom — som en uforanderlig MADR-lite-oppføring med alternativene som ble veid og betingelsen for å ta den opp igjen. Oppføringer redigeres aldri: en ny beslutning med supersedesId erstatter en gammel, og den gamle forblir lesbar som det den sa den dagen den ble tatt. Disse oppføringene er det get_context gir tilbake til alle agenter neste uke.Skriver
get_contextArbeidsområdets gjeldende beslutninger og lærdommer, pakket inn i et tokenbudsjett, nyeste først — det en agent bør lese før den starter på noe ikke-trivielt. Avledet fra registrerte beslutninger i stedet for skrevet som et dokument, så det kan ikke bli utdatert: en erstattet beslutning faller ut i det øyeblikket erstatningen registreres, og hver linje har sin dato. Avgrens det til et prosjekt eller en oppgave for å snevre det inn; linjer som ikke får plass i budsjettet, telles, de skjules aldri i stillhet.Leser
get_task_historyHva som skjedde med en oppgave, ikke bare de nåværende feltene. Tre moduser: 'summary' (standard, ≤500 tokener — kortet, den siste kvitteringen, antall), 'decisions' (alle beslutninger registrert om den, inkludert dommer og begrunnelsene — begrunnelsen for omarbeid overlever her etter at en senere aksept overskriver kortet), 'full' (den rå journalen, begrenset til 100 hendelser, og det sies fra om det). Finnes fordi en revisjonslogg er for pratsom til å leses direkte, og oppgaveraden bare noen gang holder den siste dommen.Leser
trash_taskFlytter en oppgave til papirkurven på Weft-tavlen din. Kan gjenopprettes i 30 dager med restore_task, deretter sletter en planlagt jobb den for godt.Fjerner
restore_taskGjenoppretter en oppgave fra papirkurven innen 30 dager etter at den ble kastet. Oppgaven kommer tilbake til tavlen der den var, helt intakt — så en gründer som jobber alene, aldri mister arbeid på grunn av en utilsiktet sletting.Skriver
archive_done_tasksTømmer Done-kolonnen: alle oppgavene i den forlater tavlen og går til arkivet — fortsatt funnet av search/fetch og fortsatt vist i sprintens historikk, aldri slettet. Å fullføre en sprint arkiverer den sprintens ferdige oppgaver automatisk; dette tar seg av resten. Det tar hele kolonnen i ett kall, uten antall og uten vei tilbake fra MCP-flaten — restore_task gjenoppretter fra papirkurven, ikke fra arkivet — og derfor er det merket som destruktivt: en klient bør bekrefte med brukeren før den kaller det.Fjerner
list_projectsLister tavlens prosjekter — lette kontekster (en oppstartsbedrift, en kunde, personlig) som en oppgave kan høre til. Utelater arkiverte prosjekter med mindre includeArchived er satt.Leser
create_projectOppretter en prosjektkontekst. Navnet er unikt per tavle; fargen velges som standard fra en roterende palett; url er prosjektets nettsted, og faviconet derfra vises på oppgavekortene.Skriver
update_projectGi nytt navn til et prosjekt, endre farge eller nettsted-URL, eller arkiver/hent det fram igjen. Arkiverte prosjekter forsvinner fra velgerne; oppgavene beholder tilknytningen.Skriver
list_sprintsLister alle sprinter (planlagte, aktive, fullførte, arkiverte) for brukeren, så en gründer som jobber alene eller en agent kan se gjennom sprinthistorikken og gjeldende status uten å åpne appen.Leser
get_active_sprintReturnerer den aktive sprinten, eller null hvis ingen sprint pågår — så en gründer som jobber alene eller en agent kan sjekke det gjeldende målet uten å åpne appen.Leser
create_sprintOppretter en ny sprint med status «planned» på Weft-tavlen din, klar til å planlegges med et mål og datoer. Bruk start_sprint separat når du er klar til å begynne å jobbe.Skriver
start_sprintSetter en planlagt sprint til aktiv status. Én sprint kan være aktiv om gangen, på alle planer — hvis en annen sprint pågår, feiler kallet og navngir den; fullfør den sprinten først, og prøv igjen.Skriver
complete_sprintAvslutter den aktive sprinten. De ferdige oppgavene arkiveres i sprintens historikk — ut av tavlens Done-kolonne, fortsatt søkbare og vist på sprintens side. Uferdige oppgaver blir på tavlen, knyttet til sprinten. Kan ikke angres via MCP — klienter bør bekrefte når hensikten er uklar.Fjerner
add_task_to_sprintKnytter en eksisterende oppgave til en sprint, så den vises i sprintens omfang og burndown. Idempotent — å kalle det to ganger har ingen ekstra effekt, så det er trygt å prøve på nytt.Skriver
remove_task_from_sprintKobler en oppgave fra den nåværende sprinten uten å slette den — oppgaven blir på tavlen i kolonnen sin, bare ikke lenger innenfor den sprinten eller dens burndown.Skriver

Spørsmål

Hva er en kanban MCP-server?

En MCP-server (Model Context Protocol) som gjør en kanban-tavle tilgjengelig som verktøy en AI-assistent kan kalle: liste opp kolonnene, lese kort, opprette et kort, flytte det til Doing eller Done. Wefts er driftet, så du legger til en URL i stedet for å kjøre en prosess på maskinen din.

Må jeg installere eller kjøre noe?

Nei. Legg https://letsweft.com/api/mcp til AI-klienten din og logg inn med OAuth. Klienter uten OAuth bruker et personlig tilgangstoken fra Innstillinger → Tilgangstokener.

Er det gratis?

Ja, for 50 oppgaver og 200 AI-kall i måneden. Pro fjerner grensene for $7 per plass i måneden, eller $60 per plass i året.

Fungerer det med ChatGPT Free?

Ja. Weft finnes i ChatGPTs Plugin directory og fungerer på alle ChatGPT-planer, Free inkludert. Å legge til en rå MCP-URL i ChatGPT er en funksjon i Business, Enterprise og Edu, men du trenger det ikke for Weft.

Kan to agenter dele én tavle?

Ja — det er det tavlen er til for. Hver agent gjør krav på et kort med start_task før den jobber med det, så de plukker ikke opp det samme kortet, og hvert kort viser om en AI eller en person opprettet eller fullførte det.

Hvordan skiller dette seg fra en lokal kanban MCP-server?

Kanban MCP-servere med åpen kildekode kjører på maskinen din og lagrer tavlen i en lokal fil eller database, så bare agentene på den maskinen ser den. Weft er en delt, driftet tavle: de samme kortene i ChatGPT, Claude, Cursor, Codex, nettappen og appene for iOS og Android, for deg og teamet ditt.

Relatert