Plane MCP Server

официальный

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

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

Plane MCP Server

Сервер Model Context Protocol (MCP) для интеграции с Plane. Этот сервер предоставляет инструменты и ресурсы для взаимодействия с Plane через AI-агентов.

Возможности

  • 🔧 Интеграция с Plane: Взаимодействие с API и сервисами Plane
  • 🔌 Несколько транспортов: Поддержка stdio, SSE и потокового HTTP
  • 🌐 Удалённо и локально: Работает как локально, так и в качестве удалённого сервиса
  • 🛠️ Расширяемость: Лёгкое добавление новых инструментов и ресурсов

Использование

Сервер поддерживает три транспортных метода. Мы рекомендуем использовать uvx, так как он не требует установки.

Требования:

  • Python 3.10+ (для транспорта stdio, через uvx)
  • Node.js 22+ (для удалённых транспортов, через npx)

1. Транспорт Stdio (для локального использования)

Конфигурация MCP-клиента (с использованием uvx — рекомендуется):

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

2. Удалённый HTTP-транспорт с OAuth

Подключение к размещённому серверу Plane MCP с использованием аутентификации OAuth.

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

Конфигурация MCP-клиента (для инструментов вроде Claude Desktop без встроенной поддержки удалённого MCP):

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

Примечание: Аутентификация OAuth будет обработана автоматически при подключении к удалённому серверу.

3. Удалённый HTTP-транспорт с использованием PAT-токена

Подключение к размещённому серверу Plane MCP с использованием персонального токена доступа (PAT).

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

Заголовки:

  • Authorization: Bearer <PAT_TOKEN>
  • X-Workspace-slug: <SLUG>

Конфигурация MCP-клиента (для инструментов вроде Claude Desktop без встроенной поддержки удалённого MCP):

{
  "mcpServers": {
    "plane": {
      "command": "npx",
      "args": ["mcp-remote@latest", "https://mcp.plane.so/http/api-key/mcp"],
      "headers": {
        "Authorization": "Bearer <PAT_TOKEN>",
        "X-Workspace-slug": "<SLUG>"
      }
    }
  }
}

4. Транспорт SSE (устаревший)

⚠️ Устаревший транспорт: Транспорт SSE (Server-Sent Events) поддерживается для обратной совместимости. В новых реализациях следует использовать HTTP-транспорт (разделы 2 или 3).

Подключение к размещённому серверу Plane MCP с использованием аутентификации OAuth через Server-Sent Events.

URL: https://mcp.plane.so/sse

Конфигурация MCP-клиента (для инструментов, поддерживающих транспорт SSE):

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

Примечание: Аутентификация OAuth будет обработана автоматически при подключении к удалённому серверу. Этот транспорт объявлен устаревшим в пользу HTTP-транспорта.

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

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

