Канбан MCP-сервер для ChatGPT, Claude, Cursor и Codex
Автор — Андрей Финогеев, основатель Weft ·
Weft — это размещённая канбан-доска (Backlog, Todo, Doing, Done и необязательные спринты), а её MCP-сервер находится по адресу https://letsweft.com/api/mcp. Добавь этот адрес в свой ИИ-клиент и войди один раз через OAuth; ничего не нужно устанавливать или запускать у себя. С этого момента ассистент читает доску, создаёт и двигает карточки, захватывает карточку перед работой, чтобы два агента никогда не взяли одну и ту же, докладывает прогресс, спрашивает тебя, когда решение за тобой, и закрывает карточку с описанием того, что сделал. Бесплатно до 50 задач и 200 вызовов ИИ в месяц.
https://letsweft.com/api/mcpStreamable HTTP · OAuth или персональный токен доступа · 32 инструментов
Добавь его в свой ИИ-клиент
ChatGPT
Открыть Weft в ChatGPT — или настрой вручную:
- 1Открой Plugins в боковой панели ChatGPT — или Settings → Plugins.
- 2Найди «Weft» и открой карточку.
- 3Нажми «Connect» и посмотри, к чему Weft получает доступ.
- 4Войди в свой аккаунт Weft во всплывшем окне.
Упомяни плагин через @ в любом чате: «@Weft что у меня на доске?» — или выбери Weft в меню +. Если ты пропустил настройку, ChatGPT предложит подключить его прямо на месте.
Claude Desktop
- 1Открой Claude Desktop → Settings → Connectors.
- 2Нажми «Add custom connector».
- 3Вставьте адрес MCP-эндпоинта Weft, указанный ниже, и сохраните.
- 4Пройдите OAuth в открывшемся окне браузера.
Начни новый чат и спроси: «что у меня на доске Weft?». Claude получит состояние доски через коннектор Weft.
Claude Code
claude mcp add --transport http weft https://letsweft.com/api/mcpЗапустите `claude` в любом проекте и спросите: «что у меня на доске?». В первый раз откроется окно браузера, чтобы пройти OAuth.
Cursor
Добавить в Cursor — или настрой вручную:
{
"mcpServers": {
"weft": {
"url": "https://letsweft.com/api/mcp"
}
}
}Открой Cursor → Settings → MCP. После прохождения OAuth сервер «weft» должен появиться там с зелёным индикатором.
Codex CLI
[mcp_servers.weft]
url = "https://letsweft.com/api/mcp"Выполните `codex mcp login weft` и войдите в браузере, затем запустите `codex` и спросите: «что у меня на доске?». Команда `/mcp` покажет подключённый сервер и его инструменты.
VS Code
Установить расширение Weft — или настрой вручную:
{
"servers": {
"weft": {
"type": "http",
"url": "https://letsweft.com/api/mcp"
}
}
}Открой чат, переключи режим на Agent и спроси: «что у меня на доске?». В первый раз откроется окно браузера для OAuth. «MCP: List Servers» должен показать weft как Running.
Windsurf
- 1Открой Windsurf → Settings → Cascade → MCP servers.
- 2Нажми «Add server» и выбери Remote (HTTP).
- 3Вставьте адрес MCP-эндпоинта Weft, указанный ниже, и сохраните.
- 4Пройдите OAuth в открывшемся окне браузера.
Открой Cascade и спроси: «что у меня на доске?». Cascade помечает ответы, в которых использовался сервер Weft.
Gemini CLI
gemini extensions install https://github.com/AndreiFinogeev/weft-gemini-extensionЗапустите `gemini` и спросите: «что у меня на доске weft?». При первом использовании откроется браузер для OAuth. `gemini extensions list` должна показать «weft».
Сделан для агентов, а не только для тебя
Захват вместо столкновений
start_task берёт карточку в аренду, прежде чем агент начнёт над ней работать. Второй агент, который просит работу, получит другую карточку, а карточку, чей агент замолчал, предложат снова, когда истечёт аренда.
Прогресс и квитанции
report_progress поддерживает захват, пока агент работает; complete_task закрывает карточку с описанием того, что сделано, что нет, и ссылками, которые можно проверить.
Вопросы ждут тебя
request_input кладёт вопрос с вариантами во Входящие — в вебе и на телефоне, — вместо того чтобы агент гадал там, где решить можешь только ты.
Темп задаёт твоё внимание
Когда твоей проверки ждёт слишком много готовой работы, агенты перестают начинать новые карточки. Это канбан-лимит незавершённой работы, применённый к тебе.
Ты решаешь, что можно каждому ИИ
Дай каждому подключённому ассистенту полный доступ, доступ на запись или только на чтение и отключай его одним щелчком. Удалённые карточки попадают в корзину, а не исчезают сразу.


