Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Siigo MCP Servershow me the most recent invoices and their status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Siigo MCP Server - Versión Segura 2.0
Servidor Model Context Protocol (MCP) para la API de Siigo con seguridad empresarial de grado de producción.
🔒 Características de Seguridad
Implementadas ✅
RBAC (Role-Based Access Control): Viewer, Editor, Admin con permisos granulares
Rate Limiting: Protección contra abuso local + límites de Siigo
Validación de Entrada: Schema validation con Zod en todos los inputs
Sanitización de Datos: Prevención de inyección de prompts y XSS
Auditoría Completa: Logging estructurado de todas las operaciones
Certificados HTTPS: Validación TLS 1.2+ con rechazo de certificados inválidos
Enmascaramiento de Credenciales: No se exponen keys en logs
Validación de Respuestas: Schema validation de respuestas de API
Manejo de Errores Seguro: Errores sin información sensible
📋 Requisitos
Node.js >= 18.0.0
npm >= 9.0.0
Cuenta de Siigo con acceso a API
Credenciales de API (username y access_key)
🚀 Instalación Rápida
1. Clonar y configurar
cd mcpsiigo
npm install
cp .env.example .env2. Configurar credenciales
Editar .env con tus credenciales de Siigo:
SIIGO_USERNAME=tu_email@siigo.com
SIIGO_ACCESS_KEY=tu_api_key_aqui
SIIGO_ROLE=viewer # Empezar con viewer (solo lectura)3. Build y test
npm run build
npm test4. Iniciar servidor
npm start🔐 Configuración de Seguridad
Roles y Permisos
// Viewer: Solo lectura (default, recomendado)
SIIGO_ROLE=viewer
// Editor: Lectura + Crear/Actualizar
SIIGO_ROLE=editor
// Admin: Acceso completo (requiere confirmación)
SIIGO_ROLE=adminRate Limiting
# 50 requests/minuto por tool (default)
RATE_LIMIT_REQUESTS=50
RATE_LIMIT_WINDOW_MS=60000Auditoría
# Habilitar logging de todas las operaciones
ENABLE_AUDIT_LOG=true
# Enmascarar datos sensibles
MASK_SENSITIVE_DATA=true📚 Documentación de Tools
Productos
// Listar productos
siigo_get_products({ limit?: 100, offset?: 0 })
// Obtener producto específico
siigo_get_product({ id: 123 })
// Crear producto (requiere editor/admin)
siigo_create_product({
product: {
code: "PROD001",
name: "Mi Producto",
account_group: 1253,
type: "Product"
}
})
// Actualizar producto (requiere editor/admin)
siigo_update_product({
id: 123,
product: { name: "Nuevo Nombre" }
})
// Eliminar producto (requiere admin)
siigo_delete_product({ id: 123 })Clientes
// Listar clientes
siigo_get_customers({ limit?: 100 })
// Crear cliente (requiere editor/admin)
siigo_create_customer({
customer: {
person_type: "Person",
id_type: "13",
identification: "123456789",
name: "John Doe",
email: "john@example.com"
}
})Facturas
// Listar facturas
siigo_get_invoices()
// Crear factura (requiere editor/admin)
siigo_create_invoice({
invoice: {
customer_id: 1,
invoice_number: "INV001",
date: "2026-03-14",
due_date: "2026-04-14",
total: 100000
}
})
// Enviar factura por email
siigo_send_invoice_email({
id: 1,
email: "customer@example.com"
})Reportes
// Balance de prueba
siigo_get_trial_balance({ year?: 2026, month?: 3 })
// Cuentas por pagar
siigo_get_accounts_payable()Sistema
// Ver herramientas disponibles
siigo_get_available_tools()
// Estado del servidor
siigo_get_server_status()🔍 Auditoría y Logs
Los logs se almacenan en logs/:
logs/
├── error.log # Errores del servidor
├── combined.log # Todos los logs
└── audit.log # Operaciones auditadasVer logs en tiempo real:
tail -f logs/audit.log | grep -E "Invoice|Purchase|Delete"🧪 Testing
# Todos los tests
npm test
# Tests de seguridad
npm test:security
# Watch mode
npm test:watch
# Con cobertura
npm test -- --coverage📊 Configuración de Claude Desktop
Agregar a ~/.claude/profiles.json:
{
"mcpServers": {
"siigo": {
"command": "node",
"args": ["path/to/dist/index.js"],
"env": {
"SIIGO_USERNAME": "${SIIGO_USERNAME}",
"SIIGO_ACCESS_KEY": "${SIIGO_ACCESS_KEY}",
"SIIGO_ROLE": "viewer",
"NODE_ENV": "production"
}
}
}
}🛡️ Buenas Prácticas
✅ DO - Hacer
# ✅ Usar variable de entorno para credenciales
SIIGO_USERNAME=user@siigo.com
# ✅ Empezar con viewer role
SIIGO_ROLE=viewer
# ✅ Habilitar auditoría
ENABLE_AUDIT_LOG=true
# ✅ Usar sandbox para testing
SIIGO_BASE_URL=https://sandbox.siigo.com
# ✅ Monitorear logs de auditoría
tail -f logs/audit.log❌ DON'T - No Hacer
# ❌ NO hardcodear credenciales
const apiKey = "xxx_api_key_xxx"
# ❌ NO usar role=admin en producción
SIIGO_ROLE=admin
# ❌ NO deshabilitar validación
rejectUnauthorized: false
# ❌ NO permitir acceso sin autenticación
AUTH_REQUIRED=false
# ❌ NO committed .env con valores reales
git commit .env🚨 Manejo de Incidentes
Credenciales comprometidas
# 1. Rotar API key en Siigo
# 2. Actualizar .env
# 3. Reiniciar servidor
npm start
# 4. Revisar logs de auditoría para acceso no autorizado
grep "denied\|failure" logs/audit.logRate limit excedido
# Los límites se resetan automáticamente
# Pero se puede resetear manualmente:
npm run reset-limiters
# O reducir el límite
RATE_LIMIT_REQUESTS=20📈 Monitoreo
Health check
curl http://localhost:3000/healthEstadísticas de servidor
siigo_get_server_status()
// Retorna: uptime, role, audit stats, rate limit stats🔄 Desarrollo
Modo watch
npm run devLinting
npm run lint
npm run lint:fixFormateo
npm run format📦 Compilación para Producción
npm run build
npm run type-check
npm test
npm start🐛 Troubleshooting
Error: "Missing credentials"
Solución: Configurar SIIGO_USERNAME y SIIGO_ACCESS_KEY en .envError: "Rate limit exceeded"
Solución: Esperar o aumentar RATE_LIMIT_REQUESTSError: "Access denied to tool"
Solución: Cambiar SIIGO_ROLE a un nivel superior (viewer -> editor -> admin)Error de certificado SSL
Solución: Usar SIIGO_BASE_URL=https://sandbox.siigo.com para testing📝 Licencia
MIT
🤝 Contribuir
Las contribuciones de seguridad son bienvenidas. Por favor:
No abrir issues públicos sobre vulnerabilidades
Reportar a través de security@example.com
Dar tiempo para patch antes de divulgar
📞 Soporte
🐛 Issues: GitHub Issues
💬 Discussions: GitHub Discussions
📧 Email: support@example.com
🎯 Roadmap
Integración con Vault para secretos
Métricas Prometheus
Dashboard de auditoría
Webhooks para eventos
Sincronización de datos en tiempo real
Cache inteligente de API
📚 Referencias
Versión: 2.0.0
Estado: Producción Ready
Última actualización: Marzo 2026
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.