Catalog PyPI
PACKAGE EXPLORERView in registry

1c-formsserver

PyPI

MCP server for 1C managed form generation, validation, and search

1c1c-enterpriseedtform-xmlformsgenerationlogformmanaged-formsmcpvalidation
Versions collected1
Direct dependencies10From release 0.20260729
Last observed20 Oct, 15:15 UTC

README

Version 0.20260729 documentation

1c-formsserver

MCP-сервер для генерации, валидации, конвертации и поиска управляемых форм 1С:Предприятие.

Поддерживает три формата: Конфигуратор (logform), Managed (managed) и EDT (edt).

Быстрый старт

Docker (рекомендуется)

docker compose up -d

Сервер доступен на http://localhost:8011/mcp.

Локально

pip install -e .
python -m mcp_forms

Подключение к Claude Code

В settings.json:

{
  "mcpServers": {
    "1c-forms": {
      "url": "http://localhost:8011/mcp"
    }
  }
}

Форматы форм

Сервер работает с тремя форматами Form.xml / Form.form:

Конфигуратор (logform)Managed (managed)EDT (edt)
ФайлForm.xmlForm.xmlForm.form
Root<Form xmlns="...xcf/logform"><ManagedForm xmlns="...xcf/managed"><form:Form xmlns:form="...dt/form">
Элементы<InputField name="X" id="1"><InputField><Name>X</Name><Id>1</Id><items xsi:type="form:FormField"><name>X</name><id>1</id><type>InputField</type>
DataPath<DataPath>Объект.Поле</DataPath><DataPath>Объект.Поле</DataPath><dataPath xsi:type="form:DataPath"><segments>Объект.Поле</segments></dataPath>
Типы<v8:Type>cfg:CatalogObject.X</v8:Type><Type>CatalogObject.X</Type><valueType><types>CatalogObject.X</types></valueType>
Companion<ContextMenu> + <ExtendedTooltip>нет<contextMenu> + <extendedTooltip>
ExtInfoнетнет<extInfo xsi:type="form:InputFieldExtInfo">

Формат определяется автоматически по namespace корневого элемента. Конвертация между всеми тремя форматами с сохранением семантики.

MCP-инструменты (18)

Генерация форм

generate_form_template — быстрая генерация типовой формы по шаблону. Лучший выбор для начала.

Параметры:
  template: "catalog_element" | "document" | "data_processor"
  object_name: имя объекта ("Номенклатура", "ЗаказКлиента")
  fields: список полей (["Наименование", "Артикул"])
  format: "logform" (по умолчанию) | "managed" | "edt"

  Для document:
    header_fields: поля шапки (["Дата", "Номер", "Контрагент"])
    table_name: имя ТЧ ("Товары")
    table_columns: колонки ТЧ (["Номенклатура", "Количество", "Сумма"])

generate_form — генерация по произвольной JSON-спецификации. Для нестандартных форм.

Параметры:
  spec: {
    format: "logform" | "managed" | "edt",
    object_type: "Catalog" | "Document" | "DataProcessor",
    object_name: "Номенклатура",
    title: "Заголовок формы",
    attributes: [
      {name: "Объект", type_name: "CatalogObject.Номенклатура", is_main: true, save_data: true}
    ],
    elements: [
      {name: "Поле", data_path: "Объект.Поле", field_type: "InputField"},
      {name: "Группа", group_type: "UsualGroup", title: "Заголовок", direction: "Vertical",
       children: [{name: "Поле2", data_path: "Объект.Поле2"}]},
      {name: "Таблица", data_path: "Объект.Товары",
       columns: [{name: "Номенклатура", data_path: "Объект.Товары.Номенклатура"}]}
    ]
  }

generate_form_from_metadata — автогенерация на основе метаданных из EDT. Самый быстрый способ при наличии EDT.

Параметры:
  object_type: "Catalog" | "Document" | "DataProcessor"
  object_name: имя объекта
  format: "logform" | "managed" | "edt"
  include_table_parts: true | false (включать ТЧ, по умолчанию true)

