infaton-1c-mcp
Servidor MCP para 1C:Enterprise (ERP, Contabilidad, etc.) — 51 herramientas para metadatos, documentos, registros, informes y más
Documentación
INFATON MCP Server para 1C:Enterprise
Model Context Protocol (MCP) — servidor del lado de 1C:Enterprise que proporciona 93 herramientas para la interacción de asistentes de IA con la base de datos 1C.
Protocolo: JSON-RPC 2.0 (especificación MCP)
Parte de la plataforma INFATON — gemelos digitales y agentes de IA sobre 1C:ERP. Empresa: infaton.ru · Producto: chatmcp.ru (ChatMCP — chat gemelo sobre su 1C:ERP).
🏗 Quién lo utiliza
INFATON MCP Server es el motor de acceso de IA a 1C en los productos de la plataforma INFATON:
- eventcode.ru — plataforma de desarrollo a medida: los agentes de IA gestionan proyectos y trabajan con el 1C:ERP del cliente a través de este servidor MCP.
- chatmcp.ru — ChatMCP, gemelo digital sobre 1C:ERP: interfaz de chat y puestos de trabajo (ARMs) sobre este servidor MCP.
El servidor es de código abierto (MIT) — úselo en su producto, consulte Inicio rápido.
📋 Contenido del repositorio
| Archivo | Descripción |
|---|---|
Module.bsl | Módulo del servicio HTTP MCP — código principal, 93 herramientas (7 350 líneas) |
index.mjs | Envoltorio stdio de Node.js para clientes MCP (Claude Desktop, Cursor y otros) |
package.json | Manifiesto npm para publicación y ejecución mediante npx |
glama.json | Manifiesto para el catálogo Glama.ai |
| compilación .cfe | Compile la extensión desde Module.bsl (v6.2.1) — consulte HOW_TO_BUILD_CFE.md |
HOW_TO_BUILD_CFE.md | Instrucciones de compilación e instalación de .cfe |
EXAMPLES.md | Ejemplos de escenarios de agentes (7 casos) |
CHANGELOG.md | Historial de versiones |
🆕 Novedades en v6.2.1
- Escritura segura de referencias compuestas por GUID (6.2.1): el objeto se verifica en cada tipo permitido, los GUID inexistentes se rechazan.
fill_counterparty_by_inn(6.2.0): datos de contraparte por INN mediante el estándar 1C:Contraparte (lectura, sin escritura).get_config_fingerprint(6.1.0): huella económica de la composición de la configuración.
🆕 Novedades en v6.0.2
59 → 91 herramienta (+32): informes SKD para configuraciones típicas de 1C:ERP (run_report, get_report_options…), auditoría de derechos (get_rights_for_user, export_role_matrix), configuraciones de usuario (set_constant, set_functional_option, set_user_setting…), instantáneas y comparación (snapshot_document_state, compare_snapshots, document_chain), datos de negocio ERP (get_stock_by_warehouse, get_unfulfilled_order_lines, get_reservation_status). Además, escritura de campos de referencia y enumeraciones (resolución de _guid para encabezados y filas de partes tabulares). Lista completa en CHANGELOG.md.
🆕 Novedades en v2.1.0
Correcciones (9 parches)
| # | Herramienta | Error | Corrección |
|---|---|---|---|
| P1 | get_list | Ausencia de ПЕРВЫЕ N — devolvía TODOS los registros | Se añadió ПЕРВЫЕ con el parámetro limit (por defecto 100) |
| P2 | get_document_list | Filtro por fecha — Дата >= sin parámetro | Se añadió Запрос.УстановитьПараметр para fechas |
| P3 | get_object_by_ref | Referencia vacía → error confuso de la plataforma | Se añadió la verificación de Если НЕ ЗначениеЗаполнено(Ссылка) |
| P4 | get_active_users / get_locks | Recorrido directo de la colección de sesiones → error en el servidor | Migración a МассивСеансов = ПолучитьСеансыИнформационнойБазы() |
| P5 | get_event_log | La fecha se transmitía como cadena + campo «Metadatos» en lugar de representación | ПреобразоватьДату() + .МетаданныеПредставление |
| P6 | ПреобразоватьДату | No procesaba 2026-05-14, 14.05.2026, 20260514 | Reescritura completa: ISO 8601 + 3 formatos |
| P7 | fill_on_basis | Объект.Заполнить() → método correcto ЗаполнитьНаОсновании() | Corregida la llamada al método |
| P8 | execute_batch | execute_batch anidado → recursión infinita | Se añadió la bandera de protección _batch_depth |
| P9 | — | La versión seguía siendo 2.0.0 | Actualizada a 2.1.0 |
Nuevas herramientas (10, grupo З)
| # | Herramienta | Propósito |
|---|---|---|
| 42 | get_balance | Saldos y movimientos del registro contable (cualquier plan de cuentas) |
| 43 | get_register_totals | Totales de registros de acumulación (saldos/movimientos) |
| 44 | get_accounting_entries | Asientos contables del documento (Débito, Crédito, importe) |
| 45 | get_related_documents | Cadena de documentos vinculados (entrada sobre la base) |
| 46 | validate_document | Verificación de completitud del documento sin contabilización |
| 47 | get_form_structure | Estructura del formulario gestionado (atributos, comandos) |
| 48 | get_rights | Derechos de acceso del usuario actual al objeto |
| 49 | find_duplicates | Búsqueda de duplicados en directorios por atributos |
| 50 | get_print_form | Formularios impresos mediante el subsistema GestiónDeImpresión |
| 51 | get_configuration_extensions | Lista de extensiones de configuración (CFE) |
🛠 Catálogo de herramientas
A continuación — catálogo base (51 herramienta, grupos А–З). En v6.0.2 se añadieron otras 32 (informes/SKD, derechos, configuraciones de usuario, instantáneas, datos de negocio 1C:ERP) — lista completa de 93 en
Module.bsly CHANGELOG.md.
Grupo А — Metadatos (8)
| # | Herramienta | Descripción |
|---|---|---|
| 1 | get_metadata_tree | Árbol de objetos de metadatos de la configuración |
| 2 | get_object_metadata | Estructura completa del objeto (atributos, partes tabulares, módulos) |
| 3 | get_object_attributes | Lista de atributos del objeto |
| 4 | get_object_tabular_sections | Partes tabulares del objeto |
| 5 | get_enum_values | Valores de enumeración |
| 6 | get_register_dimensions | Dimensiones, recursos y atributos del registro |
| 7 | get_document_movements | Movimientos del documento por registros |
| 8 | search_metadata | Búsqueda en metadatos (por nombre/sinónimo) |
Grupo Б — Lectura de datos (7)
| # | Herramienta | Descripción |
|---|---|---|
| 9 | execute_query | Ejecución de consulta 1C arbitraria |
| 10 | get_object_by_ref | Obtención del objeto por referencia/GUID |
| 11 | get_list | Lista de elementos del directorio/documento con filtros |
| 12 | find_by_code | Búsqueda de elemento por código |
| 13 | find_by_name | Búsqueda de elemento por nombre |
| 14 | get_register_records | Registros del registro con filtros |
| 15 | get_document_list | Lista de documentos con filtros por fecha/número |
Grupo В — CRUD (7)
| # | Herramienta | Descripción |
|---|---|---|
| 16 | create_object | Creación de nuevo objeto (directorio/documento) |
| 17 | update_object | Modificación de atributos del objeto |
| 18 | delete_object | Marcado para eliminación |
| 19 | post_document | Contabilización del documento |
| 20 | unpost_document | Cancelación de contabilización |
| 21 | copy_object | Copia del objeto |
| 22 | set_attribute | Modificación de un atributo individual |
Grupo Г — Código e informes (4)
| # | Herramienta | Descripción |
|---|---|---|
| 23 | execute_code | Ejecución de código arbitrario en el lenguaje integrado |
| 24 | evaluate_expression | Cálculo de expresión y devolución del resultado |
| 25 | get_module_text | Obtención del texto del módulo del objeto |
| 26 | generate_report | Generación de informe (SKD) |
Grupo Д — Administración (6)
| # | Herramienta | Descripción |
|---|---|---|
| 27 | get_active_users | Lista de usuarios activos y sesiones |
| 28 | get_event_log | Registro de actividad con filtros |
| 29 | get_locks | Bloqueos de datos actuales |
| 30 | get_server_info | Información sobre plataforma, configuración, servidor |
| 31 | check_references | Verificación de integridad referencial |
| 32 | run_scheduled_job | Ejecución de tarea programada |
Grupo Е — Integración (3)
| # | Herramienta | Descripción |
|---|---|---|
| 33 | exchange_execute | Ejecución de intercambio de datos |
| 34 | get_exchange_log | Registro de intercambio |
| 35 | import_data | Importación de datos desde JSON |
Grupo Ж — Operaciones avanzadas v2.0 (6)
| # | Herramienta | Descripción |
|---|---|---|
| 36 | fill_on_basis | Relleno del documento sobre la base de otro |
| 37 | write_register_records | Escritura de conjunto de registros del registro |
| 38 | update_tabular_section | Actualización de la parte tabular del objeto |
| 39 | subscribe_events | Suscripción a eventos del registro |
| 40 | execute_batch | Ejecución por lotes de herramientas |
| 41 | get_changes_since | Obtención de cambios con marca de tiempo (CDC) |
Grupo З — Contabilidad, auditoría, formularios v2.1 (10) 🆕
| # | Herramienta | Descripción |
|---|---|---|
| 42 | get_balance | Saldos/movimientos del registro contable |
| 43 | get_register_totals | Totales de registros de acumulación |
| 44 | get_accounting_entries | Asientos del documento (Débito/Crédito/Importe) |
| 45 | get_related_documents | Documentos vinculados (cadena de bases) |
| 46 | validate_document | Verificación de completitud sin contabilización |
| 47 | get_form_structure | Estructura del formulario gestionado |
| 48 | get_rights | Derechos de acceso del usuario actual |
| 49 | find_duplicates | Búsqueda de duplicados por atributos |
| 50 | get_print_form | Formularios impresos mediante GestiónDeImpresión |
| 51 | get_configuration_extensions | Lista de extensiones de configuración (CFE) |
🚀 Inicio rápido
Opción 1: Mediante Claude Desktop / Cursor (stdio)
Método А — mediante npx (sin clonación)
{
"mcpServers": {
"1c-erp": {
"command": "npx",
"args": ["infaton-mcp"],
"env": {
"ONEC_URL": "https://your-server/base/hs/mcp/",
"ONEC_USER": "Username",
"ONEC_PASSWORD": "Password"
}
}
}
}
Método Б — desde el repositorio clonado
{
"mcpServers": {
"1c-erp": {
"command": "node",
"args": ["/path/to/MCP35/index.mjs"],
"env": {
"ONEC_URL": "https://your-server/base/hs/mcp/",
"ONEC_USER": "Username",
"ONEC_PASSWORD": "Password"
}
}
}
}
Opción 2: Llamada HTTP directa
1. Instale la extensión
- Abra el Configurador de la base 1C
- Configuración → Extensiones de configuración → Agregar
- Seleccione el archivo
INFATON_MCP.cfe(o compílelo según la instrucción desdeModule.bsl) - Actualice la configuración de la base de datos (F7)
2. Verifique la conexión
curl -u 'Логин:Пароль' -X POST \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"initialize","id":1}' \
https://ваш-сервер/база/hs/mcp/
Respuesta esperada:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2024-11-05",
"capabilities": { "tools": {} },
"serverInfo": { "name": "infaton-1c-mcp", "version": "6.2.1" }
}
}
3. Llame a la herramienta
curl -u 'Логин:Пароль' -X POST \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"tools/call","id":2,"params":{"name":"get_balance","arguments":{"account_code":"41.01","period_from":"2026-01-01T00:00:00","period_to":"2026-03-31T23:59:59"}}}' \
https://ваш-сервер/база/hs/mcp/
📐 Arquitectura
┌─────────────────────────┐
│ AI Assistant │ Claude / GPT / Qwen / Gemini / ...
│ (MCP Client) │
└────────┬────────────────┘
│ stdio (JSON-RPC 2.0)
▼
┌─────────────────────────┐
│ index.mjs │ Node.js stdio → HTTP proxy
│ (MCP Transport) │
└────────┬────────────────┘
│ HTTP POST (Basic Auth)
▼
┌─────────────────────────┐
│ HTTP-сервис /hs/mcp/ │ Расширение INFATON_MCP.cfe
│ Module.bsl │ 93 инструмента (7 350 строк)
│ (MCP Server) │
└────────┬────────────────┘
│ Встроенный язык 1С
▼
┌─────────────────────────┐
│ База 1С:Предприятие │ ERP / УПП / Бухгалтерия / УТ / КА
│ Данные, метаданные │
└─────────────────────────┘
📝 Compatibilidad
| Parámetro | Valor |
|---|---|
| Plataforma 1C | 8.3.20+ (probado en 8.3.27.1989) |
| Configuraciones | ERP 2.5, UPP 1.3, Contabilidad 3.0, UT 11, KA 2 |
| Protocolo MCP | 2024-11-05 |
| Transporte | HTTP (Basic Auth), stdio (mediante index.mjs) |
| Node.js | 18+ (para la envoltura stdio) |
📊 Historial de versiones
| Versión | Fecha | Herramientas | Cambios |
|---|---|---|---|
| v2.1.0 | 2026-05-14 | 51 | +10 herramientas (contabilidad, auditoría, formularios), 9 correcciones de errores |
| v2.0.0 | 2026-05-08 | 41 | +6 herramientas (batch, CDC, fill_on_basis y otras) |
| v1.0.0 | 2026-04-28 | 35 | Primer lanzamiento público |
🔒 Seguridad
Obligatorio para producción
| Requisito | Por qué es importante |
|---|---|
| HTTPS | Basic Auth transmite usuario/contraseña en base64. Por HTTP son visibles para cualquiera en la red |
| Usuario 1C separado | Cree un usuario mcp_agent con derechos mínimos — solo los objetos necesarios |
ONEC_ALLOWED_TOOLS | Limite la lista de herramientas para un escenario específico |
Herramientas peligrosas
Las siguientes herramientas requieren permiso explícito y deben usarse con conciencia:
| Herramienta | Riesgo | Recomendación |
|---|---|---|
execute_code | Ejecuta código BSL arbitrario en modo privilegiado | Prohibir mediante ONEC_ALLOWED_TOOLS si no es necesario |
delete_object | Marca objetos para eliminación | Prohibir en escenarios analíticos |
run_scheduled_job | Ejecuta tareas programadas | Prohibir si no es necesario |
import_data | Creación/modificación masiva de objetos | Prohibir en escenarios de solo lectura |
post_document / unpost_document | Modifica la contabilización de documentos y movimientos por registros | Solo para escenarios operativos |
Configuración de solo lectura
ONEC_ALLOWED_TOOLS="get_metadata_tree,execute_query,get_object_by_ref,get_list,find_by_code,find_by_name,get_register_records,get_document_list,get_server_info,get_event_log,get_balance,get_register_totals,get_accounting_entries,get_related_documents,get_form_structure,get_rights,find_duplicates"
Más detalles — consulte EXAMPLES.md.
📄 Licencia
MIT © 2024-2026 INFATON — Privalov S.Yu.
Plataforma: infaton.ru · Producto: chatmcp.ru (ChatMCP).
Instrucciones detalladas de compilación de .cfe — consulte HOW_TO_BUILD_CFE.md
Ejemplos de escenarios de agentes — consulte EXAMPLES.md
Historial de cambios — consulte CHANGELOG.md
📰 Publicación en Infostart
Статья на портале Инфостарт: INFATON MCP Server v2.1 — 51 инструмент для AI-интеграции с 1С:Предприятие