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.

概覽

AI 產生的概覽

包裝 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。
安裝前請注意
SIIGO_CLAVE 會以命令列參數傳給 EXCELSIIGO.exe,執行期間可在處理程序清單中看到。匯入函式(PUSH*)會寫入會計資料且無法復原,siigo_run_function 對它們要求 confirmarEscritura: true。認證儲存在本機 config.json 中。參數錯誤可能被回報為成功,需核對結果。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Siigo Pyme Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

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.

Agente: "dame los terceros de la empresa 02"  → siigo_run_function(funcion: "GETTER", empresa: "02")  → EXCELSIIGO.exe Z:\SIIWI02\ 2026 GETTER L USUARIO **** ... Terceros.xlsx  → { ok: true, archivo: "...", totalFilas: 1240, columnas: [...], filas: [...] }

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

RequisitoPor qué
WindowsSIIGO Pyme solo existe en Windows.
SIIGO Pyme instaladoSe necesita EXCELSIIGO.exe (por defecto en C:\Siigo).
Microsoft Excel instaladoSIIGO genera los .xlsx con Excel por COM, a través de SiigoExcel.exe. Sin Excel no se produce ningún archivo.
Sesión de escritorio activaConsecuencia de lo anterior: no funciona como servicio de Windows, ni por SSH sin sesión, ni en un contenedor. Durante cada ejecución verás aparecer la ventana de progreso de SIIGO y Excel: no se pueden ocultar, con la ventana oculta el proceso se cuelga sin generar nada.
Node.js 18 o superiorPara ejecutarlo con npx.

Instalación

No hace falta instalar nada: se ejecuta con npx. Cuatro pasos, y el propio paquete guía cada uno.

bash
npx -y siigo-pyme-mcp --doctor                            # 1. ¿puede este equipo ejecutar SIIGO?npx -y siigo-pyme-mcp --print-config --cliente hermes     # 2. el bloque exacto a pegarnpx -y siigo-pyme-mcp --print-agent-rules --cliente hermes  # 3. que el agente sepa usarlo# 4. reinicie el cliente MCP y repita --doctor

--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:

json
{  "mcpServers": {    "siigo": {      "command": "npx",      "args": ["-y", "siigo-pyme-mcp"],      "env": {        "SIIGO_USUARIO": "TU_USUARIO",        "SIIGO_CLAVE": "TU_CLAVE"      }    }  }}

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

SíntomaCausa real
npm error EBADPLATFORM ... wanted {"os":"win32"}Se está instalando fuera de Windows (WSL, contenedor, Linux). Hay que registrarlo en la máquina Windows donde está SIIGO; --force no ayuda, porque sin SIIGO ni Excel no hay nada que ejecutar.
El cliente dice que el servidor no arrancó, sin más detalleFalta el -y en npx.
'npx' no se reconoce como un comando, o ENOENT al lanzarloEl cliente MCP no tiene npx en su PATH. Use --print-config --absoluto, que emite un bloque apuntando a node.exe y al dist/index.js instalado, con las rutas reales de esa máquina.
Arranca, pero toda función falla sin generar archivoFalta Excel, falta la sesión de escritorio, o alguna ruta pasa de 50 caracteres. Ejecute --doctor.

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:

  1. instructions del InitializeResult — el texto que este servidor manda al conectar.
  2. Recursos (siigo://guia/inicio, siigo://protocolo) y el prompt siigo_puesta_en_marcha.
  3. 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_here es la primera herramienta de tools/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 en AGENTS.md o las instrucciones del proyecto para el resto), para que llegue antes de la primera llamada. Con --instalar lo 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

  1. siigo_doctor — verifica el entorno y dice qué falta. Es la primera llamada ante cualquier fallo.
  2. siigo_list_companies — lista las empresas SIIWI01..SIIWI99 disponibles.
  3. 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.
  4. siigo_describe_function — los parámetros exactos de la función que va a usar.
  5. siigo_run_function — ejecútela.