list_form_templates — список доступных шаблонов с описанием параметров.

Валидация

validate_form — проверка Form.xml / Form.form на ошибки. Вызывать после каждой генерации.

Параметры:
  xml_content: содержимое файла формы

Проверки:
  - logform: уникальность id, companion-элементы (ContextMenu, ExtendedTooltip),
             имена атрибутов, привязка DataPath → Attribute
  - edt: xsi:type у items, уникальность id (раздельно для items/attributes/commands),
          dataPath/segments, структура attributes
  - managed: базовая проверка структуры

get_form_info — быстрый обзор формы: формат, количество элементов, атрибутов, структура.

validate_form_edt — расширенная валидация: встроенные проверки + проверки EDT (если EDT доступен).

Параметры:
  xml_content: содержимое формы
  form_fqn: FQN формы в EDT (напр. "Catalog.Номенклатура.Form.ФормаЭлемента"), опционально

Конвертация

convert_form — конвертация между форматами.

Параметры:
  xml_content: исходный XML
  target_format: "logform" | "managed" | "edt"

Маршруты:
  logform ↔ managed — напрямую
  logform ↔ edt    — напрямую
  managed ↔ edt    — через промежуточный logform

При конвертации:

  • Companion-элементы добавляются/преобразуются автоматически
  • DataPath конвертируется между форматами (точечная нотация ↔ segments)
  • Типы: cfg: prefix добавляется/удаляется автоматически
  • Структура элементов: теги ↔ items/xsi:type

Схема и справка

get_form_prompt — полная база знаний по Form.xml: теги, атрибуты, допустимые значения. Обязательно вызвать перед первой генерацией в сессии — без этого LLM не знает допустимые теги.

get_form_schema — JSON-справочник элементов формы с описанием свойств.

get_xcore_model_info — метамодель EDT из Xcore: классы (FormField, FormGroup, Table, Button, Decoration), перечисления, свойства.

Поиск примеров

search_form_examples — поиск форм в базе знаний по тексту (FTS) или вектору (embeddings).

Параметры:
  query: поисковый запрос ("форма справочника с таблицей")
  object_type: фильтр по типу ("Catalog", "Document")
  limit: количество результатов (по умолчанию 5)

index_forms — индексация Form.xml из директории конфигурации в базу поиска.

Параметры:
  directory: путь к конфигурации (напр. "/path/to/src")
  pattern: глоб-паттерн (по умолчанию "**/Form.xml")

get_form_example — загрузить полный XML примера по id из результатов поиска.

EDT интеграция

Требует запущенный EDT MCP сервер (EDT_ENABLED=true).

edt_status — проверить доступность EDT. Вызвать перед другими EDT-инструментами.

get_object_metadata — получить реквизиты и табличные части объекта из проекта EDT.

Параметры:
  object_type: "Catalog" | "Document" | "DataProcessor" и др.
  object_name: "Номенклатура"

form_screenshot — PNG-скриншот формы из WYSIWYG-редактора EDT.

Параметры:
  form_fqn: "Catalog.Номенклатура.Form.ФормаЭлемента"

Информация

get_server_info — версия сервера, список инструментов, поддерживаемые форматы.

Типовые сценарии

Создать форму для EDT-проекта

1. get_form_prompt                    → загрузить базу знаний
2. generate_form_template             → template="catalog_element", object_name="Товары",
                                        fields=["Наименование","Артикул","Цена"], format="edt"
3. validate_form                      → проверить результат
4. Сохранить как Form.form в EDT-проект

Создать форму из метаданных EDT

1. edt_status                         → проверить доступность
2. get_object_metadata                → object_type="Document", object_name="ЗаказКлиента"
3. generate_form_from_metadata        → format="edt", include_table_parts=true
4. validate_form_edt                  → расширенная валидация

Конвертировать форму Конфигуратора в EDT

1. convert_form                       → xml_content=<Form...>, target_format="edt"
2. validate_form                      → проверить результат
3. Сохранить как Form.form

