Serwer MCP kanban dla ChatGPT, Claude, Cursora i Codexa
Autor: Andrei Finogeev, założyciel Weft ·
Weft to hostowana tablica kanban — Backlog, Todo, Doing, Done, z opcjonalnymi sprintami — a jej serwer MCP działa pod adresem https://letsweft.com/api/mcp. Dodaj ten URL do swojego klienta AI i zaloguj się raz przez OAuth; niczego nie trzeba instalować ani uruchamiać lokalnie. Od tej chwili asystent czyta tablicę, tworzy i przesuwa karty, przejmuje kartę, zanim zacznie nad nią pracować, żeby dwóch agentów nigdy nie wzięło tej samej, raportuje postęp, pyta cię, gdy decyzja należy do ciebie, i zamyka kartę z opisem tego, co zrobił. Za darmo do 50 zadań i 200 wywołań AI miesięcznie.
https://letsweft.com/api/mcpStreamable HTTP · OAuth albo osobisty token dostępu · narzędzia: 32
Dodaj go do swojego klienta AI
ChatGPT
Otwórz Weft w ChatGPT — albo skonfiguruj ręcznie:
- 1Otwórz Plugins w panelu bocznym ChatGPT — albo Settings → Plugins.
- 2Wyszukaj „Weft” i otwórz wpis.
- 3Kliknij „Connect” i przejrzyj, do czego Weft ma dostęp.
- 4Zaloguj się kontem Weft w okienku, które się otworzy.
Wspomnij wtyczkę przez @ w dowolnym czacie: „@Weft co mam na tablicy?” — albo wybierz Weft z menu +. Jeśli pominąłeś konfigurację, ChatGPT sam zaproponuje podłączenie na miejscu.
Claude Desktop
- 1Otwórz Claude Desktop → Settings → Connectors.
- 2Kliknij „Add custom connector”.
- 3Wklej poniższy adres MCP Weft i zapisz.
- 4Dokończ OAuth w oknie przeglądarki, które się otworzy.
Zacznij nowy czat i zapytaj: „co mam na tablicy Weft?”. Claude pobierze stan tablicy przez konektor Weft.
Claude Code
claude mcp add --transport http weft https://letsweft.com/api/mcpUruchom `claude` w dowolnym projekcie i zapytaj: „co mam na tablicy?”. Za pierwszym razem otworzy się okno przeglądarki, żeby dokończyć OAuth.
Cursor
Dodaj do Cursora — albo skonfiguruj ręcznie:
{
"mcpServers": {
"weft": {
"url": "https://letsweft.com/api/mcp"
}
}
}Otwórz Cursor → Settings → MCP. Serwer „weft” powinien pojawić się z zieloną kontrolką po dokończeniu OAuth.
Codex CLI
[mcp_servers.weft]
url = "https://letsweft.com/api/mcp"Uruchom `codex mcp login weft`, zaloguj się w przeglądarce, potem odpal `codex` i zapytaj: „co mam na tablicy?”. `/mcp` pokazuje podłączony serwer i jego narzędzia.
VS Code
Zainstaluj rozszerzenie Weft — albo skonfiguruj ręcznie:
{
"servers": {
"weft": {
"type": "http",
"url": "https://letsweft.com/api/mcp"
}
}
}Otwórz czat, przestaw tryb na Agent i zapytaj: „co mam na tablicy?”. Za pierwszym razem otworzy się okno przeglądarki z OAuth. «MCP: List Servers» powinno pokazać weft jako Running.
Windsurf
- 1Otwórz Windsurf → Settings → Cascade → MCP servers.
- 2Kliknij „Add server” i wybierz Remote (HTTP).
- 3Wklej poniższy adres MCP Weft i zapisz.
- 4Dokończ OAuth w oknie przeglądarki, które się otworzy.
Otwórz Cascade i zapytaj: „co mam na tablicy?”. Cascade oznacza odpowiedzi, w których użył serwera Weft.
Gemini CLI
gemini extensions install https://github.com/AndreiFinogeev/weft-gemini-extensionUruchom `gemini` i zapytaj: „co mam na tablicy weft?”. Przy pierwszym użyciu otworzy się przeglądarka na OAuth. `gemini extensions list` powinno pokazać „weft”.
Zbudowany dla agentów, nie tylko dla ciebie
Przejęcia zamiast kolizji
start_task zakłada na kartę dzierżawę, zanim agent zacznie nad nią pracować. Drugi agent, który prosi o pracę, dostaje inną kartę, a karta, której agent zamilkł, znów jest do wzięcia, gdy dzierżawa wygaśnie.
Postęp i potwierdzenia
report_progress podtrzymuje przejęcie, dopóki agent pracuje; complete_task zamyka kartę z opisem tego, co zrobiono, czego nie zrobiono, oraz linkami, które możesz sprawdzić.
Pytania czekają na ciebie
request_input wrzuca pytanie z wariantami do twojej Skrzynki — w przeglądarce i na telefonie — zamiast pozwolić agentowi zgadywać w sprawie, o której możesz zdecydować tylko ty.
Twoja uwaga wyznacza tempo
Gdy na twój przegląd czeka za dużo ukończonej pracy, agenci przestają zaczynać nowe karty. To kanbanowy limit pracy w toku, zastosowany do ciebie.
Ty decydujesz, co może każda AI
Daj każdemu podłączonemu asystentowi pełny dostęp, zapis albo tylko odczyt i odłącz go jednym kliknięciem. Usunięte karty trafiają do kosza, a nie od razu w niebyt.


