Plane

официальный

Официальный MCP-сервер Plane обеспечивает интеграцию с API Plane, позволяя полностью автоматизировать с помощью ИИ проекты, рабочие элементы, циклы и многое другое.

Что можно делать с Plane MCP?

  • Создание рабочих элементов — Попросите вашего ассистента создать рабочий элемент в проекте, указав название и другие детали через инструмент workitem.
  • Запрос рабочих элементов с помощью PQL — Используйте Plane Query Language для вывода списка или подсчёта рабочих элементов, отфильтрованных по статусу, приоритету или исполнителю, например, .
  • Управление циклами — Архивируйте или обновляйте циклы в проекте, например, cycle(action="archive", project_id=..., cycle_id=...).
  • Доступ к справочнику по синтаксису PQL — Запросите инструмент get_pql_reference для получения полного синтаксиса PQL, операторов и примеров использования.

Документация

Сервер MCP Plane

Сервер Model Context Protocol для Plane. Предоставляет ИИ-агенту инструменты для чтения и управления проектами, рабочими элементами, циклами, модулями, релизами, клиентами и другим.

Построен на FastMCP и официальном plane-sdk.

  • 30 инструментов, по одному на ресурс Plane, охватывающих 207 операций
  • Локально или удалённо — stdio, потоковый HTTP, SSE
  • Аутентификация через OAuth или API-ключ

Быстрый старт

Получите API-ключ в Plane: Настройки рабочего пространства → API-токены.

Добавьте это в конфигурацию вашего MCP-клиента:

{
  "mcpServers": {
    "plane": {
      "command": "uvx",
      "args": ["plane-mcp-server", "stdio"],
      "env": {
        "PLANE_API_KEY": "<your-api-key>",
        "PLANE_WORKSPACE_SLUG": "<your-workspace-slug>"
      }
    }
  }
}

uvx не требует установки. Требуется Python 3.10+.

Для самостоятельно размещённого Plane добавьте "PLANE_BASE_URL": "https://plane.example.com".

Транспорты

stdio — локально

Запускается как подпроцесс вашего MCP-клиента. Конфигурация показана выше; требуются PLANE_API_KEY и PLANE_WORKSPACE_SLUG.

PLANE_API_KEY=... PLANE_WORKSPACE_SLUG=... uvx plane-mcp-server stdio

HTTP с OAuth — размещённый

https://mcp.plane.so/http/mcp

Поток OAuth обрабатывается при подключении; учётные данные в вашей конфигурации не нужны. Для клиентов без встроенной поддержки удалённого MCP используйте мост с mcp-remote:

{
  "mcpServers": {
    "plane": {
      "command": "npx",
      "args": ["mcp-remote@latest", "https://mcp.plane.so/http/mcp"]
    }
  }
}

Требуется Node.js 22+.

HTTP с персональным токеном доступа — размещённый

https://mcp.plane.so/http/api-key/mcp

ЗаголовокЗначение
AuthorizationBearer <PAT>
X-Workspace-slug<workspace-slug>
{
  "mcpServers": {
    "plane": {
      "command": "npx",
      "args": ["mcp-remote@latest", "https://mcp.plane.so/http/api-key/mcp"],
      "headers": {
        "Authorization": "Bearer <PAT>",
        "X-Workspace-slug": "<workspace-slug>"
      }
    }
  }
}

SSE — устаревший

https://mcp.plane.so/sse поддерживается только для обратной совместимости. Используйте HTTP-транспорт.

Инструменты

Сервер предоставляет 30 инструментов, по одному на ресурс. Каждый принимает параметр action, который выбирает операцию:

workitem(action="create", project_id=..., name="Fix login")
workitem(action="list", project_id=..., pql='state__group = "started"')
cycle(action="archive", project_id=..., cycle_id=...)

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

→ Полный справочник инструментов и действий

Запросы к рабочим элементам

Список, подсчёт и поиск принимают PQL — язык запросов Plane:

workitem(action="list", project_id=..., pql='state__group = "started" AND priority = "urgent"')
workitem(action="count", pql='assignees__id = "<member id>"', group_by="state_id")

Вызовите get_pql_reference для полного синтаксиса, операторов и примеров.

Переход с инструментов пооперационного уровня

Более ранние версии предоставляли один инструмент на операцию API. Существующие интеграции продолжают работать: 169 из 177 этих имён по-прежнему разрешаются в консолидированный инструмент, поэтому сохранённый промпт или скрипт, вызывающий create_work_item или list_cycles, не требует изменений. Они больше не рекламируются и сохраняют имена параметров, с которыми были выпущены (work_item_id, а не workitem_id).