Найти пример и создать похожую форму

1. search_form_examples               → query="документ с табличной частью товары"
2. get_form_example                   → form_id из результатов
3. Использовать пример как образец для generate_form

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

Через переменные окружения или .env файл:

ПеременнаяПо умолчаниюОписание
PORT8011Порт сервера
TRANSPORTstreamable-httpТранспорт MCP (streamable-http, sse)
DATABASES_PATH./databasesПуть к базам данных поиска
DATA_PATH./dataПуть к данным (схемы, промпт)
EDT_ENABLEDfalseВключить интеграцию с EDT MCP
EDT_MCP_URLhttp://localhost:9999/sseURL EDT MCP сервера
EDT_TIMEOUT10Таймаут запросов к EDT (сек)

Полный список — в .env.example.

Структура проекта

src/mcp_forms/
├── server.py           # FastMCP сервер (18 инструментов)
├── config.py           # Конфигурация из env vars
├── edt_client.py       # Клиент EDT MCP (https://github.com/DitriXNew/EDT-MCP)
├── schema/             # Парсер Xcore, Pydantic-модель, валидатор
├── forms/              # Загрузчик, генератор, конвертер, шаблоны
│   ├── loader.py       # Автоопределение формата, загрузка XML
│   ├── generator.py    # Генерация logform / managed / edt
│   ├── converter.py    # Конвертация между форматами
│   └── templates.py    # Шаблоны (catalog, document, data_processor)
├── search/             # Индексатор, эмбеддинги, FTS + vector поиск
└── tools/              # MCP-инструменты (validate, generate, convert, search, edt)

Зависимости

Core: fastmcp, lxml, pydantic, python-dotenv, uvicorn

Search (опционально):

pip install -e ".[search]"

Добавляет sentence-transformers для векторного поиска примеров форм.

Тесты

pip install -e ".[dev]"
pytest tests/ -v

91 тест: валидация (logform, managed, edt), конвертация (roundtrip между всеми форматами), генерация, шаблоны, поиск, EDT интеграция.

Лицензия

MIT

Downloads & popularity

