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, показанную в разделе «Использование» выше.