Bank Statement MCP

Importa una exportación CSV bancaria, categorízala, resume por moneda, encuentra cargos recurrentes y concilia contra tu libro de gastos. Todo permanece en tu máquina.

Documentación

mcp-bank-statement

Servidor MCP para leer exportaciones CSV de extractos bancarios, categorizar y conciliar transacciones. Los exportes CSV bancarios se categorizan, resumen y concilian con gastos.

Funciona con Claude Desktop, Claude Code, Cursor y cualquier cliente del Model Context Protocol. Se ejecuta en tu propia máquina o se aloja sin instalación.

Página del producto: https://mcp.zovo.one/s/bank-statement — qué hace, las herramientas que expone y un endpoint de token en vivo.

Instalación

Alojado, nada que instalar. Obtén un token de https://mcp.zovo.one/mcp/connect (la página de conexión) o de https://mcp.zovo.one/mcp/token (el mismo token como JSON); se emite uno anónimo gratuito al instante y una clave Pro funciona de la misma manera. Luego apunta un cliente MCP a https://mcp.zovo.one/mcp/bank-statement a través de streamable-http y envía el token como Authorization: Bearer <token>.

Si tu cliente no puede configurar encabezados, coloca el token en la ruta en su lugar: https://mcp.zovo.one/mcp/bank-statement/t/<token>. Ambas formas funcionan. La URL desnuda sin token responde 401 en tools/call, por lo que el token no es opcional.

Claude Desktop, un clic. Descarga bank-statement.mcpb desde la última versión y haz doble clic en él.