1downloads
1-day window · source-reported counts19 Oct 2026
112560
2026-07-29: 112 · observed 2026-10-20T15:33:58.0104960Z · period 2026-07-29–2026-07-292026-07-30: 3 · observed 2026-10-20T15:33:58.0104960Z · period 2026-07-30–2026-07-302026-07-31: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-07-31–2026-07-312026-08-01: 4 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-01–2026-08-012026-08-02: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-02–2026-08-022026-08-03: 8 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-03–2026-08-032026-08-04: 12 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-04–2026-08-042026-08-05: 2 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-05–2026-08-052026-08-06: 4 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-06–2026-08-062026-08-07: 2 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-07–2026-08-072026-08-08: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-08–2026-08-082026-08-09: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-09–2026-08-092026-08-10: 2 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-10–2026-08-102026-08-12: 2 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-12–2026-08-122026-08-13: 3 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-13–2026-08-132026-08-14: 7 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-14–2026-08-142026-08-15: 3 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-15–2026-08-152026-08-16: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-16–2026-08-162026-08-17: 9 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-17–2026-08-172026-08-18: 22 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-18–2026-08-182026-08-19: 2 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-19–2026-08-192026-08-20: 4 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-20–2026-08-202026-08-21: 2 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-21–2026-08-212026-08-23: 7 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-23–2026-08-232026-08-24: 9 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-24–2026-08-242026-08-28: 9 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-28–2026-08-282026-08-29: 2 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-29–2026-08-292026-08-31: 3 · observed 2026-10-20T15:33:58.0104960Z · period 2026-08-31–2026-08-312026-09-01: 4 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-01–2026-09-012026-09-03: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-03–2026-09-032026-09-05: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-05–2026-09-052026-09-06: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-06–2026-09-062026-09-07: 5 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-07–2026-09-072026-09-09: 3 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-09–2026-09-092026-09-10: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-10–2026-09-102026-09-11: 3 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-11–2026-09-112026-09-12: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-12–2026-09-122026-09-14: 2 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-14–2026-09-142026-09-16: 4 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-16–2026-09-162026-09-17: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-17–2026-09-172026-09-18: 2 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-18–2026-09-182026-09-19: 2 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-19–2026-09-192026-09-20: 3 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-20–2026-09-202026-09-21: 4 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-21–2026-09-212026-09-23: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-23–2026-09-232026-09-24: 2 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-24–2026-09-242026-09-25: 4 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-25–2026-09-252026-09-26: 3 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-26–2026-09-262026-09-27: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-27–2026-09-272026-09-29: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-29–2026-09-292026-09-30: 5 · observed 2026-10-20T15:33:58.0104960Z · period 2026-09-30–2026-09-302026-10-01: 2 · observed 2026-10-20T15:33:58.0104960Z · period 2026-10-01–2026-10-012026-10-03: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-10-03–2026-10-032026-10-05: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-10-05–2026-10-052026-10-06: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-10-06–2026-10-062026-10-07: 5 · observed 2026-10-20T15:33:58.0104960Z · period 2026-10-07–2026-10-072026-10-08: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-10-08–2026-10-082026-10-09: 2 · observed 2026-10-20T15:33:58.0104960Z · period 2026-10-09–2026-10-092026-10-10: 2 · observed 2026-10-20T15:33:58.0104960Z · period 2026-10-10–2026-10-102026-10-12: 3 · observed 2026-10-20T15:33:58.0104960Z · period 2026-10-12–2026-10-122026-10-13: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-10-13–2026-10-132026-10-15: 2 · observed 2026-10-20T15:33:58.0104960Z · period 2026-10-15–2026-10-152026-10-16: 3 · observed 2026-10-20T15:33:58.0104960Z · period 2026-10-16–2026-10-162026-10-17: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-10-17–2026-10-172026-10-19: 1 · observed 2026-10-20T15:33:58.0104960Z · period 2026-10-19–2026-10-19
29 Jul19 Oct

pypistats · 65 observations shown. Missing days are unknown. Source category: overall: without mirrors.

