
Siigo Pyme Mcp
io.github.javalenciacai由 GitHub 账号 javalenciacai 发布v0.4.0更新于 Oct 24, 2026
SIIGO Pyme as MCP tools: the 47 ExcelSIIGO functions, plus company discovery.
概览
封装 SIIGO Pyme 的 EXCELSIIGO.exe,让助手运行其 47 个导出与导入函数并读取生成的表格。
- 可以做什么
- 把 SIIGO Pyme 的会计功能暴露为 MCP 工具:发现安装与公司、提供带参数说明的函数目录、保存凭据,并按名称执行 47 个 EXCELSIIGO 函数中的任意一个。导出函数返回生成的 .xlsx 路径、行数、列名和前 50 行解析结果,并可通过 siigo_read_xlsx 分页读取。另有 doctor 工具检查环境,start-here 工具返回使用说明。
- 适用场景
- 适用于已安装 SIIGO Pyme 和 Excel 的 Windows 桌面,让助手直接获取会计导出数据(往来单位、凭证分录)或执行导入,而无需手动操作 SIIGO 界面。不适合服务器、容器或无桌面会话的环境。
- 运行要求
- Windows 且已安装 SIIGO Pyme(EXCELSIIGO.exe,默认位于 C:\Siigo)、已安装 Microsoft Excel、存在活动的交互式桌面会话,以及 Node.js 18 或更高版本以通过 npx 运行。凭据通过 SIIGO_USUARIO 和 SIIGO_CLAVE 提供,或用 siigo_set_credentials 保存。可选变量:SIIGO_ANO、SIIGO_TOOLS、SIIGO_MCP_CONFIG_DIR。
安装
在 SourceWeft 中
- 打开 控制台中的 Siigo Pyme Mcp,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
siigo-pyme-mcp
Servidor MCP que expone SIIGO Pyme a un agente de IA.
Envuelve EXCELSIIGO.exe, el ejecutable de interfases de SIIGO, y convierte sus 47 funciones
de exportación e importación en herramientas MCP con parámetros documentados, descubrimiento
automático de empresas y resultados ya parseados a JSON.
Se autodiagnostica: npx -y siigo-pyme-mcp --doctor dice si el equipo puede ejecutar SIIGO y qué
falta, y --print-config escupe el bloque de configuración exacto para su cliente MCP. Las dos
cosas funcionan antes de registrar nada.
Requisitos
Instalación
No hace falta instalar nada: se ejecuta con npx. Cuatro pasos, y el propio paquete guía cada uno.
--print-config conoce hermes, Claude Desktop, Claude Code, VS Code y Cursor, e imprime
además los primitivos del protocolo para cualquier cliente que no esté en la lista. Sin argumento
--cliente los muestra todos. Para el caso genérico:
El -y no es opcional: sin él npx pide confirmación por consola, se queda esperando, y el
cliente MCP interpreta ese silencio como que el servidor no arrancó.
Si la instalación falla
En hermes hay un detalle que rompe la configuración escrita a mano: en su config.yaml, args y
env son cadenas JSON dentro del YAML, no una lista y un mapa YAML. --print-config --cliente hermes ya lo emite así.
Si el agente no sabe usarlo
Registrar el servidor no basta para que el agente sepa qué hacer con él. El "cómo usarme" vive en tres canales del protocolo MCP, y no todos los clientes los leen:
instructionsdelInitializeResult— el texto que este servidor manda al conectar.- Recursos (
siigo://guia/inicio,siigo://protocolo) y el promptsiigo_puesta_en_marcha. - Los nombres y descripciones de las herramientas — el único canal que todo cliente MCP entrega, porque sin él no podría llamarlas.
En hermes, por ejemplo, el canal 1 se pierde por completo: captura el InitializeResult solo
para leer capabilities y nunca lee .instructions (tools/mcp_tool.py, en el comentario junto
a self.initialize_result). Los recursos y prompts del canal 2 son opt-in y ningún agente los
consulta espontáneamente. Solo queda el canal 3, así que este servidor lo usa a fondo:
siigo_start_herees la primera herramienta detools/list, titulada "LEER PRIMERO", y devuelve el protocolo de uso completo.- Si el agente no la llama, la primera respuesta de cualquier otra herramienta
siigo_*en el proceso trae el protocolo anexado al final de su contenido, una sola vez. npx -y siigo-pyme-mcp --print-agent-rules --cliente <su cliente>imprime ese mismo protocolo en el formato de reglas del cliente (una skill con frontmatter para hermes y Claude Code, un bloque para pegar enAGENTS.mdo las instrucciones del proyecto para el resto), para que llegue antes de la primera llamada. Con--instalarlo escribe directamente en la carpeta de skills del cliente (por ejemplo%LOCALAPPDATA%\hermes\skills\siigo-pyme-mcp\SKILL.md); nunca sobrescribe un fichero existente con contenido distinto salvo que se agregue--forzar.
Primeros pasos
siigo_doctor— verifica el entorno y dice qué falta. Es la primera llamada ante cualquier fallo.siigo_list_companies— lista las empresasSIIWI01..SIIWI99disponibles.siigo_set_credentials— guarda usuario y clave. Sin indicar empresa, la credencial se aplica a todas, que es lo más cómodo si usa el mismo usuario en todas ellas.siigo_describe_function— los parámetros exactos de la función que va a usar.siigo_run_function— ejecútela.
El paso 4 no es ceremonia: el CLI acepta un parámetro mal formateado, lo registra como 081 y
termina con código 0, así que un error de parámetros se parece a un éxito. Es la única forma
en la que este servidor puede devolver datos equivocados.
Cómo encuentra sus empresas
- Instalaciones: se leen del registro de Windows
(
HKLM\SOFTWARE\WOW6432Node\Informatica y Gestion S.A\Siigo Windows), de la configuración del servidor, y escaneando las unidades en busca de carpetas<X>:\Siigo*que contenganEXCELSIIGO.exe. Puede tener varias (C:\Siigo,C:\Siigo2,D:\Siigo...). - Empresas: cada instalación declara en su
filepath.txtla ruta de una empresa. A partir de ella se explora la carpeta que la contiene buscandoSIIWI00..SIIWI99. Solo se aceptan las que traen datos reales de SIIGO (ZnnSIIGO,CONFIMP.CFG, archivos.DIS), de modo que carpetas homónimas vacías o de instalación no se ofrecen como empresas. - Para registrar algo que el autodescubrimiento no ve, use
siigo_add_installationo guarde credenciales directamente sobre la ruta de la empresa consiigo_set_credentials.
Puede referirse a una empresa por su ruta (Z:\SIIWI01\), por su número (01) o por el alias.
Herramientas
Por defecto expone 12. Cada esquema de herramienta viaja en cada llamada al modelo, así que
las 47 funciones como herramientas independientes cuestan unos 35 000 tokens por llamada —
medidos: 140 116 caracteres de tools/list frente a 8 927 del perfil por defecto, un 94 % menos.
Se controla con SIIGO_TOOLS:
De apoyo
De función
En el perfil core, una sola: siigo_run_function, que ejecuta cualquiera de las 47 por
nombre. En all, una por función con el nombre en minúsculas (siigo_getmov, siigo_getter,
siigo_pushmov...). Las dos rutas construyen exactamente el mismo argv, y hay un test que lo
compara lado a lado.
Todas aceptan los mismos campos comunes — empresa (obligatorio), anio, norma,
instalacion, usuario, clave — más los parámetros propios de la función. Las de
exportación admiten además filasPreview.
siigo_run_function exige confirmarEscritura: true para las funciones PUSH*. Al colapsar
47 herramientas en una se pierde el destructiveHint por función, y una importación escribe en la
contabilidad sin que el servidor pueda deshacerla; la protección pasa a ser explícita.
Recursos y prompt
siigo://guia/inicio trae la misma guía que --help, y siigo://funcion/{nombre} la firma de
una función en markdown, para consultarla sin gastar una llamada de herramienta. El prompt
siigo_puesta_en_marcha recorre el arranque completo. Los recursos no cuestan contexto salvo que
el cliente los pida.
Las funciones GET* devuelven la ruta del .xlsx, el total de filas, las columnas y las
primeras 50 filas ya parseadas, con un siguienteOffset para continuar con siigo_read_xlsx.
Los modelos de SIIGO no empiezan por los títulos: llevan el nombre de la empresa en la fila 1,
el del modelo en la 2, dos filas vacías, y los encabezados en la 5. El lector detecta esa fila
automáticamente y recorta el relleno de espacios que arrastra COBOL. Si algún modelo despista a
la heurística, siigo_read_xlsx acepta filaEncabezado para forzarla.
Configuración
Se guarda en %APPDATA%\siigo-pyme-mcp\config.json (se puede reubicar con
SIIGO_MCP_CONFIG_DIR).
Precedencia, la misma para las credenciales y para el año: valor de la llamada → variable de entorno → valor de la empresa → valor por defecto (o el año actual).
Consecuencia que conviene tener presente: si define SIIGO_ANO en el entorno del cliente MCP, ese
año manda sobre el campo year de cualquier empresa. Para que una empresa trabaje en otro año,
pase anio en la llamada, o quite SIIGO_ANO del entorno y deje solo los year por empresa.
siigo_doctor avisa cuando detecta esa situación, porque consultar el año contable equivocado no
se nota en la respuesta.
Hasta la 0.2.0 el año de la empresa ganaba a
SIIGO_ANO, al contrario que las credenciales. Si usaba las dos fuentes a la vez, revise qué año va a consultar antes de actualizar a 0.3.0.
outputDir debe ser corto: SIIGO limita la ruta del .xlsx a 50 caracteres. siigo_doctor
calcula el margen que queda y avisa antes de que el CLI empiece a truncar en silencio.
Variables de entorno
Diagnóstico
Diez comprobaciones, todas se ejecutan siempre: plataforma, Node, instalaciones de SIIGO, Excel,
sesión de escritorio, configuración, credenciales, empresas accesibles, carpeta de salida y
procesos de SIIGO o Excel vivos. Cada resultado que no esté en [ ok ] viene con una acción
concreta, y la última línea es siempre el paso que desbloquea.
Nunca ejecuta EXCELSIIGO.exe, no lanza Excel y no escribe ningún archivo. Detecta Excel por el
registro (App Paths, y el ProgID COM como respaldo) y la sesión por el número de sesión del
propio proceso: instanciar Excel para comprobar que existe se colgaría en una máquina sin
escritorio, que es justo el fallo que hay que diagnosticar. La clave nunca aparece en el informe;
hay un test que serializa el informe completo y falla si la encuentra.
La misma información está disponible como herramienta MCP, siigo_doctor, una vez registrado.
Limitaciones
Nacen del ejecutable de SIIGO, no del servidor:
- La clave es visible en la tabla de procesos.
EXCELSIIGO.exela recibe como argumento posicional, así que aparece enGet-CimInstance Win32_Processmientras dura la ejecución. No hay forma de evitarlo desde fuera. El servidor sí la mantiene fuera de logs, mensajes de error y respuestas MCP. - Una ejecución a la vez. El CLI no tolera instancias simultáneas; el servidor las encola.
- Ante un error abre un cuadro de diálogo y espera un clic, sin escribir el log. El servidor vigila el título de la ventana del proceso y, en cuanto reconoce un diálogo de error, cancela la ejecución y devuelve ese título: es el único sitio donde SIIGO explica qué pasó cuando no llega a escribir nada.
- Las exportaciones tardan. Un
GETTERde mil terceros ronda el minuto; unGETMOVde un año completo con 25 000 movimientos, algo más de dos. El servidor emite notificaciones de progreso para que el cliente no aborte la llamada por silencio, y corta a los 180 segundos por defecto (timeoutMsen la configuración). - No todas las funciones aplican a todas las empresas. Si SIIGO está licenciado sin el
módulo de seriales o el de nómina, esas funciones responden
020o105. El servidor lo distingue de un error corriente y devuelvemoduloNoDisponible: true: reintentar no cambia nada, hay que habilitar el módulo en SIIGO o usar otra función. - Rutas de 50 caracteres. Se aplica al
.xlsxde salida y al log. El servidor genera nombres cortos y avisa antes de invocar si una ruta se pasa. - Requiere Excel y sesión interactiva, por el uso de COM.
exit code 0no significa éxito. El binario puede fallar (081 Parámetros de la función tienen errores) y salir con 0. El servidor combina tres señales antes de dar por buena una corrida: código de salida, contenido del log y existencia y tamaño del archivo generado.- Las importaciones dejan su resultado en la carpeta
TEMPde la empresa, según documenta el manual, no en la ruta que se indique. - Si la empresa vive en una unidad de red mapeada y el recurso se cae, Windows deja el mapeo visible pero desconectado. El servidor lo detecta antes de ejecutar y lo dice explícitamente.
Desarrollo
test:e2e es el único script que necesita SIIGO instalado; el resto corre en cualquier
máquina, incluida la de CI.
Sin credenciales corre la prueba negativa: usa unas inválidas a propósito y exige que el
servidor reporte el fallo, que es justo lo que el binario no hace por su cuenta. Con
credenciales válidas corre la prueba positiva, que ejecuta un GETTER real y verifica que
el .xlsx exista, pese más de cero y traiga columnas y filas legibles:
test:tools recorre las herramientas del perfil all: invoca las de apoyo, ejecuta de verdad las 29
exportaciones contra la empresa, y prueba las 18 importaciones solo por su ruta de
validación. Las importaciones escriben en la contabilidad y ese script no puede deshacerlo,
así que comprueba el esquema, la resolución de empresa y credenciales y la construcción del
argv, y verifica que rechacen un archivo de entrada inexistente antes de lanzar el ejecutable.
Su argv sí está cubierto al completo por los tests dorados. Para probar una importación de
verdad, use una empresa de pruebas.
Sobre los tests dorados
El manual de SIIGO (<instalación>\ExcelSIIGO-Ayuda.LOG) trae una línea Ejemplo: por cada
función. src/siigo/args.golden.test.ts reconstruye el argv con esos mismos valores y exige
que coincida token por token. Es la única defensa real contra el error 081, que el binario
reporta en silencio. Si corrige la firma de una función en src/catalog/functions.ts, el test
correspondiente se lo confirmará.
Publicación
La publicación es automática. No se publica nada a mano.
ci.ymlvalida cada PR y cada push amainen un runner de Windows: typecheck, tests, build, smoke y comprobación de que el tarball solo lleva artefactos de distribución.publish.ymlse dispara al empujar un tagv*y, tras repetir la validación completa, publica a npm con--provenance, publica al MCP Registry oficial autenticando con el OIDC de GitHub Actions, y crea la GitHub Release con notas generadas.
Para sacar una versión:
El workflow bloquea la publicación si package.json, el tag y server.json no coinciden:
el MCP Registry rechaza con 422 cuando las versiones difieren, y es mejor fallar antes de
haber subido nada a npm.
Configuración necesaria una sola vez en el repositorio: el secret NPM_TOKEN con un token
de tipo Automation de npm (los tokens Automation omiten el 2FA, que un runner no puede
resolver). El MCP Registry no necesita ningún secret.
Licencia
MIT. Proyecto independiente, sin relación con Informática y Gestión S.A. (SIIGO).
来源:README.md,提交 a61cb46
工具
0版本历史
1- v0.4.0最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分