FinanzApp MCP Server
Ubicación en el monorepo:proyecto-grado/finanzapp-mcp/Eldocker-compose.ymlunificado que orquesta este servicio junto con el backend y la base de datos se encuentra enproyecto-grado/docker-compose.yml.
Servidor MCP (Model Context Protocol) para el Asistente Financiero Personal de FinanzApp. Permite a Claude interactuar con el backend de finanzas mediante lenguaje natural.
Docker
Este proyecto incluye un Dockerfile multi-stage (Node 20 Alpine):
# Construir imagen individualmente
docker build -t finanzapp-mcp .
# O levantar todo el stack desde la carpeta padre (recomendado)
cd ..
docker compose up -d --buildCaracterísticas
- Gestión de Ingresos: Registrar y consultar ingresos por categoría y período
- Gestión de Gastos: Registrar gastos con categorización automática
- Gestión de Ahorros: Registrar ahorros y asociarlos a metas
- Metas Financieras: Crear metas y seguir el progreso
- Balance y Reportes: Consultar balance general y análisis financiero
- Integración WhatsApp: Soporte para interacción vía N8N
Requisitos
- Node.js 18 o superior
- npm o yarn
- Backend FinanzApp corriendo (Spring Boot)
Instalación
cd finanzapp-mcp
npm install
npm run buildConfiguración
El servidor utiliza variables de entorno para la configuración:
| Variable | Descripción | Valor por defecto |
|---|---|---|
FINANZAPP_API_URL | URL base del API | http://localhost:8080/api/v1 |
FINANZAPP_JWT_TOKEN | Token JWT para autenticación | - |
FINANZAPP_WHATSAPP_NUMBER | Número de WhatsApp del usuario | - |
FINANZAPP_TIMEOUT | Timeout para requests (ms) | 30000 |
Herramientas Disponibles
Ingresos
| Herramienta | Descripción |
|---|---|
crearIngreso | Registra un nuevo ingreso |
obtenerIngresos | Lista todos los ingresos |
obtenerIngresosPorPeriodo | Ingresos en un rango de fechas |
obtenerTotalIngresos | Total de ingresos |
Gastos (Egresos)
| Herramienta | Descripción |
|---|---|
crearEgreso | Registra un nuevo gasto |
obtenerGastos | Lista todos los gastos |
obtenerGastosPorPeriodo | Gastos en un rango de fechas |
obtenerGastosPorCategoria | Gastos de una categoría |
obtenerTotalGastos | Total de gastos |
obtenerDesgloseGastos | Desglose por categoría |
obtenerDesgloseGastosPorPeriodo | Desglose en período |
Ahorros
| Herramienta | Descripción |
|---|---|
crearAhorro | Registra un ahorro |
obtenerAhorros | Lista todos los ahorros |
obtenerAhorrosPorPeriodo | Ahorros en un rango de fechas |
obtenerTotalAhorros | Total de ahorros |
Metas Financieras
| Herramienta | Descripción |
|---|---|
crearMeta | Crea una meta financiera |
obtenerMetas | Lista todas las metas |
obtenerMetasActivas | Metas en progreso |
registrarProgresoMeta | Abona a una meta |
Balance y Análisis
| Herramienta | Descripción |
|---|---|
obtenerBalance | Balance general |
obtenerBalancePorPeriodo | Balance en período |
obtenerResumenFinanciero | Resumen completo |
obtenerAnalisisFinanciero | Análisis detallado |
obtenerRegistros | Todos los movimientos |
Categorías Disponibles
Categorías de Ingreso
TRABAJO_PRINCIPALTRABAJO_EXTRAGANANCIAS_ADICIONALESINVERSIONESOTROS
Categorías de Gasto
COMIDAPAREJACOMPRASTRANSPORTESERVICIOSENTRETENIMIENTOSALUDEDUCACIONOTROS
Integración con Claude Desktop
Paso 1: Compilar el servidor
cd finanzapp-mcp
npm install
npm run buildPaso 2: Configurar Claude Desktop
Edita el archivo de configuración de Claude Desktop:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.jsonPaso 3: Agregar el servidor MCP
Agrega la siguiente configuración al archivo JSON:
{
"mcpServers": {
"finanzapp": {
"command": "node",
"args": ["C:/Users/esteb/dev/proyecto-grado/finanzapp-mcp/dist/index.js"],
"env": {
"FINANZAPP_API_URL": "http://localhost:8080/api/v1",
"FINANZAPP_JWT_TOKEN": "tu-token-jwt-aqui"
}
}
}
}Nota para Windows: Usa barras inclinadas hacia adelante (/) o barras dobles (\\) en las rutas.
Paso 4: Obtener el Token JWT
- Inicia sesión en la aplicación o mediante la API:
curl -X POST http://localhost:8080/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "tu@email.com", "password": "tu-password"}'- Copia el token de la respuesta y agrégalo a la configuración.
Paso 5: Reiniciar Claude Desktop
Cierra y vuelve a abrir Claude Desktop para que cargue la configuración.
Paso 6: Verificar la integración
En Claude Desktop, deberías ver el servidor "finanzapp" en la lista de herramientas disponibles. Puedes probar con:
"¿Cuál es mi balance actual?"
"Registra un gasto de 50 pesos en comida"
"¿Cuánto he gastado este mes?"
Integración con Claude Code (CLI)
Opción 1: Archivo de configuración local
Crea un archivo .claude/settings.local.json en tu proyecto:
{
"mcpServers": {
"finanzapp": {
"command": "node",
"args": ["./finanzapp-mcp/dist/index.js"],
"env": {
"FINANZAPP_API_URL": "http://localhost:8080/api/v1",
"FINANZAPP_JWT_TOKEN": "tu-token-jwt"
}
}
}
}Opción 2: Configuración global
Edita ~/.claude/settings.json:
{
"mcpServers": {
"finanzapp": {
"command": "node",
"args": ["/ruta/completa/finanzapp-mcp/dist/index.js"],
"env": {
"FINANZAPP_API_URL": "http://localhost:8080/api/v1",
"FINANZAPP_JWT_TOKEN": "tu-token-jwt"
}
}
}
}Uso con MCP Inspector
Para depurar y probar las herramientas:
npm run inspectorEsto abrirá una interfaz web donde puedes:
- Ver todas las herramientas disponibles
- Probar herramientas con diferentes parámetros
- Ver las respuestas del servidor
Ejecutar Tests
# Ejecutar todos los tests
npm test
# Ejecutar con watch mode
npm run test:watchEjemplos de Uso
Registrar un ingreso
Usuario: "Recibí mi salario de 2500 pesos"
Claude: [Usa crearIngreso con monto=2500, categoria=TRABAJO_PRINCIPAL]Registrar un gasto
Usuario: "Gasté 80 pesos en el supermercado"
Claude: [Usa crearEgreso con monto=80, categoria=COMIDA]Consultar balance
Usuario: "¿Cuánto dinero tengo disponible?"
Claude: [Usa obtenerBalance]Crear una meta
Usuario: "Quiero ahorrar 5000 para vacaciones"
Claude: [Usa crearMeta con nombre="Vacaciones", montoObjetivo=5000]Análisis financiero
Usuario: "¿Cómo van mis finanzas este mes?"
Claude: [Usa obtenerAnalisisFinanciero]Arquitectura
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Claude Desktop │────▶│ MCP Server │────▶│ Backend API │
│ o Claude Code │◀────│ (Node.js) │◀────│ (Spring Boot) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
│ │ │
Lenguaje Herramientas REST API
Natural MCP + JWTTroubleshooting
El servidor no aparece en Claude Desktop
- Verifica que el archivo de configuración esté en la ubicación correcta
- Asegúrate de que el JSON sea válido
- Reinicia completamente Claude Desktop
Error de conexión al API
- Verifica que el backend esté corriendo en el puerto correcto
- Comprueba la URL en
FINANZAPP_API_URL - Verifica que el token JWT sea válido y no haya expirado
Error de autenticación (401)
- Regenera el token JWT
- Actualiza la configuración con el nuevo token
- Reinicia Claude Desktop
Los cambios no se reflejan
- Ejecuta
npm run builddespués de modificar el código - Reinicia Claude Desktop
Licencia
MIT
