mcpBPMSoft
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BPMSOFT_URL | Yes | URL приложения, например https://mycompany.bpmsoft.com | |
| BPMSOFT_DEBUG | No | 1 — логировать method url status duration; trace — ещё и тела с маскированием паролей и токенов | off |
| BPMSOFT_PASSWORD | Yes | Пароль | |
| BPMSOFT_PLATFORM | No | net8 или netframework | net8 |
| BPMSOFT_USERNAME | Yes | Логин | |
| BPMSOFT_PAGE_SIZE | No | Размер страницы при автопагинации | 5000 |
| BPMSOFT_MAX_FILE_SIZE | No | Лимит размера файла (10 МБ) | 10485760 |
| BPMSOFT_ODATA_VERSION | No | 4 или 3 | 4 |
| BPMSOFT_MAX_BATCH_SIZE | No | Лимит подзапросов в $batch | 100 |
| BPMSOFT_REQUEST_TIMEOUT | No | Таймаут одного HTTP-запроса (мс) | 30000 |
| BPMSOFT_LOOKUP_CACHE_TTL | No | TTL кеша lookup в секундах | 300 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| bpm_initA | Инициализирует подключение к BPMSoft (URL, логин, пароль, версия OData, платформа) и проверяет учётные данные. Должен быть вызван первым, если сервер запущен без переменных окружения BPMSOFT_URL/USERNAME/PASSWORD. После успешного вызова все остальные инструменты становятся работоспособными. |
| bpm_get_recordsA | Возвращает записи указанной OData-коллекции с фильтрацией ($filter), выборкой полей ($select), сортировкой ($orderby), $expand и $top/$skip. По умолчанию автопагинация выключена и применяется лимит max_records (избегаем переполнения контекста LLM). Установите auto_paginate=true и/или увеличьте max_records если нужен полный набор. |
| bpm_get_recordA | Возвращает одну запись коллекции по UUID с опциональными $select и $expand. |
| bpm_count_recordsA | Возвращает число записей коллекции через /$count, опционально с $filter. |
| bpm_search_recordsA | Альтернатива bpm_get_records с человекочитаемыми критериями. Принимает массив criteria вида [{field, op, value}], где field может быть на русском (caption), op — на русском («содержит», «равно», «за последние 7 дней», «между») или OData (eq/contains/...). Сервер сам соберёт $filter. Полезен, когда LLM не хочет писать OData синтаксис вручную. |
| bpm_create_recordA | Создаёт запись в коллекции (POST). Lookup-поля можно передавать человекочитаемыми текстовыми значениями — сервер автоматически разрешит UUID. Возвращает созданную запись. |
| bpm_update_recordA | Обновляет поля записи по UUID (PATCH). Lookup-поля с текстовыми значениями разрешаются автоматически. Идемпотентно при одинаковых данных. |
| bpm_delete_recordA | Удаляет запись из коллекции по UUID (DELETE). Действие необратимо. |
| bpm_update_by_filterA | Находит записи по $filter и обновляет каждую через PATCH. Требует параметр expected_count: если найдено иное число записей — операция отменяется (защита от случайного массового обновления). |
| bpm_delete_by_filterA | Находит записи по $filter и удаляет каждую через DELETE. Требует параметр expected_count: при несовпадении операция отменяется. Действие необратимо. |
| bpm_get_collectionsA | Возвращает доступные EntitySet (коллекции) BPMSoft из $metadata. Поддерживает фильтр-подстроку по имени. |
| bpm_get_schemaA | Возвращает схему коллекции: поля, типы, обязательность, lookup-связи. По возможности включает локализованные подписи (рус. названия) полей из SysSchema/SysEntitySchemaColumn. |
| bpm_lookup_valueA | Резолвит UUID записи справочника по человекочитаемому значению (точное совпадение eq). При fuzzy=true и пустом результате повторяет поиск через contains() и возвращает кандидатов. |
| bpm_find_fieldA | Находит поля по фрагменту русского/английского названия среди уже загруженных схем коллекций. Полезно когда пользователь оперирует «ИНН», «Город» и т.п. |
| bpm_describe_instanceA | Возвращает обзор инстанса: число коллекций, главные бизнес-сущности (Contact, Account, Activity, Lead, Opportunity, Order, Case — те, что реально присутствуют), счётчики записей в них, число пользовательских (Usr*) коллекций и кастомных полей в основных сущностях. Кеширует результат на 5 минут. Полезен в самом начале диалога с новым инстансом. |
| bpm_get_enum_valuesA | Возвращает значения справочника, к которому привязано lookup-поле указанной коллекции. Например, для Activity.ActivityCategory вернёт список всех категорий активностей с UUID и названиями. Полезно перед bpm_create_record/bpm_update_record для перечисления вариантов или поиска UUID по точному имени. |
| bpm_workflow_catalogA | Возвращает каталог типичных пользовательских сценариев работы с BPMSoft и какие tool-ы для них вызывать. Карта основных сущностей и их связей. Ограничения BPMSoft 1.8. Используйте в начале сессии, когда LLM-агент не знает с чего начать. |
| bpm_batch_createA | Создаёт несколько записей в одном $batch (только OData v4). Lookup-поля автоматически резолвятся. Поддерживает continue_on_error для пропуска ошибочных записей. |
| bpm_batch_updateA | Обновляет несколько записей в одном $batch (только OData v4). Lookup-поля резолвятся автоматически. Поддерживает continue_on_error. |
| bpm_batch_deleteA | Удаляет несколько записей по UUID в одном $batch (только OData v4). Поддерживает continue_on_error. Действие необратимо. |
| bpm_upload_fileA | Загружает локальный файл в SysImage: создаёт запись метаданных и кладёт бинарные данные. Опционально привязывает к указанной записи по полю-ссылке. |
| bpm_download_fileA | Скачивает бинарные данные из SysImage по UUID и сохраняет в файл (если указан save_path). |
| bpm_field_uploadA | PUT бинарных данных напрямую в поле сущности по схеме {Collection}({id})/{FieldName}. Используйте для произвольных бинарных полей (не только SysImage). |
| bpm_field_downloadB | GET бинарных данных напрямую из поля сущности по схеме {Collection}({id})/{FieldName}. Сохраняет в save_path или возвращает размер. |
| bpm_field_deleteC | DELETE бинарных данных в поле сущности. |
| bpm_register_contactA | Зарегистрировать контакт. Опционально создаёт/находит контрагента (Account) по имени и привязывает к нему контакт. Один вызов вместо create_record(Account)+create_record(Contact)+update_record. Все имена полей могут быть переданы на русском (caption) или латинице. |
| bpm_log_activityA | Зафиксировать активность (задача, звонок, встреча) с привязкой к записи. Тип активности и владелец резолвятся по тексту через справочники. Поддерживает связь с Contact/Account/Opportunity. |
| bpm_set_statusA | Установить статус записи по человекочитаемому имени. Сервер сам найдёт поле-статус в коллекции (StatusId/StageId) и разрешит UUID статуса в его справочнике. |
| bpm_search_unifiedA | Сквозной поиск по подстроке Name в основных коллекциях (Contact, Account, Lead, Opportunity). Возвращает плоский список совпадений с указанием коллекции и UUID. Подходит для запросов вида «найди всё про Иванова». |
| bpm_run_processA | Вызывает ProcessEngineService.svc/{ProcessName}/Execute. Передаёт входные параметры через query-string. Опционально возвращает результат указанного выходного параметра. Используется для запуска кастомных БП, обёртывающих сложную логику (например, ESQ-запросы с агрегацией, массовые операции, бизнес-логика). |
| bpm_exec_process_elementA | Вызывает ProcessEngineService.svc/ExecProcElByUId с UID элемента. Используется для возобновления приостановленных элементов (например, пользовательских задач) уже выполняющегося процесса. |
| bpm_post_feedA | Создаёт запись в коллекции SocialMessage для целевой записи (entity+id). Лента — основной канал комментариев BPMSoft. Параметры: collection (имя сущности), id (UUID записи), message (текст). Опционально: parent_id для ответа на сообщение. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| getting_started | Обзор сервера BPMSoft: ключевые сущности, типичные сценарии и инструменты. Используй этот prompt в начале сессии, чтобы быстро понять, что доступно. |
| quick_search | Сквозной поиск по подстроке в основных коллекциях (Contact, Account, Lead, Opportunity). Подсказывает использовать bpm_search_unified, а затем bpm_get_record для деталей. |
| create_contact_flow | Сценарий регистрации нового контакта (опционально с привязкой к контрагенту). Подсказывает использовать bpm_register_contact с указанными параметрами. |
| weekly_report | Подготовка сводки за последние N дней: новые контакты, активные сделки, завершённые задачи. Использует criteria-DSL и операторы относительных дат. |
| cleanup_duplicates_check | Поиск потенциальных дубликатов в коллекции по указанному полю. Только READ-операции — никаких удалений без подтверждения пользователя. |
| pipeline_analysis | Анализ воронки Opportunity: распределение по стадиям, средняя сумма, конверсии. При необходимости запрашивает схему через bpm_get_schema. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| bpmsoft_collections | Перечень всех доступных EntitySet (коллекций) BPMSoft с типами сущностей. Источник — $metadata. |
TDQS
Scored across 32 tools
Tools have distinct purposes, but some overlap exists between bpm_get_records, bpm_search_records, and bpm_search_unified. However, descriptions clarify differences.
All tools use a consistent bpm_verb_noun pattern in snake_case, making it easy to predict tool names.
32 tools is high, but the server covers a complex domain (BPMSoft). While slightly above ideal, each tool serves a distinct purpose.
The tool set covers CRUD, batch, search, file handling, processes, and more. Minor gaps like lacking process management tools, but overall comprehensive.