Перейти к содержимому

MCP-сервер

Bordio говорит на Model Context Protocol (MCP), поэтому ИИ-ассистент читает и меняет вашу работу напрямую, а не через копирование туда-обратно.

https://api.bordio.com/mcp

Аутентификация — OAuth: вы подтверждаете подключение в браузере и нигде не вставляете ключ. API-ключи предназначены для серверных интеграций и здесь не работают.

Три условия решают, заработает ли подключение вообще. Проверьте их первыми — почти все неудачные настройки упираются в одно из них, а не в клиент.

  • Командная организация. В личной организации интеграций нет ни на одном тарифе, и подключить её нельзя.
  • Платный тариф или активный триал. Триал работает полностью, карта не требуется. На бесплатном тарифе и после прекращения оплаты подключение создаётся, но каждый вызов инструмента отклоняется.
  • Участие, а не гостевой доступ. Гость не может авторизовать приложение для организации. Попросите администратора сделать вас участником.

Условия проверяются на каждом вызове, а не только при подключении — см. требования к тарифу и организации.

Все клиенты ниже обращаются к одному и тому же адресу. Токен копировать не нужно: клиент откроет браузер, вы войдёте в Bordio и подтвердите доступ, а результат он сохранит сам.

Settings → Connectors → Add custom connector → вставьте адрес. Подтвердите в открывшемся окне браузера.

Terminal window
claude mcp add --transport http bordio https://api.bordio.com/mcp

Затем выполните /mcp, выберите bordio и пункт Authenticate. Чтобы войти, не открывая сессию, выполните claude mcp login bordio.

Добавьте сервер в ~/.cursor/mcp.json (доступен везде) или в .cursor/mcp.json (только в этом проекте):

{
"mcpServers": {
"bordio": {
"url": "https://api.bordio.com/mcp"
}
}
}

Cursor подхватит изменение и при первом обращении начнёт вход через браузер.

Добавьте сервер в .vscode/mcp.json:

{
"servers": {
"bordio": {
"type": "http",
"url": "https://api.bordio.com/mcp"
}
}
}
Terminal window
codex mcp add bordio --url https://api.bordio.com/mcp
codex mcp login bordio

login откроет браузер и сохранит результат. Codex регистрируется в Bordio на лету, поэтому получать идентификатор клиента заранее не нужно; если ваша версия спросит способ регистрации, выберите динамическую (--oauth-client-registration dcr).

Старые сборки обслуживают серверы по URL прежним MCP-стеком, где вход через OAuth не выполняется. Если login падает или сервер не подключается, добавьте в ~/.codex/config.toml и повторите:

experimental_use_rmcp_client = true

То же самое через файл, если удобнее править его напрямую:

[mcp_servers.bordio]
url = "https://api.bordio.com/mcp"

Всё, что поддерживает удалённые MCP-серверы по HTTP и умеет проходить вход через OAuth — Windsurf, Zed и прочие, — работает так же: дайте адрес и подтвердите в браузере.

n8n, Make, Zapier и собственные скрипты — другой случай, и MCP им не подходит.

Вход здесь означает, что человек подтверждает доступ в браузере, и выданный токен принадлежит этому человеку. У автоматизации, которая запускается в три часа ночи, браузер открывать некому, а выдать ей постоянные учётные данные для MCP нельзя — Bordio не раздаёт OAuth-клиентам секреты для самостоятельного использования.

Для автоматизаций возьмите REST API с секретным API-ключом: он для этого и сделан — долгоживущий ключ, без браузера и без срока, за которым надо следить. Всё, что ассистент делает через MCP, доступно и там.

Если вы пишете клиент, а не пользуетесь готовым, регистрировать вручную ничего не нужно. Bordio реализует цепочку discovery, описанную в спецификации MCP, поэтому совместимый клиент находит всё по одному адресу эндпоинта:

  • Метаданные защищённого ресурса по /.well-known/oauth-protected-resource/mcp — указывают на сервер авторизации;
  • Метаданные сервера авторизации по /.well-known/oauth-authorization-server — эндпоинты, права и поддерживаемые способы;
  • Client ID Metadata Documents (способ, который спецификация теперь предпочитает): разместите JSON-документ с описанием клиента и передайте его HTTPS-адрес как client_id. Мы его загрузим, проверим, что client_id внутри совпадает с адресом, откуда он получен, и сверим ваши redirect URI с ним;
  • Динамическая регистрация по /oauth/register — запасной путь для клиентов, которые не поддерживают вышеперечисленное.

