1c成型机
MCP服务器用于生成、验证、转换和搜索托管1C:Enterprise表单。
支持三种格式: 配置器 (logform), 管理 (managed(d)和 东部夏令时间 (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格式:
1、配置器(logform) | 管理(managed) | EDT(edt) | |
|---|---|---|---|
| 文件 | Form.xml | Form.xml | Form.form |
| 根 | `` | `` | `` |
| 要素 | `` | X1 | X1InputField |
| 数据路径 | Объект.Поле | Объект.Поле | Объект.Поле |
| 类型 | cfg:CatalogObject.X | CatalogObject.X | CatalogObject.X |
| 同伴 | ` + 没有 + ` | ||
| 灭绝的 不,不行。 `` |
格式由根元素的名称空间自动定义。在所有三种格式之间转换,保留语义。
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 -XCore EDT元模型:类(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 -从搜索结果中通过ID下载完整的XML示例。
EDT集成
需要启动 EDT-MCP 服务器EDT_ENABLED=true).
edt_status 检查EDT的可用性。在其他EDT工具前面调用。
get_object_metadata -从EDT项目获取对象的详细信息和表格部分。
Параметры:
object_type: "Catalog" | "Document" | "DataProcessor" и др.
object_name: "Номенклатура"form_screenshot -PNG-来自EDT编辑器WYSIWYG的表单截图。
Параметры:
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=, target_format="edt"
2. validate_form → проверить результат
3. Сохранить как Form.form找到一个例子并创建一个类似的形状
1. search_form_examples → query="документ с табличной частью товары"
2. get_form_example → form_id из результатов
3. Использовать пример как образец для generate_form配置
环境变量或 .env 文件 :
变量是默认的,描述是 |-----------|-------------|----------| | PORT | 8011 服务器端口 | TRANSPORT | streamable-http | 传输 MCP (streamable-http, sse) | | DATABASES_PATH | ./databases 搜索数据库路径 | DATA_PATH | ./data 数据路径(Prompt) | EDT_ENABLED | false 启用与 EDT-MCP | | EDT_MCP_URL | http://localhost:9999/sse mcp服务器的edt URL | EDT_TIMEOUT | 10 ÐEDT请求超时(秒)。
完整列表-B .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)依赖
核心: fastmcp、lxml、pydantic、python dotenv、uvicorn
Search(可选):
pip install -e ".[search]"添加sentence transformers用于向量搜索表单示例。
测试
pip install -e ".[dev]"
pytest tests/ -v91测试:验证(logform,managed,edt),转换(所有格式之间的roundtrip),生成,模板,搜索,edt集成。
许可证
麻省理工学院