Семь имён выбирали между двумя операциями с помощью параметра (manage_project_archive(archive=False)), что одна пара «инструмент-действие» воспроизвести не может; вызов такого имени сообщает его замену. get_pql_reference не изменился.

Конфигурация

Аутентификация

ПеременнаяТребуется дляНазначение
PLANE_API_KEYstdioAPI-ключ
PLANE_WORKSPACE_SLUGstdioЦелевое рабочее пространство
PLANE_BASE_URLнеобязательноURL API Plane (по умолчанию https://api.plane.so)

Удалённые транспорты несут учётные данные в соединении — поток OAuth или заголовки PAT — и не требуют ни одной из этих переменных.

Самостоятельное размещение самого сервера:

ПеременнаяНазначение
PLANE_INTERNAL_BASE_URLВнутренний URL для вызовов между серверами, предпочтительнее PLANE_BASE_URL
REDIS_URLХранилище OAuth-токенов как один URL подключения (redis:// или rediss:// для TLS); имеет приоритет над хостом/портом
REDIS_HOST / REDIS_PORTХранилище OAuth-токенов; резерв — в памяти
PLANE_OAUTH_PROVIDER_*Учётные данные OAuth-клиента и базовый URL
MCP_PATH_PREFIXПрефикс пути для HTTP-маршрутов при размещении за прокси — /plane обслуживает /plane/http/mcp

URI перенаправления OAuth

OAuth-транспорты проверяют URI перенаправления каждого клиента по списку разрешённых. Обычные клиенты (Cursor, VS Code, Claude.ai, коннекторы ChatGPT, localhost) разрешены по умолчанию.

Чтобы добавить нового клиента без выпуска версии, добавьте шаблоны:

export PLANE_OAUTH_ALLOWED_REDIRECT_URIS="https://newclient.com/cb,https://other.app/oauth/*"

* соответствует любому порту, сегменту пути или поддомену. Оставляйте хост фиксированным и используйте подстановочные знаки только для порта или пути.

Логирование

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

export LOG_USER_INFO=false    # also log the display name (PII);
export LOG_PAYLOADS=false    # keep request payloads out of logs; default true

Только OAuth- и PAT-транспорты передают отображаемое имя; stdio не затрагивается.

Разработка

git clone https://github.com/makeplane/plane-mcp-server
cd plane-mcp-server
uv pip install -e ".[dev]"

Запустите сервер с рабочим пространством:

PLANE_API_KEY=... PLANE_WORKSPACE_SLUG=... python -m plane_mcp stdio
python -m plane_mcp http            # port 8211

Тесты, форматирование, линтер:

pytest                              # no network or credentials needed
ruff format plane_mcp/ tests/       # line length 120
ruff check plane_mcp/ tests/        # rules E, F, I, UP, B

Набор тестов полностью работает офлайн — каждое действие каждого ресурса выполняется против заглушки, которая связывает каждый вызов с подлинной сигнатурой plane-sdk. См. plane_mcp/tools/README.md.

Интеграционные тесты в реальном времени пропускаются, если не указать запущенный сервер:

export PLANE_TEST_API_KEY=... PLANE_TEST_WORKSPACE_SLUG=...
export PLANE_TEST_MCP_URL=http://localhost:8211    # optional; this is the default
pytest tests/test_integration.py -v

Они записывают реальные данные в это рабочее пространство.

Структура репозитория

ПутьСодержимое
plane_mcp/__main__.pyточка входа; выбирает транспорт из argv[1]
plane_mcp/server.pyпо одной фабрике на транспорт
plane_mcp/client.pyпреобразует учётные данные в клиент plane-sdk
plane_mcp/auth/OAuth-провайдер и аутентификация по заголовкам
plane_mcp/tools/поверхность инструментов: по одному модулю на ресурс Plane
plane_mcp/toolkit/общие строительные блоки для поверхности инструментов
plane_mcp/pql_reference.pyсправочник по синтаксису PQL, предоставляемый моделям

Участие

Приветствуются pull request'ы. Пожалуйста, запустите pytest и ruff check перед отправкой; новые инструменты должны соответствовать инвариантам, описанным в plane_mcp/tools/README.md.

См. CONTRIBUTING.md и CODE_OF_CONDUCT.md.

Миграция с Node.js-сервера

@makeplane/plane-mcp-server (Node.js) устарел и не поддерживается. Эта реализация на Python заменяет его.

Node.jsPython
PLANE_API_KEYPLANE_API_KEY
PLANE_API_HOST_URLPLANE_BASE_URL
PLANE_WORKSPACE_SLUGPLANE_WORKSPACE_SLUG

Замените command и args на конфигурацию stdio из Быстрого старта.

Лицензия

MIT — см. LICENSE.