PKCE обязателен, только S256. Loopback-адреса возврата (http://127.0.0.1/... и http://localhost/...) принимаются с любым портом, как это и нужно нативным клиентам.

Каким бы путём вы ни пошли, экран подтверждения показывает человеку домен, на который вернётся его код авторизации, — это единственное утверждение о вашем приложении, которое он может проверить, поэтому пусть домен будет узнаваемым. См. подтверждение приложения.

После подключения спрашивайте обычными словами: «что у меня сегодня», «создай задачу продлить SSL-сертификат до пятницы», «что команда закрыла на прошлой неделе».

Область Что может ассистент
Задачи Список с фильтрами, чтение задачи с подзадачами и комментариями, создание, изменение, закрытие, удаление
Подзадачи Список, создание, изменение, удаление
События Список и чтение событий календаря, создание и изменение, работа с участниками
Корзина Посмотреть удалённое и вернуть задачу или событие — удаление не окончательно
Повестка Всё в заданном окне дат — встречи, дедлайны и запланированная работа — одним упорядоченным списком
Сводка Количества за период, по статусам и исполнителям, без перечисления каждой записи
Комментарии Чтение и написание комментариев к задачам и событиям
Учёт времени Чтение и запись затраченного времени
Проекты, участники, теги Чтение структуры организации; архивирование и разархивирование проектов; работа с тегами
Справочники Статусы и типы задач, типы событий, статусы проектов, кастомные поля

Всё, до чего ассистент дотягивается через MCP, он делает с вашими правами. Проект, который не видите вы, он не увидит никогда.

Ничего необратимого ассистент здесь не делает. Удаление задачи или события отправляет их в корзину, откуда их можно вернуть в течение 30 дней; проекты архивируются, а не удаляются. Инструмента, уничтожающего запись насовсем, не существует — см. удаление и восстановление.

Сервер поставляет три готовых запроса. В Claude Desktop они видны как команды, которые можно выбрать, — формулировку придумывать не нужно:

Сценарий Что делает
Что у меня сегодня Встречи, дедлайны и запланированная работа на сегодня одним упорядоченным списком, с указанием, что заслуживает внимания в первую очередь
Разобрать просроченное Группирует просроченные задачи и предлагает каждой новую дату — пока вы не подтвердите, ничего не меняется
Подвести итоги недели Что сделано, что съехало, что ждёт на следующей неделе

Каждый принимает необязательное название проекта, чтобы сузить выборку.

Некоторые клиенты позволяют приложить ресурс к разговору, вместо того чтобы просить ассистента его искать. Bordio отдаёт четыре:

bordio://workspace
bordio://project/{project_id}
bordio://task/{task_id}
bordio://event/{event_id}

Пользуйтесь ими, когда уже знаете, о какой записи речь: ассистент будет работать прямо с ней, а не искать её. Списки остаются на стороне инструментов — там, где им и место вместе с фильтрами и постраничностью.

Экран подтверждения показывает ровно то, что просит приложение, и вы выдаёте права на одну организацию. Если вы состоите в нескольких, то выбираете одну при подтверждении: подключение никогда не выходит за её пределы.

Ассистент видит только те инструменты, которые покрыты его правами: если подключение подтвердили только на чтение, инструменты записи не просто отклоняются — они не предлагаются вовсе.

Право Что покрывает
tasks:read / tasks:write Задачи, подзадачи и комментарии к ним
events:read / events:write События календаря, их участники и комментарии к ним
projects:read / projects:write Проекты и их настройка — статусы, типы, кастомные поля
time_logs:read / time_logs:write Учёт времени
tags:read / tags:write Теги
members:read Другие люди в организации, включая их адреса почты
profile:read Ваши собственные имя и адрес почты
offline_access Оставаться подключённым, не спрашивая вас заново каждый час

profile:read стоит запрашивать даже ассистенту, который только читает: без него никто не ответит на «что у меня сегодня» — ассистент попросту не знает, кто из участников организации вы.

Клиент, запросивший право, которое ему не положено, ошибки не получит: право отбрасывается, остальные выдаются, а экран подтверждения показывает то, что будет выдано на самом деле. Читайте выданный список из ответа на запрос токена, а не считайте, что получили всё запрошенное.

Посмотреть и отозвать подключения можно в любой момент в Профиль → Интеграции → Приложения с доступом к Bordio. Отзыв действует немедленно.

Подключиться может кто угодно: экран подтверждения появляется для любой организации, где вы состоите, независимо от тарифа. Тариф ограничивает использование — проверяется каждый вызов инструмента, а не только первый.

Ситуация Что происходит
Командная организация на тарифе с интеграциями Всё работает
Командная организация на триале Всё работает, карта не требуется
Командная организация, где платёж не прошёл, но провайдер ещё повторяет попытки Продолжает работать: не прошедшее с первого раза списание — не отказ от продукта
Командная организация на бесплатном тарифе или после окончательной остановки оплаты Подключение остаётся, но каждый вызов инструмента возвращает workspace_plan_required, пока тариф не решён
Личная организация Подключить нельзя вовсе: integrations_unavailable, на любом тарифе
Вы гость в организации Авторизовать приложение для неё нельзя: guest_access_denied. Попросите администратора сделать вас участником

Проверка на каждом вызове — намеренная: подтверждение, выданное при действующем тарифе, не продолжает работать после того, как тариф закончился. Верно и обратное — как только тариф возвращается, существующее подключение начинает работать снова, переподключать ничего не надо.

Одно подключение — одна организация. Организацию вы выбираете на экране подтверждения, и за её пределы подключение не выходит. Чтобы работать с другой, отзовите подключение в Профиль → Интеграции → Приложения с доступом к Bordio и авторизуйте заново, выбрав нужную.

Ограничение Значение
Вызовы инструментов на чтение 180 в минуту
Вызовы инструментов на запись 60 в минуту
Запросы к эндпоинту, включая служебные сообщения протокола 300 в минуту
Один вызов инструмента 30 секунд
Один ответ 128 КБ

Служебные сообщения протокола — подключение, получение списка инструментов — бюджет вызовов не расходуют. Чтение щедрее, чем в REST API, потому что один вопрос обычно превращается в короткую цепочку вызовов.

Если ответ выходит за предел размера, вызов отклоняется с подсказкой сузить запрос, а не обрезается молча: ассистент, работающий с обрезанным списком, сделает выводы по данным, о неполноте которых не подозревает.

Что вы видите Что это значит
Клиент раз за разом просит авторизоваться, и подтверждение каждый раз проходит Токен отвергается уже после выдачи. Проверьте в Профиль → Интеграции → Приложения с доступом к Bordio, что подключение не отозвано и не заблокировано, затем удалите сервер в клиенте и добавьте заново.
workspace_plan_required на каждый вызов Организация на бесплатном тарифе либо оплата прекращена. Само подключение исправно и заработает, как только вернётся тариф.
integrations_unavailable Вы подтвердили доступ для личной организации. Подключите командную.
guest_access_denied Вы там гость. Гости не могут авторизовывать приложения — попросите администратора сделать вас участником.
connection_blocked Администратор остановил это подключение. Это обратимо: попросите вернуть доступ. Повторное подтверждение при действующей блокировке не поможет.
Ассистент говорит, что задачи нет, а вы её видите Подключение работает с вашими правами и в одной организации. Запись из другой организации или из проекта, где вас нет, для него действительно недоступна.
Инструмента записи нет вовсе Подключение подтвердили без этого права. Отзовите и подтвердите заново, выдав его.
Вызовы начали отклоняться после всплеска активности Вы упёрлись в минутный лимит. В ошибке указано, сколько ждать.

Подключиться может любое приложение: MCP позволяет приложению зарегистрироваться самостоятельно, и мы этого не ограничиваем. Ничего при этом не выдаётся втихую — приложение получает ровно те права, которые подтвердил человек, и не больше.

На экране подтверждения показано то, что действительно можно проверить:

Показано Почему этому можно верить
Название и логотип приложения Присланы самим приложением, если клиент зарегистрировался сам, либо взяты из документа метаданных на вашем домене.
Домен, на который вернётся код Подделать его, не владея этим доменом, нельзя. Для настольных и редакторских клиентов экран вместо домена говорит, что код вернётся на компьютер самого человека.
Список прав Ровно то, что будет выдано.

Очереди на проверку нет и подавать заявку некуда: приложение, опубликовавшее документ метаданных на своём домене, просто отображается под этим доменом. Известным клиентам — среди них Claude, Slack, Cursor, Codex и VS Code — название и логотип дополнительно подставляем мы, поэтому они узнаваемы с первого взгляда.

Ассистент видит отказы как обычные ответы и может исправиться и повторить: недоступная задача возвращается как «не найдено», а не как сломавшийся сервер.

Ситуация Что происходит
Не выполнен вход или подтверждение истекло Клиент предложит авторизоваться заново
У приложения нет права Вызов отклоняется, клиенту сообщается, какого права не хватает
Достигнут лимит запросов Вызов отклоняется с указанием, сколько ждать
Запись не найдена или вне вашего доступа Ассистенту сообщается, что запись недоступна