siigo_set_credentials(usuario: "TU_USUARIO", clave: "TU_CLAVE")siigo_set_company_alias(empresa: "Z:\\SIIWI01\\", alias: "Inmunotek")siigo_describe_function(funcion: "GETMOV")siigo_run_function(funcion: "GETMOV", empresa: "Inmunotek",                   params: { fechaInicial: "0101", fechaFinal: "0131", tipoComprobante: "F" })

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 contengan EXCELSIIGO.exe. Puede tener varias (C:\Siigo, C:\Siigo2, D:\Siigo...).
  • Empresas: cada instalación declara en su filepath.txt la ruta de una empresa. A partir de ella se explora la carpeta que la contiene buscando SIIWI00..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_installation o guarde credenciales directamente sobre la ruta de la empresa con siigo_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:

SIIGO_TOOLSHerramientasCoste de tools/list
core (por defecto)12: las de apoyo más siigo_run_function~2 200 tokens
all58: una por cada función~35 000 tokens

De apoyo

HerramientaPara qué
siigo_start_hereLEER PRIMERO: protocolo de uso completo. Primera de tools/list a propósito.
siigo_doctorVerifica Windows, SIIGO, Excel, sesión de escritorio, credenciales, empresas y el límite de 50 caracteres. No ejecuta nada de SIIGO.
siigo_list_installationsInstalaciones de SIIGO detectadas.
siigo_list_companiesEmpresas disponibles, con alias y si tienen credenciales.
siigo_list_functionsCatálogo de las 47 funciones, filtrable por grupo.
siigo_describe_functionParámetros, orden posicional y ejemplo del manual de una función.
siigo_set_credentialsGuarda usuario y clave, global o por empresa.
siigo_set_company_aliasDa un nombre legible a una empresa.
siigo_add_installationRegistra una instalación que no se detectó sola.
siigo_get_configMuestra la configuración (claves enmascaradas).
siigo_read_xlsxLee de forma paginada cualquier .xlsx generado.

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).

json
{  "installations": ["D:\\Siigo"],  "defaultCredentials": { "user": "TU_USUARIO", "password": "TU_CLAVE" },  "companies": {    "Z:\\SIIWI01\\": { "alias": "Inmunotek" },    "Z:\\SIIWI02\\": { "alias": "Comercial", "user": "CONTA", "password": "2222", "year": "2025" }  },  "outputDir": "C:\\SiigoMCP\\out",  "norma": "L",  "timeoutMs": 180000}

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

VariablePara qué
SIIGO_USUARIO, SIIGO_CLAVECredenciales, como alternativa a guardarlas en el config.json.
SIIGO_ANOAño de proceso por defecto, 4 dígitos.
SIIGO_TOOLScore (por defecto) o all. Ver Herramientas.
SIIGO_MCP_CONFIG_DIRReubica la carpeta de configuración.

Diagnóstico

bash
npx -y siigo-pyme-mcp --doctor            # informe legible; exit 1 si el veredicto es NO LISTOnpx -y siigo-pyme-mcp --doctor --json     # el mismo informe para consumo de máquinanpx -y siigo-pyme-mcp --doctor --sin-empresas   # omite el escaneo de discos, más rápido

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.exe la recibe como argumento posicional, así que aparece en Get-CimInstance Win32_Process mientras 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 GETTER de mil terceros ronda el minuto; un GETMOV de 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 (timeoutMs en 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 020 o 105. El servidor lo distingue de un error corriente y devuelve moduloNoDisponible: 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 .xlsx de 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 0 no 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 TEMP de 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

bash
npm installnpm run typechecknpm test               # 220 tests, incluidos los dorados contra los ejemplos del manualnpm run buildnpm run test:smoke     # handshake MCP en los dos perfiles, más --doctor --jsonnpm run test:e2e       # prueba negativa: exige que un fallo se reporte como fallonpm run test:tools     # ejercita LAS 56 herramientas contra una instalación real

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:

bash
SIIGO_USUARIO=TU_USUARIO SIIGO_CLAVE=TU_CLAVE npm run test:e2e     # bash$env:SIIGO_USUARIO='TU_USUARIO'; $env:SIIGO_CLAVE='TU_CLAVE'; npm run test:e2e   # PowerShell

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.yml valida cada PR y cada push a main en un runner de Windows: typecheck, tests, build, smoke y comprobación de que el tarball solo lleva artefactos de distribución.
  • publish.yml se dispara al empujar un tag v* 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:

bash
npm version patch --no-git-tag-version   # o minor / major# sincronizar server.json a la misma versión (version y packages[].version)git commit -am "release: v0.1.1"git pushgit tag v0.1.1git push origin v0.1.1

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
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.4.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分