Сервер требует аутентификации через переменные окружения:

  • PLANE_BASE_URL: Базовый URL для API Plane (по умолчанию: https://api.plane.so) — необязательно
  • PLANE_API_KEY: Ключ API для аутентификации (обязателен для транспорта stdio)
  • PLANE_WORKSPACE_SLUG: Идентификатор рабочего пространства (slug) (обязателен для транспорта stdio)
  • PLANE_ACCESS_TOKEN: Токен доступа для аутентификации (альтернатива ключу API)

Пример (для транспорта stdio):

export PLANE_BASE_URL="https://api.plane.so"
export PLANE_API_KEY="your-api-key"
export PLANE_WORKSPACE_SLUG="your-workspace-slug"

Примечание: Для удалённых HTTP-транспортов (OAuth или PAT) аутентификация обрабатывается через метод подключения (поток OAuth или заголовки PAT) и не требует этих переменных окружения.

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

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

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

  • PLANE_OAUTH_ALLOWED_REDIRECT_URIS: Разделённые запятыми шаблоны URI перенаправления, добавляемые к встроенному белому списку.
export PLANE_OAUTH_ALLOWED_REDIRECT_URIS="https://newclient.com/cb,https://other.app/oauth/*"

Шаблоны поддерживают глоб-маски (* соответствует любому порту, сегменту пути или поддомену). В целях безопасности фиксируйте хост и используйте подстановочные знаки только для порта/пути.

Логирование

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

  • LOG_USER_INFO: Если true, включать в логи информацию о пользователе (PII, такую как отображаемое имя) вместе с непрозрачным идентификатором пользователя. По умолчанию false, поэтому PII никогда не логируется, если явно не разрешено. Только транспорты OAuth и PAT (заголовок) HTTP передают отображаемое имя; stdio не затрагивается.
export LOG_USER_INFO="true"

Доступные инструменты

Сервер предоставляет полный набор инструментов для взаимодействия с Plane. Все инструменты используют модели Pydantic из Plane SDK для типобезопасности и валидации.

Проекты

Имя инструментаОписание
list_projectsСписок всех проектов в рабочем пространстве с возможностью пагинации и фильтрации
create_projectСоздать новый проект с именем, идентификатором и дополнительной конфигурацией
retrieve_projectПолучить проект по ID
update_projectОбновить проект частичными данными
delete_projectУдалить проект по ID
get_project_worklog_summaryПолучить сводку рабочего журнала по проекту
get_project_membersПолучить всех участников проекта
update_project_featuresОбновить конфигурацию функций проекта

Рабочие элементы

Имя инструментаОписание
list_work_itemsСписок всех рабочих элементов в проекте с возможностью фильтрации и пагинации
create_work_itemСоздать новый рабочий элемент с именем, исполнителями, метками и другими атрибутами
retrieve_work_itemПолучить рабочий элемент по ID с возможностью расширения полей
retrieve_work_item_by_identifierПолучить рабочий элемент по идентификатору проекта и порядковому номеру задачи
update_work_itemОбновить рабочий элемент частичными данными
delete_work_itemУдалить рабочий элемент по ID
search_work_itemsПоиск рабочих элементов по всему рабочему пространству с помощью строки запроса

Циклы

Имя инструментаОписание
list_cyclesСписок циклов в проекте (установите archived=true для архивированных)
create_cycleСоздать новый цикл с именем, датами и владельцем
retrieve_cycleПолучить цикл по ID
update_cycleОбновить цикл частичными данными
delete_cycleУдалить цикл по ID
manage_cycle_work_itemsДобавить и/или удалить рабочие элементы в цикле
list_cycle_work_itemsСписок рабочих элементов в цикле
transfer_cycle_work_itemsПеренести рабочие элементы из одного цикла в другой
manage_cycle_archiveАрхивировать или разархивировать цикл

Модули

Имя инструментаОписание
list_modulesСписок модулей в проекте (установите archived=true для архивированных)
create_moduleСоздать новый модуль с именем, датами, статусом и участниками
retrieve_moduleПолучить модуль по ID
update_moduleОбновить модуль частичными данными
delete_moduleУдалить модуль по ID
manage_module_work_itemsДобавить и/или удалить рабочие элементы в модуле
list_module_work_itemsСписок рабочих элементов в модуле
manage_module_archiveАрхивировать или разархивировать модуль

Инициативы

Имя инструментаОписание
list_initiativesСписок всех инициатив в рабочем пространстве
create_initiativeСоздать новую инициативу с именем, датами, состоянием и руководителем
retrieve_initiativeПолучить инициативу по ID
update_initiativeОбновить инициативу частичными данными
delete_initiativeУдалить инициативу по ID

Входящие рабочие элементы

Имя инструментаОписание
list_intake_work_itemsСписок всех входящих рабочих элементов в проекте с возможностью пагинации
create_intake_work_itemСоздать новый входящий рабочий элемент в проекте
retrieve_intake_work_itemПолучить входящий рабочий элемент по ID рабочего элемента с возможностью расширения полей
update_intake_work_itemОбновить входящий рабочий элемент частичными данными
delete_intake_work_itemУдалить входящий рабочий элемент по ID рабочего элемента

Свойства рабочих элементов

Имя инструментаОписание
list_work_item_propertiesСписок свойств рабочих элементов для типа рабочего элемента
create_work_item_propertyСоздать новое свойство рабочего элемента с типом, настройками и правилами валидации
retrieve_work_item_propertyПолучить свойство рабочего элемента по ID
update_work_item_propertyОбновить свойство рабочего элемента частичными данными
delete_work_item_propertyУдалить свойство рабочего элемента по ID

Вехи

Имя инструментаОписание
list_milestonesСписок всех вех в проекте
create_milestoneСоздать новую веху
retrieve_milestoneПолучить веху по ID
update_milestoneОбновить веху по ID
delete_milestoneУдалить веху по ID
manage_milestone_work_itemsДобавить и/или удалить рабочие элементы в вехе
list_milestone_work_itemsСписок рабочих элементов в вехе

Метки

Имя инструментаОписание
list_labelsСписок всех меток в проекте
create_labelСоздать новую метку
retrieve_labelПолучить метку по ID
update_labelОбновить метку по ID
delete_labelУдалить метку по ID

Состояния

Имя инструментаОписание
list_statesСписок всех состояний в проекте
create_stateСоздать новое состояние
retrieve_stateПолучить состояние по ID
update_stateОбновить состояние по ID
delete_stateУдалить состояние по ID

Комментарии к рабочим элементам

Имя инструментаОписание
list_work_item_commentsСписок комментариев к рабочему элементу
retrieve_work_item_commentПолучить конкретный комментарий к рабочему элементу
create_work_item_commentСоздать комментарий к рабочему элементу
update_work_item_commentОбновить комментарий к рабочему элементу
delete_work_item_commentУдалить комментарий к рабочему элементу

Связи рабочих элементов

Имя инструментаОписание
list_work_item_linksСписок связей для рабочего элемента
retrieve_work_item_linkПолучить конкретную связь для рабочего элемента
create_work_item_linkСоздать связь для рабочего элемента
update_work_item_linkОбновить связь для рабочего элемента
delete_work_item_linkУдалить связь для рабочего элемента

Типы рабочих элементов

Имя инструментаОписание
list_work_item_typesСписок всех типов рабочих элементов в проекте
create_work_item_typeСоздать новый тип рабочего элемента
retrieve_work_item_typeПолучить тип рабочего элемента по ID
update_work_item_typeОбновить тип рабочего элемента по ID
delete_work_item_typeУдалить тип рабочего элемента по ID
import_work_item_types_to_projectМассово привязать типы рабочих элементов уровня рабочего пространства к проекту
resolve_work_item_typeНайти или создать именованный тип для проекта, автоматически обрабатывая область действия (рабочее пространство или проект) и импорт

Отношения рабочих элементов

Имя инструментаОписание
list_work_item_relationsСписок отношений для рабочего элемента
create_work_item_relationСоздать отношения для рабочего элемента
remove_work_item_relationУдалить отношение у рабочего элемента

Определения отношений рабочих элементов

Имя инструментаОписание
list_work_item_relation_definitionsСписок пользовательских определений отношений рабочего пространства
create_work_item_relation_definitionСоздать определение отношения рабочего пространства
update_work_item_relation_definitionОбновить определение отношения
delete_work_item_relation_definitionУдалить определение отношения

Активности рабочих элементов

Имя инструментаОписание
list_work_item_activitiesСписок активностей для рабочего элемента
retrieve_work_item_activityПолучить конкретную активность для рабочего элемента

Рабочие журналы

Имя инструментаОписание
list_work_logsСписок записей рабочего журнала для рабочего элемента
create_work_logСоздать запись в рабочем журнале для рабочего элемента
update_work_logОбновить запись в рабочем журнале для рабочего элемента
delete_work_logУдалить запись из рабочего журнала для рабочего элемента

Страницы

Имя инструментаОписание
list_pagesСписок страниц (рабочего пространства или проекта, если указан project_id)
retrieve_pageПолучить страницу по ID (рабочего пространства или проекта, если указан project_id)
create_pageСоздать страницу рабочего пространства или проекта

Рабочие пространства

Имя инструментаОписание
get_workspace_membersПолучить всех участников текущего рабочего пространства
get_featuresПолучить флаги функций (рабочего пространства или проекта, если указан project_id)
update_workspace_featuresОбновить функции текущего рабочего пространства

Пользователи

Имя инструментаОписание
get_meПолучить информацию о текущем аутентифицированном пользователе

Всего инструментов: 100+ инструментов в 20 категориях

Разработка

Запуск тестов

pytest

Форматирование кода

black plane_mcp/
ruff check plane_mcp/

Лицензия

Лицензия MIT — подробности см. в файле LICENSE.

Участие в разработке

Мы рады вашему вкладу! Пожалуйста, смело отправляйте Pull Request.

Уведомление о прекращении поддержки

⚠️ Версия plane-mcp-server на Node.js устарела и больше не поддерживается.

Этот репозиторий представляет новую реализацию сервера Plane MCP на Python+FastMCP. Если вы использовали предыдущую версию на Node.js, пожалуйста, перейдите на эту версию на Python для получения дальнейшей поддержки и обновлений.

Новая реализация предлагает:

  • Улучшенную типобезопасность с моделями Pydantic
  • Повышенную производительность с FastMCP
  • Расширенное покрытие инструментов
  • Активное сопровождение и разработку

Для помощи в миграции обратитесь к примерам конфигурации в этом README или создайте issue для получения поддержки.

Старая конфигурация Node.js (устаревшая):

Если вы использовали предыдущую версию @makeplane/plane-mcp-server на Node.js, ваша конфигурация выглядела так:

{
  "mcpServers": {
    "plane": {
      "command": "npx",
      "args": [
        "-y",
        "@makeplane/plane-mcp-server"
      ],
      "env": {
        "PLANE_API_KEY": "<YOUR_API_KEY>",
        "PLANE_API_HOST_URL": "<HOST_URL_FOR_SELF_HOSTED>",
        "PLANE_WORKSPACE_SLUG": "<YOUR_WORKSPACE_SLUG>"
      }
    }
  }
}

Пожалуйста, перейдите на новую конфигурацию на Python, показанную в разделе «Использование» выше.