Desde el código fuente. El espejo es autónomo: cada dependencia de @theluckystrike/* está incluida, por lo que un clon nuevo se compila sin configuración adicional.

git clone https://github.com/theluckystrike/mcp-bank-statement.git
cd mcp-bank-statement
npm install && npm run build

Luego apunta tu cliente al punto de entrada compilado:

{
  "mcpServers": {
    "bank-statement": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-bank-statement/dist/index.js"]
    }
  }
}

@theluckystrike/mcp-bank-statement aún no está publicado en npm, por lo que un comando npx -y @theluckystrike/mcp-bank-statement fallará. Las tres rutas anteriores son las que funcionan y cada una es verificada por CI.

bank-statement demo

Espejo de solo lectura de mcp-servers/servers/bank-statement. Consulta MIRROR.md.

En el Registro oficial de MCP (io.github.theluckystrike/bank-statement-csv-categorize-reconcile-ledger).

Exporta el CSV de tu banco, di "importa esto", y el mes queda legible. Este servidor MCP convierte un exporte bancario en un libro local: encuentra la fila de encabezado bajo cualquier preámbulo que el banco imprima encima, determina qué columna es la fecha, cuál es el dinero y en qué dirección fue el dinero, y lee los montos en la configuración regional del propio archivo, por lo que 1 234,56 de mBank y 1,234.56 de un banco estadounidense se convierten en el mismo número. Un débito se almacena como negativo y un crédito como positivo, una vez, en la importación, para que nada posterior tenga que adivinar. Reimportar el mismo exporte no agrega nada: cada línea lleva un hash de su fecha, monto, moneda y descripción, con un índice de ocurrencia, por lo que dos cafés idénticos en un mismo día siguen siendo dos transacciones mientras que una segunda importación del mismo archivo sigue siendo cero. Tus reglas categorizan las transacciones a medida que llegan, los resúmenes informan dinero entrante, dinero saliente y el neto por moneda y nunca mezclan monedas, recurring_detect encuentra las suscripciones y cuánto cuesta cada una por año, y reconcile_expenses compara los débitos bancarios con los recibos en mcp-expense-tracker para que puedas ver qué débitos no tienen recibo y qué recibos nunca llegaron al banco. Todo es un archivo JSON simple en tu propia máquina; nada se sube a ningún lugar.

Convierte un CSV bancario en un mes categorizado y conciliado en el chat, sin necesidad de un SaaS de contabilidad.

Perfiles bancarios: Revolut, Wise, mBank, PKO BP, ING, N26 y un lector genérico que funciona solo con los encabezados.

Formatos de archivo que lee sin que se lo pidan: UTF-8 y UTF-16 (en cualquier orden de bytes, como lo guarda Excel en Windows), finales de línea CRLF, LF y solo CR, campos entre comillas que contienen comas, comillas y saltos de línea, 1.234,56 y 1,234.56, paréntesis contables (12.50) y un signo menos final 12.50- (ambos negativos), y una mezcla de monedas dentro de un solo archivo. Una celda que contiene - o nada se omite y se menciona en skipped_lines en lugar de leerse como cero. Cuando la columna de fecha es ambigua (03/04/2026 sin ningún valor superior a 12 en ningún lugar), el orden asumido se indica en la respuesta en lugar de elegir uno en silencio.

Instalación en 60 segundos

La publicación en npm para @theluckystrike/mcp-bank-statement está pendiente. Hasta entonces, el paquete de un clic .mcpb o un clon+compilación son la ruta que funciona, ambos verificados a continuación.

Un clic (.mcpb): descarga bank-statement.mcpb desde la última versión y haz doble clic en él en Claude Desktop: https://github.com/theluckystrike/mcp-servers/releases/latest

(claude_desktop_config.json):

{
  "mcpServers": {
    "bank-statement": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-bank-statement"]
    }
  }
}

Claude Code:

claude mcp add bank-statement -- npx -y @theluckystrike/mcp-bank-statement

(.cursor/mcp.json):

{
  "mcpServers": {
    "bank-statement": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-bank-statement"]
    }
  }
}

El formulario npx anterior comienza a funcionar en el momento en que se publica el paquete. Hasta entonces, usa el paquete .mcpb anterior, o compila desde el código fuente con exactamente estos tres comandos:

git clone https://github.com/theluckystrike/mcp-servers.git && cd mcp-servers
npm install
npm run build -w packages/mcp-license -w servers/spreadsheet -w servers/bank-statement

Luego apunta el command de tu cliente a node con un argumento: la ruta absoluta a servers/bank-statement/dist/index.js.

Para ejecutar en modo Pro, configura MCP_LICENSE_KEY en el mismo bloque de configuración, o llama a license_activate una vez con tu clave.

Herramientas

HerramientaQué hace
statement_importLee un CSV bancario en el libro. Detecta la fila de encabezado bajo cualquier preámbulo, las columnas de fecha, descripción, monto (o débito y crédito) y moneda, el orden de fechas y la configuración regional numérica. Informa qué detectó, qué almacenó, cuántas líneas eran duplicados de lo que ya existe y cada línea omitida con el motivo
transactions_listLista transacciones en un rango de fechas, filtradas por cuenta, categoría o uncategorized, con totales por moneda
transactions_searchEncuentra transacciones cuya descripción, contraparte, categoría o cuenta contenga la consulta. Solo subcadena, nunca una expresión regular
category_rulesEstablece o lista las reglas que categorizan transacciones. Se rechaza una coincidencia vacía, porque marcaría una sola categoría en todo el libro. Una coincidencia simple es una subcadena sin distinción de mayúsculas; regex: true compila el patrón solo si no puede retroceder exponencialmente, y (a+)+ se rechaza y se usa como subcadena. Establecer reglas las reaplica a las transacciones almacenadas
transaction_categorizeEstablece la categoría en transacciones por id. Nada cambia a menos que todos los ids existan
statement_summaryDinero entrante, dinero saliente y el neto para un rango, agrupado por categoría, mes, cuenta o contraparte, siempre por moneda
reconcile_expensesCompara débitos bancarios con los recibos en mcp-expense-tracker: misma moneda, mismo monto, dentro de una ventana de fechas. Informa coincidencias, líneas bancarias sin recibo y recibos que nunca llegaron al banco. El libro de gastos solo se lee
recurring_detectEncuentra suscripciones y cargos recurrentes: la misma contraparte, un monto que apenas varía, una cadencia constante. Informa la cadencia, el monto típico, la próxima fecha esperada y el costo anualizado. Dos cargos son un intervalo, por lo que el costo anual se retiene (cadence_confirmed: false) hasta que un tercer cargo lo confirme
statement_exportEscribe un rango a csv o json y devuelve la ruta. Escrito atómicamente, por lo que un fallo nunca deja un archivo a medias. Reemplazar un archivo existente está permitido y se informa (overwrote_existing_file)
accounts_listLas cuentas importadas, con banco, monedas, número de transacciones, rango de fechas y último saldo
license_statusMuestra el modo gratuito o Pro
license_activateActiva una clave Pro (verificada sin conexión)

El recurso bank://month devuelve el dinero entrante, saliente y neto de este mes, agrupado por categoría, por moneda. El prompt monthly_review impulsa todo el proceso de fin de mes: totales, líneas sin categorizar, suscripciones, conciliación.

Gratis vs Pro

GratisPro
Cuentas2ilimitadas
Lectura de historialúltimos 12 mesestodo
Reglas de categoría5ilimitadas
Importar, listar, buscar, resumirsísí
reconcile_expensessí, 31 días a la vezcualquier rango de fechas
recurring_detectsí, últimos 3 meses, 5 cargoshistorial completo, cada cargo
statement_exportnosí

La importación siempre almacena cada fila, sea cual sea el nivel: descartar líneas silenciosamente al entrar haría que el libro no coincidiera con el banco. El límite gratuito está en lo que se lee de vuelta.

Obtén Pro: https://mcp.zovo.one/buy/bank-statement, $19 único pago para este servidor, $39 para cada servidor, de por vida. Las claves se verifican sin conexión; nada se envía a ningún lugar.

Se combina con

  • mcp-expense-tracker, registra los recibos y el kilometraje; reconcile_expenses lee ese libro y te dice qué débitos bancarios no tienen recibo detrás.
  • mcp-spreadsheet, este servidor analiza tu CSV bancario con el propio lector RFC 4180 del servidor de hojas de cálculo y el analizador numérico regional, por lo que 1 234,56 significa lo mismo en ambos. Úsalo para cortar un rango exportado.
  • mcp-invoice, el lado de los ingresos: emite la factura y luego observa cómo llega el pago en statement_summary agrupado por contraparte.

Privacidad

Todo permanece en tu máquina. Los extractos se analizan localmente y se almacenan en un archivo JSON simple bajo ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/bank-statement/. El servidor no realiza ninguna llamada de red, ni para licencias, ni para análisis, ni para nada. Eliminar ese directorio lo restablece.

Creado por theluckystrike. Soporte: support@zovo.one

Usa estos documentos como un servidor MCP

Cualquier cliente MCP (Claude, Cursor, Windsurf, VS Code) puede leer la documentación de este repositorio directamente a través de GitMCP — sin instalación: