PlanfixMCP
This server enables managing Planfix entities:
Tasks
Get task by ID
List tasks with complex filters
Create task with full field support
Update task (supports silent mode)
Get task comments
Add task comment
Update task comment
Add data tag to task (new or existing comment)
List task files
List task templates
List recurring tasks
List task filters
Contacts
Get contact by ID
List contacts with filters
Create contact
Update contact (supports silent mode)
Import contacts (bulk with duplicate handling)
Get contact comments
Add contact comment
Update contact comment
Add data tag to contact (new or existing comment)
List contact files
List contact templates
List contact groups
List contact filters
Projects
Get project by ID
List projects with filters
Create project
Update project (supports silent mode)
List project files
List project templates
List project groups
Comments
Get comment by ID
List comments with date/author filters
Delete comment
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PlanfixMCPList all tasks in the 'Development' project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PlanfixMCP
MCP-сервер для ПланФикс REST API, предоставляющий инструменты для работы с задачами, контактами, проектами и комментариями в LLM-ассистентах.
Установка и запуск
Установите uv.
Склонируйте проект и установите зависимости:
git clone <url> cd PlanfixMCP uv syncСоздайте файл
.envна основе.env.exampleи укажите в нем:PLANFIX_BASE_URL: Базовый URL вашего REST API (например,https://account.planfix.com/rest).PLANFIX_API_TOKEN: Ваш Bearer-токен.
Related MCP server: openapi-mcp
Настройка API Token
Получение токена: перейдите в Управление аккаунтом -> Интеграции -> REST API. Создайте приложение или выберите существующее, затем скопируйте
Bearer-токен. Подробности в справке.Настройка: скопируйте файл
.env.exampleв.envи вставьте полученный токен в полеPLANFIX_API_TOKEN.
Настройка прав доступа (Scopes)
В настройках вашего аккаунта (Управление аккаунтом -> Интеграции -> REST API) выберите права:
Рекомендуемый минимум (только чтение):
common_metadata+ все права*_readonly(task, comment, project, contact, object, file).Для записи (создание/обновление): добавьте
*_add,*_update.Избегайте:
system_settings,user_add,user_update— они избыточны.
Затем запустите сервер (через stdio для MCP-клиента):
uv run planfix-mcpКонфигурация
Все параметры задаются через .env файл или переменные окружения:
Переменная | Описание |
| Базовый URL REST API ПланФикс. |
| Bearer-токен авторизации. |
| Если |
| Если |
| Список тегов OpenAPI для фильтрации инструментов (по умолчанию: |
| Базовый каталог для выгрузки задач в файлы (по умолчанию: |
| Имя аккаунта для имён файлов и frontmatter (по умолчанию — поддомен из |
| Сколько комментариев в одном файле Markdown (по умолчанию: |
Режим «только для чтения»
PLANFIX_READ_ONLY=true отключает все изменяющие операции и оставляет только чтение данных.
В этом режиме доступны:
все GET-маршруты (
task_by_id,contact_by_id,project_by_id, ...);POST-маршруты чтения списков — operationId начинается с
get-(task_list,task_comments,comment_list,contact_list,project_list, ...);справочные POST-маршруты: списки фильтров, записи data-тегов и справочников (
task_filters,contact_filters, ...).
Создание, обновление и удаление задач, контактов, проектов, комментариев и файлов в этом режиме недоступны. Для записи добавьте права из раздела «Настройка прав доступа (Scopes)» и запустите сервер без этого флага.
CLI-аргументы
Все настройки из .env можно переопределить при запуске:
Флаг | Назначение |
| Транспорт MCP (по умолчанию |
| Базовый URL REST API (как |
| Bearer-токен (как |
| Теги OpenAPI для включения инструментов (как |
| Включение/исключение операций по operationId. |
| Валидировать ответы по схемам спеки (по умолчанию |
| Базовый каталог выгрузки задач (как |
| Имя аккаунта для frontmatter (как |
| Комментариев в одном файле Markdown (как |
| Адрес и порт для HTTP-транспорта (по умолчанию |
Массовая выгрузка и сводки
Для больших объёмов данных (сотни задач, тысячи комментариев) не выгружайте сырые данные в диалог — сервер сам делает тяжёлую работу и возвращает компактный результат:
export_tasks— сервер пагинирует/task/list, строит дерево задач (проект → задача → подзадачи), при необходимости тянет/task/{id}/comments/listи пишет файлы (Obsidian Markdown или JSON). Возвращает только манифест[{taskId, name, project, files, commentCount}]. В контекст LLM не попадает ни одна строка сырых данных.
Структура каталога выгрузки:
<PLANFIX_EXPORT_DIR>/
Проект/
Задача/
Задача-1.md ← описание + комментарии 1..100
Задача-2.md ← комментарии 101..200
Подзадача/
Подзадача-1.md
Другая задача/ ...
Без проекта/ ...Задачи без проекта складываются в папку «Без проекта».
При совпадении имени папки/файла добавляется номер задачи: «Задача (42)».
Подзадачи определяются рекурсивно через фильтр ПланФикс «Непосредственная надзадача» (type 73); дерево строится от задач, отобранных фильтром.
Markdown-файлы формируются в Obsidian-формате:
имя файла:
<название задачи>-<N>.md, гдеN— номер чанка комментариев (описание и frontmatter — только в первом файле);YAML-frontmatter:
account,taskId,project,status,created,start,due,updated,commentCount,chunk,totalChunks;HTML из описаний и комментариев вырезается (чистый текст);
каждый комментарий — блок
- {дата-время} · [{commentId}](https://{host}/task/{id}/?comment={cid})со ссылкой на комментарий в ПланФикс.task_summary— компактная сводка по задачам без записи файлов:[{taskId, name, status, endDateTime, commentCount}].
Оба инструмента принимают шорткаты фильтрации (сервер превращает их в сложные фильтры ПланФикс):
Параметр | Поле ПланФикс |
| Дата планируемого завершения (type 14) |
| Дата планируемого начала (type 13) |
| Постановщик / исполнитель / аудитор (1/2/3), формат |
| Контрагент (type 7) |
| Проект (type 5), номер проекта |
| Сохранённый фильтр задач (из |
| Полный массив |
Даты принимаются в ISO-формате (2026-08-01). output_dir у export_tasks —
относительный путь внутри PLANFIX_EXPORT_DIR; абсолютные пути и .. отклоняются.
PLANFIX_EXPORT_DIR в свою очередь задаёт базовый каталог: относительный путь
резолвится от cwd, в котором запущен сервер (обычно — проект, открытый в MCP-клиенте).
Примеры использования
Полная выгрузка всех видимых задач с комментариями в export/ (значения по умолчанию):
export_tasks()Выгрузка задач конкретного проекта с комментариями в отдельную подпапку:
export_tasks(project=42, output_dir="project-42", include_comments=true)Выгрузка задач со сроком раньше 01.08.2026, без комментариев:
export_tasks(end_date_before="2026-08-01", include_comments=false)Выгрузка задач исполнителя в JSON (машиночитаемый формат без комментариев):
export_tasks(assignee="user:5", format="json")Выгрузка по сохранённому фильтру задач (id из task_filters) с заданным полем поиска:
export_tasks(filter_id="12345", fields="id,name,status,endDateTime")Сводка по проекту без записи файлов (быстрый обзор):
task_summary(project=42)Сводка задач со сроками, попадающими в окно, с количеством комментариев:
task_summary(start_date_after="2026-08-01", end_date_before="2026-08-15", include_comment_counts=true)Промпты для AI-агента
Готовые формулировки — вставьте их в диалог с LLM-ассистентом, у которого подключён этот MCP-сервер:
«Выгрузи все мои задачи с комментариями в Obsidian-файлы в папку
planfix-exportи покажи манифест выгрузки.»
«Сделай сводку всех задач проекта "Внедрение": id, название, статус и срок — без выгрузки файлов.»
«Найди задачи со сроком раньше 01.09.2026 и выгрузи их в файлы без комментариев.»
«Выгрузи задачи, где исполнитель user:5, в JSON-формате.»
«Покажи сводку задач, где я постановщик, отсортированных по сроку.»
«Собери задачи по сохранённому фильтру "Горящие" и выгрузи с комментариями в папку
backup/.»
«Обойди задачи проекта 42 и напиши краткое резюме по каждой, используя выгруженные файлы, а не сырые данные.»
Использование в MCP-клиентах
Добавьте сервер в mcp вашего opencode.json (или аналогичного конфига клиента):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"planfix": {
"type": "local",
"command": ["uv", "--project", "D:/Projects/dy-team/PlanfixMCP", "run", "--env-file", ".env", "planfix-mcp"],
"cwd": ".",
"enabled": true
}
}
}Локальный .env проекта MCP-клиентом не читается, поэтому он подгружается явно:
--project D:/Projects/dy-team/PlanfixMCP— путь к проекту (укажите свой послеgit clone);--env-file .env— загружает переменные из файла.envпроекта;cwd: "."— рабочая директория сервера (относительный путь.envи каталог выгрузки резолвятся от неё; по умолчанию — директория рабочего пространства клиента).
Сервер объявляется один раз в блоке mcp и становится доступен всем агентам
opencode — встроенным (build, plan) и кастомным. Отдельно прописывать его для
каждого агента не нужно: инструменты planfix_* сразу появляются в их списке
инструментов.
Подключение для других агентов
Подключение для любого другого агента аналогичное — используется тот же самый
блок mcp с той же командой. Кастомному агенту достаточно просто существовать в
конфиге, и сервер будет ему доступен:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"planfix": {
"type": "local",
"command": ["uv", "--project", "D:/Projects/dy-team/PlanfixMCP", "run", "--env-file", ".env", "planfix-mcp"],
"cwd": ".",
"enabled": true
}
},
"agent": {
"planfix-analyst": {
"description": "Готовит сводки и выгрузки по задачам ПланФикс.",
"mode": "subagent",
"prompt": "Ты работаешь с задачами ПланФикс: для обзора используй planfix_task_summary, для массовой выгрузки — planfix_export_tasks."
}
}
}Если нужно ограничить доступ к инструментам для конкретного агента — сделайте это
через permission агента (см. документацию opencode),
сам сервер прописывать у агента не требуется.
Установка через AI-агента
Вы можете поручить установку и настройку этого MCP-сервера AI-агенту, используя следующий промпт:
"Клонируй репозиторий PlanfixMCP по адресу
<url>, установи зависимости черезuv syncи помоги мне создать файл.envс настройками доступа к API ПланФикс (PLANFIX_BASE_URLиPLANFIX_API_TOKEN). После этого проверь работоспособность тестами и добавь конфигурацию сервера в мойopencode.json."
Разработка и вклад в проект
Мы приветствуем Pull Requests! Если вы хотите помочь в развитии проекта:
Развертывание окружения:
uv syncЗапуск тестов: Перед отправкой изменений убедитесь, что все тесты проходят:
uv run pytest -qОбновление OpenAPI-спеки: Если API ПланФикс изменилось, обновите локальную копию спеки и перегенерируйте словари:
uv run python scripts/update_spec.py uv run python scripts/gen_dictionaries.pyPull Requests:
Создайте отдельную ветку для ваших изменений.
Убедитесь, что код соответствует стилю проекта (Python 3.10+, snake_case).
Важно: Никогда не коммитьте
.envфайлы или API-токены.
Available Tools
37 toolsadd_contact_commentC
Добавить комментарий к контакту
Inputs: id (required), files, owner, dateTime, +7 more. Returns: id, result
add_contact_datatagD
Добавить значение доп. поля в новый комментарий контакта
Inputs: id (required), items, dataTag. Returns: keys, result, commentId
add_contact_datatag_to_commentB
Добавить значение доп. поля в существующий комментарий контакта
Inputs: id (required), commentId (required), items, dataTag. Returns: keys, result
add_task_commentC
Добавить комментарий к задаче
Inputs: id (required), files, owner, silent, +8 more. Returns: id, result
add_task_datatagC
Добавить значение доп. поля в новый комментарий задачи
Inputs: id (required), items, dataTag. Returns: keys, result, commentId
add_task_datatag_to_commentC
Добавить значение доп. поля в существующий комментарий задачи
Inputs: id (required), commentId (required), items, dataTag. Returns: keys, result
comment_by_idD
Комментарий по номеру
Inputs: id (required), fields, sourceId. Returns: result, comment
comment_listD
Список комментариев
Inputs: fields, offset, filters, pageSize, +3 more. Returns: result, comments
contact_by_idD
Контакт по номеру
Inputs: id (required), fields, sourceId. Returns: result, contact
contact_commentsD
Комментарии к контакту
Inputs: id (required), fields, offset, pageSize, +2 more. Returns: result, comments
contact_file_listC
Файлы, прикреплённые к контакту
Inputs: id (required), onlyFromDescription. Returns: files, result
contact_filtersD
Список фильтров контактов
Inputs: no named parameters. Returns: result, filters
contact_group_listC
Группы контактов
Inputs: fields. Returns: groups, result
contact_listC
Список контактов и компаний
Inputs: fields, offset, filters, filterId, +5 more. Returns: result, contacts
contact_template_listD
Шаблоны контактов и компаний
Inputs: fields, offset, pageSize, sourceId, +1 more. Returns: result, templates
create_contactC
Создать контакт или компанию
Inputs: id, name, site, email, +28 more. Returns: id, result
create_projectD
Создать проект
Inputs: name, files, group, owner, +19 more. Returns: id, result
create_taskD
Создать задачу
Inputs: id, name, files, object, +32 more. Returns: id, result
delete_commentC
Удалить комментарий
Inputs: id (required).
import_contactsC
Импортировать список контактов
Inputs: silent, contacts, sourceId, companyTemplateId, +4 more.
project_by_idD
Проект по номеру
Inputs: id (required), fields, sourceId. Returns: result, project
project_file_listC
Файлы, прикреплённые к проекту
Inputs: id (required), offset, pageSize. Returns: files, result
project_group_listD
Группы проектов
Inputs: fields. Returns: groups, result
project_listD
Список проектов
Inputs: fields, offset, filters, pageSize, +1 more. Returns: result, projects
project_template_listD
Шаблоны проектов
Inputs: fields, offset, pageSize, sourceId. Returns: result, templates
recurring_task_listC
Список периодических задач
Inputs: fields, offset, pageSize, sourceId. Returns: tasks, result
task_by_idC
Задача по номеру
Inputs: id (required), fields, sourceId. Returns: task, result
task_commentsD
Комментарии к задаче
Inputs: id (required), fields, offset, pageSize, +2 more. Returns: result, comments
task_file_listC
Файлы, прикреплённые к задаче
Inputs: id (required), onlyFromDescription. Returns: files, result
task_filtersB
Список фильтров задач
Inputs: no named parameters. Returns: result, filters
task_listC
Список задач по фильтру
Inputs: fields, offset, filters, filterId, +3 more. Returns: tasks, result
task_template_listC
Список шаблонов задач
Inputs: fields, offset, pageSize, sourceId. Returns: result, templates
update_contactC
Обновить контакт по номеру
Inputs: id__path (required), id, name, site, +30 more. Returns: result, failures
update_contact_commentC
Обновить комментарий к контакту
Inputs: id (required), commentId (required), files, silent, +7 more.
update_projectC
Обновить проект по номеру
Inputs: id (required), name, group, owner, +20 more. Returns: failures
update_taskC
Обновить задачу по номеру
Inputs: id__path (required), id, name, files, +36 more. Returns: failures
update_task_commentC
Обновить комментарий к задаче
Inputs: id (required), commentId (required), files, silent, +7 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
TDQS
Scored across 37 tools
Tools are grouped by resource (contact, task, project, comment) with clear prefixes, making most purposes distinct. However, the two datatag tools for new vs existing comments and the generic comment tools could cause some confusion.
Naming is mixed: some tools follow verb-first (update_contact, create_task) while others are noun-first (contact_list, task_by_id). While still readable, the inconsistency makes it harder to predict tool names.
With 37 tools, the set is quite large, exceeding the 25-tool threshold. Many tools cover niche features like datatags and templates, which adds cognitive load and makes the set feel over-scoped.
The toolset covers create, read, and update for contacts, tasks, and projects, but lacks delete operations for these core resources. Comments and datatags are well handled, but the missing deletes are a notable gap.
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
MCP server for progressive tool usage at any scale (see https://klavis.ai)
MCP server for generating rough-draft project plans from natural-language prompts.
Related MCP Servers
- AlicenseCqualityDmaintenanceMCP server that turns OpenAPI specs into tools and calls API121 npm5MIT
- AlicenseNot gradedqualityDmaintenanceAutomatically generates MCP server tools from OpenAPI specifications, enabling LLMs to interact with any API defined by an OpenAPI spec through natural language.36 npmMIT
- AlicenseNot gradedqualityCmaintenanceA generic MCP server that converts any OpenAPI/Swagger specification into MCP tools, enabling AI assistants to search, explore, and execute REST APIs.MIT
- AlicenseNot gradedqualityDmaintenanceA generic MCP server that builds its tools at runtime from any OpenAPI specification, enabling interaction with any REST API through natural language.MIT