Plane Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Plane Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Plane's Model Context Protocol Server - Python реализация 🔌 ⌨️ 🔥
Предоставляет 48 инструментов для работы с проектами, задачами, модулями и циклами в Plane.
Оригинальный проект: makeplane/plane-mcp-server (TypeScript) plane.so | Topics:model-context-protocolmcp-serverpythonfastmcp
get_current_user - информация о текущем пользователеget_workspace_members - список участников workspaceIssue Types (4):
get_issue_type, create_issue_type, update_issue_type, delete_issue_typeStates (5):
list_states, get_state, create_state, update_state, delete_stateLabels (5):
list_labels, get_label, create_label, update_label, delete_labelget_projects - список всех проектовcreate_project - создание нового проектаlist_project_issues - список задач проектаget_issue - детали конкретной задачиget_issue_using_readable_identifier - получить задачу по читаемому ID (FIRST-123)create_issue - создание задачиupdate_issue - обновление задачиdelete_issue - удаление задачиget_issue_comments - получить комментарии к задачеadd_issue_comment - добавить комментарий к задачеlist_modules - список модулей проектаget_module - детали модуляcreate_module - создание модуляupdate_module - обновление модуляdelete_module - удаление модуляlist_module_issues - список задач в модулеadd_module_issues - добавить задачи в модульdelete_module_issue - удалить задачу из модуляlist_cycles - список циклов проектаget_cycle - детали циклаcreate_cycle - создание циклаupdate_cycle - обновление циклаdelete_cycle - удаление циклаlist_cycle_issues - список задач в циклеadd_cycle_issues - добавить задачи в циклdelete_cycle_issue - удалить задачу из циклаtransfer_cycle_issues - перенести задачи из одного цикла в другойget_issue_worklogs - список рабочих логов задачиget_total_worklogs - общее время логов проектаcreate_worklog - создать рабочий логupdate_worklog - обновить рабочий логdelete_worklog - удалить рабочий логВсего: 48 инструментов
Требования: Node.js 18+, uv
✅ Пакет опубликован в NPM: @mikey-semy/plane-mcp
# Использование без установки (npx)
npx -y @mikey-semy/plane-mcp
# Или глобальная установка
npm install -g @mikey-semy/plane-mcp
plane-mcpПеременные окружения:
# Windows PowerShell
$env:PLANE_API_KEY="plane_xxxxxxxxxxxxxxxxxxxx"
$env:PLANE_WORKSPACE_SLUG="your-workspace-slug"
$env:PLANE_API_HOST_URL="https://api.plane.so/" # опционально
# Linux/macOS
export PLANE_API_KEY="plane_xxxxxxxxxxxxxxxxxxxx"
export PLANE_WORKSPACE_SLUG="your-workspace-slug"
export PLANE_API_HOST_URL="https://api.plane.so/" # опционально.env файл:cp .env.example .envОтредактируйте .env и добавьте свои данные:
# Обязательные переменные
PLANE_API_KEY=plane_xxxxxxxxxxxxxxxxxxxx
PLANE_WORKSPACE_SLUG=your-workspace-slug
# Опциональные (значения по умолчанию)
PLANE_API_HOST_URL=https://api.plane.so/
MCP_HOST=0.0.0.0
MCP_PORT=8000
# Порт на хосте (если 8000 занят, измените на другой)
HOST_PORT=8000Примечание: Если порт 8000 уже занят, измените HOST_PORT на другой (например, 8001, 9000).
docker-compose up -dСервер будет доступен на http://localhost:HOST_PORT/ (по умолчанию http://localhost:8000/)
# Проверка здоровья контейнера
docker-compose ps
# Просмотр логов
docker-compose logs -f
# Остановка
docker-compose down# Установка uv (если ещё не установлен)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Клонирование и установка зависимостей
cd plane-mcp
uv sync
# Создание .env файла
cp .env.example .env
# Отредактируйте .env, добавьте свои ключи
# Запуск сервера
uv run plane-mcp| Переменная | Описание | По умолчанию | Обязательная |
|---|---|---|---|
PLANE_API_KEY | API ключ Plane | - | ✅ |
PLANE_WORKSPACE_SLUG | Slug вашего workspace | - | ✅ |
PLANE_API_HOST_URL | URL Plane API | https://api.plane.so/ | ❌ |
MCP_HOST | Хост для HTTP сервера | 0.0.0.0 | ❌ |
MCP_PORT | Порт контейнера (внутренний) | 8000 | ❌ |
HOST_PORT | Порт хоста (внешний) для Docker | 8000 | ❌ |
Для продакшена: используйте .env.production с вашими настройками.
✅ Пакет опубликован и доступен: @mikey-semy/plane-mcp
Любой пользователь может использовать:
npx -y @mikey-semy/plane-mcpИспользуйте Docker Compose для продакшен развёртывания. Сервер будет доступен по HTTP на указанном порту.
Пример URL после развёртывания:
https://your-domain.com:9000/Настройте свой домен в .env.production и используйте reverse proxy (Traefik/Nginx) для SSL.
#### ⚠️ Безопасность развёртывания
ВАЖНО: endpoint предоставляет полный доступ к вашему Plane API!
Рекомендуемые меры защиты:
Пример Traefik с Basic Auth:
labels:
- "traefik.http.middlewares.auth.basicauth.users=user:$$apr1$$..."
- "traefik.http.routers.mcp.middlewares=auth"Для личного использования рекомендуем stdio, а не публичный SSE сервер.
FastMCP автоматически поддерживает:
http://host:port/sse#### 🤔 Какой вариант выбрать?
stdio (локальный) - рекомендуется:
SSE (удалённый) - для централизованного использования:
📖 Подробнее: COPILOT_USAGE.md
#### Подключение через VSCode
Добавьте конфигурацию в .vscode/mcp.json или mcp.json в корне проекта:
Вариант 1: NPM пакет (stdio) - для работы с разными workspace
Позволяет переключаться между workspace просто меняя env:
{
"servers": {
"plane-profitool": {
"command": "npx",
"args": ["-y", "@mikey-semy/plane-mcp"],
"env": {
"PLANE_API_KEY": "YOUR_PLANE_API_KEY",
"PLANE_API_HOST_URL": "https://plane.equiply.ru/",
"PLANE_WORKSPACE_SLUG": "profitool-store"
}
},
"plane-another-project": {
"command": "npx",
"args": ["-y", "@mikey-semy/plane-mcp"],
"env": {
"PLANE_API_KEY": "YOUR_PLANE_API_KEY",
"PLANE_API_HOST_URL": "https://plane.equiply.ru/",
"PLANE_WORKSPACE_SLUG": "another-workspace"
}
}
}
}Вариант 2: Удалённое подключение (SSE)
Подключение к вашему развёрнутому серверу. Внимание: workspace фиксирован на сервере!
Без авторизации:
{
"servers": {
"plane": {
"url": "https://your-mcp-server.example.com:9000/sse"
}
}
}С Basic Auth (рекомендуется для production):
{
"servers": {
"plane": {
"url": "https://mcp.plane.lol.ru:9000/sse",
"headers": {
"Authorization": "Basic YWRtaW46UlolXJlUGFzc3dvcmQxMjM="
}
}
}
}Примечание:
your-mcp-server.example.com на адрес вашего сервера.Authorization заголовка см. _AUTH.mdДля работы с несколькими workspace через : разверните отдельный сервер для каждого workspace.
#### Подключение через Claude Desktop
Добавьте конфигурацию в claude_desktop_config.json:
Windows: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Вариант 1: NPM пакет (рекомендуется)
{
"mcpServers": {
"plane": {
"command": "npx",
"args": ["-y", "@mikey-semy/plane-mcp"],
"env": {
"PLANE_API_KEY": "plane_xxxxxxxxxxxxxxxxxxxx",
"PLANE_WORKSPACE_SLUG": "your-workspace-slug",
"PLANE_API_HOST_URL": "https://api.plane.so/"
}
}
}
}Вариант 2: Локальная установка (uv)
{
"mcpServers": {
"plane": {
"command": "uv",
"args": ["run", "plane-mcp"],
"env": {
"PLANE_API_KEY": "plane_xxxxxxxxxxxxxxxxxxxx",
"PLANE_WORKSPACE_SLUG": "your-workspace-slug",
"PLANE_API_HOST_URL": "https://api.plane.so/"
}
}
}
}После сохранения конфигурации перезапустите VSCode или Claude Desktop.
plane-mcp/
├── src/
│ └── plane_mcp/
│ ├── __init__.py
│ ├── server.py # Основной сервер
│ ├── schemas/ # Pydantic модели (новая структура)
│ │ ├── __init__.py
│ │ ├── base.py # Базовые классы и миксины
│ │ ├── project.py # Project
│ │ ├── issue.py # Issue, IssueType
│ │ ├── module.py # Module, ModuleIssue
│ │ ├── cycle.py # Cycle, CycleIssue
│ │ ├── metadata.py # State, Label
│ │ └── worklog.py # IssueWorkLog
│ ├── common/
│ │ ├── request_helper.py # HTTP клиент для Plane API
│ │ └── version.py
│ └── tools/
│ ├── cycle_issues.py
│ ├── cycles.py
│ ├── issue_comments.py
│ ├── issues.py
│ ├── metadata.py
│ ├── module_issues.py
│ ├── modules.py
│ ├── projects.py
│ ├── user.py
│ └── worklogs.py
├── pyproject.toml
├── Dockerfile
└── docker-compose.ymlВсе Pydantic модели организованы с использованием наследования для DRY-кода:
Базовые классы (base.py):
PlaneBaseModel - корневой класс с общими настройкамиTimestampedModel - добавляет created_at, updated_atAuditedModel - добавляет created_by, updated_byWorkspaceOwnedModel - добавляет workspaceProjectOwnedModel - добавляет projectSoftDeletableModel - добавляет deleted_atArchivableModel - добавляет archived_atExternallyIdentifiableModel - добавляет external_id, external_sourceSortableModel - добавляет sort_orderFullAuditModel - объединяет все вышеперечисленные + idДоменные модели:
Project (наследуется от FullAuditModel)Issue, IssueTypeModule, ModuleIssueCycle, CycleIssueState, LabelIssueWorkLogКаждая схема полностью документирована с описанием всех полей, типов и ограничений.
uv run pytestuv run ruff check --fix
uv run ruff format.env или используйте как переменную окруженияЕсли вы хотите опубликовать свой форк пакета, следуйте инструкциям в NPM_PUBLISH.md.
MIT
Сгенерировано на основе официального Plane MCP Server
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.