Narzędzia (32)
Każde narzędzie deklaruje, czy tylko czyta, zapisuje, czy coś usuwa, więc twój klient wie, kiedy najpierw zapytać ciebie.
| Narzędzie | Co robi | Rodzaj |
|---|---|---|
| search | Wyszukiwanie po słowach kluczowych w zadaniach, sprintach, decyzjach i notatkach pamięci. Zwraca do 50 uszeregowanych wyników {id, title, url}, których identyfikatory z przedrostkiem rodzaju można podać do fetch. | Odczyt |
| fetch | Pobiera pełną treść pojedynczego wyniku wyszukiwania — tytuł, reprezentację tekstową, URL źródła i ustrukturyzowane metadane. Przyjmuje identyfikator z przedrostkiem zwrócony przez search. | Odczyt |
| initialize_board | Tworzy na twojej tablicy Weft domyślne kolumny Backlog, Todo, Doing i Done, jeśli żadnych nie ma — konfiguracja jednym wywołaniem, zanim agent AI zacznie zarządzać zadaniami. Idempotentne. | Zapis |
| get_board_state | Zwraca zwięzły przegląd tablicy Scrumban użytkownika: kolumny, aktywny sprint, Doing, zadania po terminie i ostatnio zamknięte, około 30 razy mniejszy niż pełny zrzut. | Odczyt |
| list_columns | Wyświetla wszystkie kolumny tablicy po kolei — id, nazwę i pozycję każdej, żeby agent wiedział dokładnie, dokąd można przenieść zadanie. | Odczyt |
| list_tasks | Zwraca zadania uwierzytelnionego użytkownika, opcjonalnie filtrowane według kolumny, sprintu, projektu (nazwa lub id), twórcy (człowiek czy AI) albo wykonawcy (assignee). | Odczyt |
| create_task | Tworzy nowe zadanie na tablicy użytkownika. Trafia do Backlogu, jeśli nie podano kolumny. Domyślny priorytet to średni. Używane, gdy użytkownik prosi o dodanie zadania. | Zapis |
| bulk_create_tasks | Tworzy do 1000 zadań w jednym atomowym wywołaniu — import eksportów z Linear/Jira/Notion/Trello albo dowolnej listy 3+ zadań, zużywając z limitu tylko jedno wywołanie AI. | Zapis |
| update_task | Zmienia pola istniejącego zadania. Zmieniane są tylko przekazane pola; pominięte zostają bez zmian — z jednym wyjątkiem: agentowi odmawia się wyczyszczenia requiresReview, a odmowa obejmuje całą zmianę. | Zapis |
| move_task | Przenosi zadanie do innej kolumny i na inną pozycję. Przeniesienie do kolumny z semantic='doing' uruchamia pomiar czasu cyklu; przeniesienie do semantic='done' zapisuje czas ukończenia. | Zapis |
| start_task | AI wywołuje to w chwili, gdy zaczyna wykonywać zadanie — karta przechodzi do Doing, więc użytkownik i każdy inny podłączony klient widzą, że jest w toku (i nie wezmą jej drugi raz). Uruchamia pomiar czasu cyklu; nieprzypisane zadanie przejmuje wywołujący agent (istniejący wykonawca nigdy nie jest nadpisywany). Id kolumny nie jest potrzebne. | Zapis |
| report_progress | Mówi, że nadal pracujesz. Przejęcie zadania wygasa, jeśli klient milknie, a to je odnawia. Bez sygnału życia długo trwające zadanie jest traktowane jako porzucone i oferowane komuś innemu — celowo, bo agent, który padnie w trakcie, niczego nie zgłosi, więc cisza jest jedynym sygnałem, jaki ma tablica. | Zapis |
| request_input | Zadaje człowiekowi pytanie, o którym może zdecydować tylko on, i czeka, nie tracąc przejęcia zadania. Jeśli człowiek jest przy swoim kliencie, pojawia się tam formularz, a odpowiedź wraca w tym samym wywołaniu — agent kontynuuje w tym samym kontekście, z tym samym przejęciem. Jeśli go nie ma, wywołanie wraca jako zaparkowane, a pytanie czeka w jego kolejce; odpowiedź dociera do agenta przy następnym start_task albo get_my_work. Do spraw nieodwracalnych i naprawdę niejednoznacznych, nie do „czy mogę kontynuować?” — każde pytanie zużywa ten sam budżet uwagi, który ogranicza nową pracę. | Zapis |
| submit_answer | Przynosi to, co człowiek odpowiedział na pytanie zadane przez agenta, i oddaje pracę z tym samym runId i dzierżawą, żeby była kontynuowana w tej samej próbie, a nie zaczynana od zera. Oznaczane jako przekazane, nigdy jako działanie samego człowieka — odpowiedź przyniesiona przez agenta i kliknięcie człowieka to różne rodzaje dowodu, a tablica trzyma je osobno. Jeśli na pytanie już odpowiedziano w aplikacji Weft, zamiast błędu zwracana jest ta odpowiedź: ważne, żeby agent kontynuował z właściwą. | Zapis |
| get_my_work | Pyta, co robić dalej, zamiast czytać całą tablicę i zgadywać. Zwraca zadania przypisane do tego klienta, to, co już czeka na człowieka, i czy w kolejce uwagi jest miejsce. Podaje też, co jest po terminie i co ma termin lub start w ciągu tygodnia, więc agent dowiaduje się o terminie bez pytania. Gdy kolejka jest pełna, sensownym ruchem jest pomoc w jej rozładowaniu, a nie zaczynanie czegoś nowego — i to narzędzie mówi o tym, zanim zostanie wybrane zadanie. | Odczyt |
| complete_task | AI wywołuje to, gdy praca jest naprawdę skończona — karta przechodzi do Done z zapisanym czasem ukończenia, a opcjonalny wynik (co zrobiono, gdzie jest rezultat) zostaje dopisany do karty jako notatka „Outcome (AI, date)”. Id kolumny nie jest potrzebne. Praca oznaczona jako wymagająca ciebie NIE trafia do Done: idzie do twojej kolejki z dołączonym potwierdzeniem, a jeśli agent napisał, co zrobi dalej, akceptacja zatwierdza dokładnie ten krok i oddaje go agentowi. Jeśli zadanie ma plan weryfikacji, serwer wykonuje jego sprawdzenia od razu — pobiera URL, szuka cytatu, porównuje hash: plan executable/state_delta, którego wszystkie blokujące sprawdzenia przejdą, zamyka zadanie zweryfikowane przez serwer; nieudane blokujące sprawdzenie trzyma kartę poza Done i pokazuje agentowi, co serwer zaobserwował. | Zapis |
| record_decision | Jedno narzędzie, dwa zastosowania, jedna tabela zapisów. (1) Przekazuje werdykt, który wydałeś w rozmowie w sprawie ukończonej pracy czekającej na ciebie — zatwierdzone, do poprawki, porzucić, później — usuwając kartę z kolejki przeglądu; wpis jest zapisywany jako przekazany, a nie jako twoje działanie w aplikacji, i ta różnica jest celowo widoczna. (2) Zapisuje samodzielną decyzję wartą zapamiętania — „wybraliśmy Neon zamiast Supabase”, wyciągniętą lekcję — jako niezmienny zapis w stylu MADR-lite z rozważonymi opcjami i warunkiem, przy którym warto do niej wrócić. Zapisów nigdy się nie edytuje: nowa decyzja z supersedesId zastępuje starą, a stara pozostaje do przeczytania w brzmieniu z dnia, w którym ją podjęto. To właśnie te zapisy get_context podaje każdemu agentowi w przyszłym tygodniu. | Zapis |
| get_context | Aktualne decyzje i lekcje przestrzeni roboczej, spakowane do budżetu tokenów, od najnowszych — to, co agent powinien przeczytać, zanim zacznie cokolwiek nietrywialnego. Wyprowadzane z zapisanych decyzji, a nie pisane jako dokument, więc nie może się zdezaktualizować: zastąpiona decyzja wypada w chwili zapisania jej następczyni, a każda linia ma datę. Zawęź zakres do projektu albo zadania; linie, które nie mieszczą się w budżecie, są liczone, nigdy po cichu ukrywane. | Odczyt |
| get_task_history | Co działo się z zadaniem, a nie tylko jego obecne pola. Trzy tryby: 'summary' (domyślny, ≤500 tokenów — karta, jej najnowsze potwierdzenie, liczniki), 'decisions' (każda decyzja zapisana w jego sprawie, łącznie z werdyktami i ich uzasadnieniem — powód poprawki przetrwa tu nawet wtedy, gdy późniejsza akceptacja nadpisze kartę), 'full' (surowy dziennik, ograniczony do 100 zdarzeń, o czym narzędzie informuje). Istnieje, bo log audytowy jest zbyt rozgadany, żeby czytać go bezpośrednio, a wiersz zadania przechowuje zawsze tylko najnowszy werdykt. | Odczyt |
| trash_task | Przenosi zadanie do kosza na twojej tablicy Weft. Można je odzyskać przez 30 dni za pomocą restore_task, potem zaplanowane zadanie usuwa je trwale. | Usuwa |
| restore_task | Odzyskuje zadanie z kosza w ciągu 30 dni od jego usunięcia. Zadanie wraca na tablicę tam, gdzie było, w całości — więc założyciel działający solo nigdy nie traci pracy przez przypadkowe usunięcie. | Zapis |
| archive_done_tasks | Czyści kolumnę Done: każde zadanie z niej opuszcza tablicę i trafia do archiwum — nadal można je znaleźć przez search/fetch i nadal widać je w historii jego sprintu, nigdy nie jest usuwane. Zakończenie sprintu automatycznie archiwizuje ukończone zadania tego sprintu; to narzędzie zajmuje się resztą. Bierze całą kolumnę w jednym wywołaniu, bez licznika i bez drogi powrotu z poziomu MCP — restore_task przywraca z kosza, nie z archiwum — dlatego jest oznaczone jako destrukcyjne: klient powinien potwierdzić z użytkownikiem, zanim je wywoła. | Usuwa |
| list_projects | Wyświetla projekty tablicy — lekkie konteksty (startup, klient, sprawy osobiste), do których może należeć zadanie. Pomija zarchiwizowane projekty, chyba że ustawiono includeArchived. | Odczyt |
| create_project | Tworzy kontekst projektu. Nazwa jest unikalna w obrębie tablicy; kolor domyślnie wybierany jest rotacyjnie z palety; url to strona projektu, której favicon widać na kartach zadań. | Zapis |
| update_project | Zmienia nazwę projektu, jego kolor albo url strony, albo go archiwizuje/przywraca z archiwum. Zarchiwizowane projekty znikają z list wyboru; ich zadania zachowują powiązanie. | Zapis |
| list_sprints | Wyświetla wszystkie sprinty użytkownika (zaplanowane, aktywne, zakończone, zarchiwizowane), żeby założyciel działający solo albo agent mógł przejrzeć historię sprintów i bieżący stan bez otwierania aplikacji. | Odczyt |
| get_active_sprint | Zwraca aktualnie aktywny sprint albo null, jeśli żaden sprint nie trwa — żeby założyciel działający solo albo agent mógł sprawdzić bieżący cel bez otwierania aplikacji. | Odczyt |
| create_sprint | Tworzy nowy sprint w statusie „planned” na twojej tablicy Weft, gotowy do zaplanowania z celem i datami. Gdy zechcesz zacząć pracę, użyj osobno start_sprint. | Zapis |
| start_sprint | Zmienia status zaplanowanego sprintu na aktywny. W każdym planie aktywny może być jeden sprint naraz — jeśli trwa inny sprint, wywołanie się nie powiedzie i poda jego nazwę; najpierw zakończ tamten sprint, potem spróbuj ponownie. | Zapis |
| complete_sprint | Kończy aktywny sprint. Jego ukończone zadania są archiwizowane w historii sprintu — znikają z kolumny Done tablicy, ale nadal można je wyszukać i widać je na stronie sprintu. Nieukończone zadania zostają na tablicy, przypisane do sprintu. Nie da się tego cofnąć przez MCP — klienci powinni prosić o potwierdzenie, gdy intencja jest niejasna. | Usuwa |
| add_task_to_sprint | Przypisuje istniejące zadanie do sprintu, żeby pojawiło się w jego zakresie i wykresie burndown. Idempotentne — dwukrotne wywołanie nie daje dodatkowego efektu, więc można bezpiecznie ponawiać. | Zapis |
| remove_task_from_sprint | Odłącza zadanie od bieżącego sprintu bez usuwania go — zadanie zostaje na tablicy w swojej kolumnie, po prostu nie należy już do zakresu tego sprintu ani jego wykresu burndown. | Zapis |
Pytania
Czym jest serwer MCP kanban?
Serwerem MCP (Model Context Protocol), który udostępnia tablicę kanban jako narzędzia, które asystent AI może wywoływać: wylistować kolumny, czytać karty, utworzyć kartę, przenieść ją do Doing albo Done. Serwer Weft jest hostowany, więc dodajesz URL, zamiast uruchamiać proces na swoim komputerze.
Czy muszę coś instalować albo uruchamiać?
Nie. Dodaj https://letsweft.com/api/mcp do swojego klienta AI i zaloguj się przez OAuth. Klienci bez OAuth używają osobistego tokenu dostępu z Ustawienia → Tokeny dostępu.
Czy to jest darmowe?
Tak, do 50 zadań i 200 wywołań AI miesięcznie. Pro znosi limity za $7 za stanowisko miesięcznie albo $60 za stanowisko rocznie.
Czy działa z ChatGPT Free?
Tak. Weft jest w „Plugin directory” ChatGPT i działa w każdym planie ChatGPT, także Free. Dodanie surowego URL-a MCP w ChatGPT to funkcja Business, Enterprise i Edu, ale dla Weft jej nie potrzebujesz.
Czy dwóch agentów może dzielić jedną tablicę?
Tak — po to jest ta tablica. Każdy agent przejmuje kartę przez start_task, zanim zacznie nad nią pracować, więc nie biorą tej samej karty, a każda karta pokazuje, czy utworzyło ją albo ukończyło AI, czy człowiek.
Czym to się różni od lokalnego serwera MCP kanban?
Otwartoźródłowe serwery MCP kanban działają na twoim komputerze i przechowują tablicę w lokalnym pliku lub bazie danych, więc widzą ją tylko agenci na tym komputerze. Weft to wspólna, hostowana tablica: te same karty w ChatGPT, Claude, Cursorze, Codexie, aplikacji webowej i aplikacjach na iOS i Androida, dla ciebie i twojego zespołu.