Weft
RU

Канбан MCP-сервер для ChatGPT, Claude, Cursor и Codex

Автор — Андрей Финогеев, основатель Weft ·

Weft — это размещённая канбан-доска (Backlog, Todo, Doing, Done и необязательные спринты), а её MCP-сервер находится по адресу https://letsweft.com/api/mcp. Добавь этот адрес в свой ИИ-клиент и войди один раз через OAuth; ничего не нужно устанавливать или запускать у себя. С этого момента ассистент читает доску, создаёт и двигает карточки, захватывает карточку перед работой, чтобы два агента никогда не взяли одну и ту же, докладывает прогресс, спрашивает тебя, когда решение за тобой, и закрывает карточку с описанием того, что сделал. Бесплатно до 50 задач и 200 вызовов ИИ в месяц.

Адрес MCP-сервера
https://letsweft.com/api/mcp

Streamable HTTP · OAuth или персональный токен доступа · 32 инструментов

Добавь его в свой ИИ-клиент

ChatGPT

Открыть Weft в ChatGPT — или настрой вручную:

  1. 1Открой Plugins в боковой панели ChatGPT — или Settings → Plugins.
  2. 2Найди «Weft» и открой карточку.
  3. 3Нажми «Connect» и посмотри, к чему Weft получает доступ.
  4. 4Войди в свой аккаунт Weft во всплывшем окне.

Упомяни плагин через @ в любом чате: «@Weft что у меня на доске?» — или выбери Weft в меню +. Если ты пропустил настройку, ChatGPT предложит подключить его прямо на месте.

Claude Desktop

  1. 1Открой Claude Desktop → Settings → Connectors.
  2. 2Нажми «Add custom connector».
  3. 3Вставьте адрес MCP-эндпоинта Weft, указанный ниже, и сохраните.
  4. 4Пройдите OAuth в открывшемся окне браузера.

Начни новый чат и спроси: «что у меня на доске Weft?». Claude получит состояние доски через коннектор Weft.

Claude Code

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

Запустите `claude` в любом проекте и спросите: «что у меня на доске?». В первый раз откроется окно браузера, чтобы пройти OAuth.

Cursor

Добавить в Cursor — или настрой вручную:

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

Открой Cursor → Settings → MCP. После прохождения OAuth сервер «weft» должен появиться там с зелёным индикатором.

Codex CLI

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

Выполните `codex mcp login weft` и войдите в браузере, затем запустите `codex` и спросите: «что у меня на доске?». Команда `/mcp` покажет подключённый сервер и его инструменты.

VS Code

Установить расширение Weft — или настрой вручную:

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

Открой чат, переключи режим на Agent и спроси: «что у меня на доске?». В первый раз откроется окно браузера для OAuth. «MCP: List Servers» должен показать weft как Running.

Windsurf

  1. 1Открой Windsurf → Settings → Cascade → MCP servers.
  2. 2Нажми «Add server» и выбери Remote (HTTP).
  3. 3Вставьте адрес MCP-эндпоинта Weft, указанный ниже, и сохраните.
  4. 4Пройдите OAuth в открывшемся окне браузера.

Открой Cascade и спроси: «что у меня на доске?». Cascade помечает ответы, в которых использовался сервер Weft.

Gemini CLI

bash
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 кладёт вопрос с вариантами во Входящие — в вебе и на телефоне, — вместо того чтобы агент гадал там, где решить можешь только ты.

Темп задаёт твоё внимание

Когда твоей проверки ждёт слишком много готовой работы, агенты перестают начинать новые карточки. Это канбан-лимит незавершённой работы, применённый к тебе.

Ты решаешь, что можно каждому ИИ

Дай каждому подключённому ассистенту полный доступ, доступ на запись или только на чтение и отключай его одним щелчком. Удалённые карточки попадают в корзину, а не исчезают сразу.

Доска Weft на телефоне, колонка Doing: три задачи, которые взял ИИ-ассистент, у каждой пометка AI
Ассистенты берут следующую задачу; на каждой карточке видно, кто над ней работает.
Готовая задача Weft, созданная ИИ, с результатом, который записал ассистент: что он исправил и что прошли 40 прогонов тестов
Закончив, ассистент оставляет квитанцию: что сделано и как он это проверил.

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 — для тебя и твоей команды.

По теме