32 инструментов
Каждый инструмент объявляет, только ли он читает, пишет или что-то удаляет, — так твой клиент знает, когда сначала спросить тебя.
| Инструмент | Что делает | Тип |
|---|---|---|
| search | Поиск по ключевым словам среди задач, спринтов, решений и заметок памяти. Возвращает до 50 ранжированных результатов {id, title, url}; их id с префиксом типа передаются в fetch. | Чтение |
| fetch | Получить полное содержимое одного результата поиска — заголовок, текстовое представление, url источника и структурированные метаданные. Принимает id с префиксом, который вернул search. | Чтение |
| initialize_board | Создать на доске Weft стандартные колонки Backlog, Todo, Doing и Done, если их нет, — настройка одним вызовом, прежде чем ИИ-агент начнёт вести задачи. Идемпотентно. | Запись |
| get_board_state | Вернуть сжатую сводку по Scrumban-доске пользователя: колонки, активный спринт, Doing, просроченные задачи и недавно закрытые — примерно в 30 раз меньше полного снимка. | Чтение |
| list_columns | Перечислить все колонки доски по порядку — id, название и позицию каждой, чтобы агент точно знал, куда можно передвинуть задачу. | Чтение |
| list_tasks | Вернуть задачи авторизованного пользователя, при желании с фильтром по колонке, спринту, проекту (название или id), создателю (человек или ИИ) или исполнителю. | Чтение |
| create_task | Создать новую задачу на доске пользователя. Если колонка не задана, задача попадает в Backlog. Приоритет по умолчанию — средний. Используется, когда пользователь просит добавить задачу. | Запись |
| bulk_create_tasks | Создать до 1000 задач одним атомарным вызовом — импорт выгрузок из Linear/Jira/Notion/Trello или любого списка из 3+ задач, всего за один вызов ИИ из квоты. | Запись |
| update_task | Изменить поля существующей задачи. Меняются только переданные поля; остальные сохраняются — с одним исключением: снять requiresReview агенту не дадут, и вместе с этим отказом отклоняется вся правка целиком. | Запись |
| move_task | Переместить задачу в другую колонку и позицию. Перемещение в колонку с semantic='doing' запускает отсчёт времени цикла; перемещение в semantic='done' записывает время завершения. | Запись |
| start_task | ИИ вызывает его в тот момент, когда начинает выполнять задачу, — карточка переходит в Doing, и пользователь и все остальные подключённые клиенты видят, что работа идёт (и не берут её второй раз). Запускает отсчёт времени цикла; задачу без исполнителя захватывает вызвавший агент (существующий исполнитель никогда не перезаписывается). id колонки не нужен. | Запись |
| report_progress | Сообщить, что работа ещё идёт. Захват задачи истекает, если клиент замолкает, а этот вызов его продлевает. Без такого пульса долгая задача считается брошенной и предлагается другому — намеренно: агент, умерший посреди работы, ничего не сообщит, поэтому молчание — единственный сигнал, который есть у доски. | Запись |
| request_input | Спросить человека о том, что может решить только он, и ждать, не теряя захвата задачи. Если человек сидит в своём клиенте, там появляется форма, и ответ возвращается внутри того же вызова — агент продолжает в том же контексте, с тем же захватом. Если человека нет, вызов возвращается в состоянии ожидания, а вопрос ждёт в его очереди; ответ дойдёт до агента при следующем start_task или get_my_work. Для необратимого и по-настоящему неоднозначного, а не для «можно продолжать?» — каждый вопрос тратит тот же бюджет внимания, который ограничивает новую работу. | Запись |
| submit_answer | Возвращает то, что человек ответил на вопрос агента, и передаёт работу обратно с теми же runId и арендой, чтобы она продолжилась в той же попытке, а не началась с нуля. Помечается как переданное агентом, а не как действие самого человека: ответ, принесённый агентом, и щелчок человека — разные виды доказательств, и доска держит их раздельно. Если на вопрос уже ответили в приложении Weft, вместо ошибки возвращается этот ответ: важно, чтобы агент продолжил с правильным. | Запись |
| get_my_work | Спросить, что делать дальше, вместо того чтобы читать всю доску и гадать. Возвращает задачи, назначенные этому клиенту, то, что уже ждёт человека, и есть ли место в очереди внимания. Ещё он называет просроченное и то, у чего срок или начало в пределах недели, так что агент узнаёт о дедлайне, не спрашивая. Когда очередь полна, полезнее помочь её разобрать, чем начинать новое, — и он говорит об этом ещё до выбора задачи. | Чтение |
| complete_task | ИИ вызывает его, когда работа действительно закончена, — карточка переходит в Done с записанным временем завершения, а необязательный outcome (что сделано, где лежит результат) добавляется к карточке заметкой «Outcome (AI, дата)». id колонки не нужен. Работа, помеченная как требующая тебя, в Done НЕ переходит: она попадает в твою очередь с приложенной квитанцией, и если агент сказал, что сделает дальше, принятие одобряет ровно этот шаг и возвращает его агенту. Если у задачи есть план проверки, сервер выполняет проверки прямо здесь — открывает URL, ищет цитату, сравнивает хеш: план executable/state_delta, у которого все блокирующие проверки прошли, закрывается как проверенный сервером; проваленная блокирующая проверка не пускает карточку в Done и показывает агенту, что увидел сервер. | Запись |
| record_decision | Один инструмент, два применения, одна таблица записей. (1) Передать вердикт, который ты дал в разговоре о готовой работе, ждущей тебя, — одобрено, вернуть на доработку, отбросить, позже, — убрав карточку из очереди на проверку; запись хранится как переданная агентом, а не как твоё действие в приложении, и эта разница намеренно остаётся видимой. (2) Записать отдельное решение, которое стоит помнить, — «выбрали Neon, а не Supabase», извлечённый урок, — как неизменяемую запись в духе MADR-lite с взвешенными вариантами и условием, при котором к нему стоит вернуться. Записи никогда не редактируются: новое решение с supersedesId заменяет старое, а старое остаётся читаемым в том виде, в каком было принято. Именно эти записи get_context на следующей неделе отдаёт каждому агенту. | Запись |
| get_context | Действующие решения и уроки рабочего пространства, упакованные в бюджет токенов, сначала новые, — то, что агенту стоит прочитать, прежде чем браться за что-то нетривиальное. Выводится из записанных решений, а не пишется как документ, поэтому не устаревает: заменённое решение исчезает в момент, когда записана замена, и у каждой строки есть дата. Можно сузить до проекта или задачи; строки, не поместившиеся в бюджет, подсчитываются, а не скрываются молча. | Чтение |
| get_task_history | Что происходило с задачей, а не только её текущие поля. Три режима: 'summary' (по умолчанию, ≤500 токенов — карточка, её последняя квитанция, счётчики), 'decisions' (все решения, записанные по ней, включая вердикты и их причины, — причина доработки сохраняется здесь даже после того, как более позднее принятие перезапишет карточку), 'full' (сырой журнал, не больше 100 событий, о чём сказано явно). Нужен потому, что журнал аудита слишком многословен, чтобы читать его напрямую, а строка задачи хранит только последний вердикт. | Чтение |
| trash_task | Переместить задачу в корзину на доске Weft. Её можно восстановить в течение 30 дней через restore_task, после чего плановая задача удаляет её навсегда. | Удаление |
| restore_task | Восстановить задачу из корзины в течение 30 дней после удаления. Задача возвращается на доску туда, где была, целиком — так что соло-основатель никогда не потеряет работу из-за случайного удаления. | Запись |
| archive_done_tasks | Очистить колонку Done: все задачи из неё уходят с доски в архив — их по-прежнему находят search/fetch и показывает история их спринта, они никогда не удаляются. Завершение спринта автоматически архивирует его готовые задачи; этот инструмент разбирается с остальными. Он забирает всю колонку одним вызовом, без счётчика и без возможности вернуть через MCP — restore_task восстанавливает из корзины, а не из архива, — поэтому он помечен как разрушительный: клиенту стоит подтвердить у пользователя, прежде чем его вызывать. | Удаление |
| list_projects | Перечислить проекты доски — лёгкие контексты (стартап, клиент, личное), к которым может относиться задача. Архивные проекты не включаются, если не задан includeArchived. | Чтение |
| create_project | Создать проект-контекст. Название уникально в пределах доски; цвет по умолчанию берётся по кругу из палитры; url — сайт проекта, чей фавикон показывается на карточках задач. | Запись |
| update_project | Переименовать проект, сменить его цвет или url сайта, отправить в архив или вернуть из архива. Архивные проекты пропадают из списков выбора; их задачи сохраняют привязку. | Запись |
| list_sprints | Перечислить все спринты пользователя (запланированные, активные, завершённые, архивные), чтобы соло-основатель или агент мог посмотреть историю спринтов и текущее состояние, не открывая приложение. | Чтение |
| get_active_sprint | Вернуть текущий активный спринт или null, если спринт не идёт, — чтобы соло-основатель или агент мог проверить текущую цель, не открывая приложение. | Чтение |
| create_sprint | Создать новый спринт в статусе «planned» на доске Weft, готовый к планированию с целью и датами. Когда пора начинать, отдельно вызови start_sprint. | Запись |
| start_sprint | Перевести запланированный спринт в активный статус. Активным может быть только один спринт за раз, на любом тарифе: если уже идёт другой, вызов завершается ошибкой и называет его; сначала заверши тот спринт, потом повтори. | Запись |
| complete_sprint | Завершить активный спринт. Его готовые задачи архивируются в историю спринта — уходят из колонки Done, но остаются в поиске и видны на странице спринта. Незавершённые задачи остаются на доске, привязанными к спринту. Через MCP отменить нельзя — клиентам стоит переспросить, когда намерение неясно. | Удаление |
| add_task_to_sprint | Добавить существующую задачу в спринт, чтобы она появилась в его объёме и диаграмме сгорания. Идемпотентно — повторный вызов ничего не меняет, поэтому его безопасно повторять. | Запись |
| remove_task_from_sprint | Отвязать задачу от текущего спринта, не удаляя её: задача остаётся на доске в своей колонке, просто больше не входит в этот спринт и его диаграмму сгорания. | Запись |
Вопросы
Что такое канбан MCP-сервер?
Сервер MCP (Model Context Protocol), который открывает канбан-доску в виде инструментов, которые может вызывать ИИ-ассистент: перечислить колонки, прочитать карточки, создать карточку, передвинуть её в Doing или Done. Сервер Weft размещён у нас, поэтому ты добавляешь адрес, а не запускаешь процесс у себя на компьютере.
Нужно ли что-то устанавливать или запускать?
Нет. Добавь https://letsweft.com/api/mcp в свой ИИ-клиент и войди через OAuth. Клиенты без OAuth используют персональный токен доступа из Настройки → Токены доступа.
Это бесплатно?
Да, до 50 задач и 200 вызовов ИИ в месяц. Pro снимает ограничения за $7 за место в месяц или $60 за место в год.
Работает ли это с ChatGPT Free?
Да. Weft есть в Plugin directory ChatGPT и работает на любом тарифе ChatGPT, включая Free. Добавить голый MCP-адрес в ChatGPT можно только на Business, Enterprise и Edu, но для Weft это не нужно.
Могут ли два агента работать на одной доске?
Да — для этого доска и нужна. Каждый агент захватывает карточку через start_task, прежде чем над ней работать, поэтому они не берут одну и ту же, а на каждой карточке видно, создал или закрыл её ИИ или человек.
Чем это отличается от локального канбан MCP-сервера?
Канбан MCP-серверы с открытым кодом работают на твоём компьютере и хранят доску в локальном файле или базе данных, поэтому её видят только агенты на этом компьютере. Weft — общая размещённая доска: одни и те же карточки в ChatGPT, Claude, Cursor, Codex, веб-приложении и приложениях для iOS и Android — для тебя и твоей команды.