View observed values
Date / source periodValueObserved at
2026-10-19 – 2026-10-1912026-10-20T15:33:58.0104960Z
2026-10-17 – 2026-10-1712026-10-20T15:33:58.0104960Z
2026-10-16 – 2026-10-1632026-10-20T15:33:58.0104960Z
2026-10-15 – 2026-10-1522026-10-20T15:33:58.0104960Z
2026-10-13 – 2026-10-1312026-10-20T15:33:58.0104960Z
2026-10-12 – 2026-10-1232026-10-20T15:33:58.0104960Z
2026-10-10 – 2026-10-1022026-10-20T15:33:58.0104960Z
2026-10-09 – 2026-10-0922026-10-20T15:33:58.0104960Z
2026-10-08 – 2026-10-0812026-10-20T15:33:58.0104960Z
2026-10-07 – 2026-10-0752026-10-20T15:33:58.0104960Z
2026-10-06 – 2026-10-0612026-10-20T15:33:58.0104960Z
2026-10-05 – 2026-10-0512026-10-20T15:33:58.0104960Z
2026-10-03 – 2026-10-0312026-10-20T15:33:58.0104960Z
2026-10-01 – 2026-10-0122026-10-20T15:33:58.0104960Z
2026-09-30 – 2026-09-3052026-10-20T15:33:58.0104960Z
2026-09-29 – 2026-09-2912026-10-20T15:33:58.0104960Z
2026-09-27 – 2026-09-2712026-10-20T15:33:58.0104960Z
2026-09-26 – 2026-09-2632026-10-20T15:33:58.0104960Z
2026-09-25 – 2026-09-2542026-10-20T15:33:58.0104960Z
2026-09-24 – 2026-09-2422026-10-20T15:33:58.0104960Z
2026-09-23 – 2026-09-2312026-10-20T15:33:58.0104960Z
2026-09-21 – 2026-09-2142026-10-20T15:33:58.0104960Z
2026-09-20 – 2026-09-2032026-10-20T15:33:58.0104960Z
2026-09-19 – 2026-09-1922026-10-20T15:33:58.0104960Z
2026-09-18 – 2026-09-1822026-10-20T15:33:58.0104960Z
2026-09-17 – 2026-09-1712026-10-20T15:33:58.0104960Z
2026-09-16 – 2026-09-1642026-10-20T15:33:58.0104960Z
2026-09-14 – 2026-09-1422026-10-20T15:33:58.0104960Z
2026-09-12 – 2026-09-1212026-10-20T15:33:58.0104960Z
2026-09-11 – 2026-09-1132026-10-20T15:33:58.0104960Z
2026-09-10 – 2026-09-1012026-10-20T15:33:58.0104960Z
2026-09-09 – 2026-09-0932026-10-20T15:33:58.0104960Z
2026-09-07 – 2026-09-0752026-10-20T15:33:58.0104960Z
2026-09-06 – 2026-09-0612026-10-20T15:33:58.0104960Z
2026-09-05 – 2026-09-0512026-10-20T15:33:58.0104960Z
2026-09-03 – 2026-09-0312026-10-20T15:33:58.0104960Z
2026-09-01 – 2026-09-0142026-10-20T15:33:58.0104960Z
2026-08-31 – 2026-08-3132026-10-20T15:33:58.0104960Z
2026-08-29 – 2026-08-2922026-10-20T15:33:58.0104960Z
2026-08-28 – 2026-08-2892026-10-20T15:33:58.0104960Z
2026-08-24 – 2026-08-2492026-10-20T15:33:58.0104960Z
2026-08-23 – 2026-08-2372026-10-20T15:33:58.0104960Z
2026-08-21 – 2026-08-2122026-10-20T15:33:58.0104960Z
2026-08-20 – 2026-08-2042026-10-20T15:33:58.0104960Z
2026-08-19 – 2026-08-1922026-10-20T15:33:58.0104960Z
2026-08-18 – 2026-08-18222026-10-20T15:33:58.0104960Z
2026-08-17 – 2026-08-1792026-10-20T15:33:58.0104960Z
2026-08-16 – 2026-08-1612026-10-20T15:33:58.0104960Z
2026-08-15 – 2026-08-1532026-10-20T15:33:58.0104960Z
2026-08-14 – 2026-08-1472026-10-20T15:33:58.0104960Z
2026-08-13 – 2026-08-1332026-10-20T15:33:58.0104960Z
2026-08-12 – 2026-08-1222026-10-20T15:33:58.0104960Z
2026-08-10 – 2026-08-1022026-10-20T15:33:58.0104960Z
2026-08-09 – 2026-08-0912026-10-20T15:33:58.0104960Z
2026-08-08 – 2026-08-0812026-10-20T15:33:58.0104960Z
2026-08-07 – 2026-08-0722026-10-20T15:33:58.0104960Z
2026-08-06 – 2026-08-0642026-10-20T15:33:58.0104960Z
2026-08-05 – 2026-08-0522026-10-20T15:33:58.0104960Z
2026-08-04 – 2026-08-04122026-10-20T15:33:58.0104960Z
2026-08-03 – 2026-08-0382026-10-20T15:33:58.0104960Z
2026-08-02 – 2026-08-0212026-10-20T15:33:58.0104960Z
2026-08-01 – 2026-08-0142026-10-20T15:33:58.0104960Z
2026-07-31 – 2026-07-3112026-10-20T15:33:58.0104960Z
2026-07-30 – 2026-07-3032026-10-20T15:33:58.0104960Z
2026-07-29 – 2026-07-291122026-10-20T15:33:58.0104960Z

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.2026072929 Jul 202610

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 15:15 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:07485d656b88418bf559e636b9e7d64ec7effdccf009d7ad7e12595f801b539d