Skip to main content
Glama
bhonick

lunchmoney-readonly-mcp

by bhonick

Servidor MCP de solo lectura para Lunch Money para ChatGPT

Un servidor MCP remoto de un solo usuario para Lunch Money, diseñado para ChatGPT Business y desplegado en Cloudflare Workers. Utiliza Google OAuth únicamente para identificar a un usuario en la lista blanca; el token de API de Lunch Money se almacena como un secreto cifrado de Cloudflare nunca se devuelve a ChatGPT ni a una herramienta MCP.

Este proyecto se basó originalmente en el proyecto bm1549/lunchmoney-mcp-cloudflare y se ha adaptado a una plantilla de MCP de solo lectura para Lunch Money en Cloudflare Workers y ChatGPT. La implementación del upstream agrupada se conserva bajo vendor-lunchmoney-mcp, incluyendo su licencia MIT original y atribución. Gracias a Brian Marks por el trabajo original.

Este repositorio es una plantilla. No contiene ninguna URL de despliegue en vivo, token de API, secreto de Google OAuth, dirección de correo electrónico o ID de recurso de Cloudflare.

Qué lo hace de solo lectura

El servidor aplica el acceso de solo lectura en dos capas independientes:

  1. createReadonlyServer() expone una lista blanca positiva de 25 herramientas de recuperación. Las herramientas de creación, actualización, eliminación, carga, sincronización, actualización, división, agrupación y mutación de presupuestos no están registradas.

  2. runWithReadonlyConfig() rechaza cualquier solicitud que no sea GET a la API de Lunch Money antes de realizar una solicitud de red.

Todas las herramientas expuestas declaran readOnlyHint: true, destructiveHint: false y openWorldHint: false.

Related MCP server: Monarch Money MCP Server

Requisitos

  • Un token de API de Lunch Money

  • Una cuenta de Cloudflare con Workers y KV disponibles

  • Un cliente web de Google Cloud OAuth 2.0

  • Un espacio de trabajo de ChatGPT Business donde seas administrador o propietario

Despliega tu propia copia

  1. Clona este repositorio, luego instala y verifica las dependencias:

    npm install
    npm run typecheck
    npm run lint
    npm run test:readonly
  2. En wrangler.jsonc, elige un name único para el Worker y crea el espacio de nombres KV de OAuth:

    npx wrangler kv namespace create OAUTH_KV

    Copia el ID del espacio de nombres devuelto en REPLACE_WITH_OAUTH_KV_NAMESPACE_ID en wrangler.jsonc.

  3. Despliega una vez para obtener la URL de tu Worker:

    npx wrangler deploy
  4. Crea una Aplicación web de Google OAuth 2.0. Añade esta URI de redirección, reemplazando el host con la URL de tu Worker:

    https://YOUR-WORKER.YOUR-SUBDOMAIN.workers.dev/authorize/callback
  5. Configura los secretos de producción de forma interactiva. Nunca pongas sus valores en Git:

    npx wrangler secret put GOOGLE_CLIENT_ID
    npx wrangler secret put GOOGLE_CLIENT_SECRET
    npx wrangler secret put ALLOWED_EMAILS
    npx wrangler secret put STATE_SECRET
    npx wrangler secret put LUNCHMONEY_API_TOKEN

    ALLOWED_EMAILS es una lista separada por comas de las cuentas de Google permitidas para conectarse. El servidor falla en modo cerrado cuando esto está vacío.

  6. Despliega nuevamente. Tu punto final MCP es:

    https://YOUR-WORKER.YOUR-SUBDOMAIN.workers.dev/mcp

Conecta ChatGPT Business

  1. En ChatGPT, abre Ajustes del espacio de trabajo → Aplicaciones → Crear.

  2. Introduce el punto final /mcp anterior y elige OAuth como autenticación.

  3. Revisa la advertencia de aplicación personalizda, crea el borrador, luego publícalo y habilítalo.

  4. Cada usuario se conecta desde Ajustes → Plugins → [tu aplicación] → Conectar e inicia sesión con una cuenta de Google en la lista blanc.

  5. Inicia un nuevo chat de Trabajo, selecciona la aplicación y verifica la lista de herramientas antes de pedirle que inspeccione los datos de Lunch Money.

Antes de haer público el repositorio

Ejectua:

npm run check:public-release

Tambiém revisa git status, confirm que .dev.vars no esté rastreado, y asgúrate de que el nombre del Worker, el punto final, los IDs de recursos de Cloudflare y la documentación de ejemplo no identifiquen tu despliegue personal.

Si estás sanmanizando un despliegue existente, mantén su configuración fuera del repositorio o en un archivo wrangler.personal.jsonc ignoraddo por git. Despliega esa configuración privada con nnpx wangler dploy --cnf wrangler.personal.jsonc.

Verificación

La prueba de seguridad enfocada verifica la lista blanca exacta, sus anotaciones, la ausencia de herramientas de utación representativs, y el rechazo de solicitudes POST salientes:

npm run test:readonly

Consúltese THIRD_PARTY_NOTICES.md para obtener détalles de atribución.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    An MCP server providing full integration with the Lunch Money API to manage financial data including transactions, budgets, assets, and categories. It enables AI assistants to perform CRUD operations on financial records through a standardized HTTP interface.
    26
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Read-only MCP and HTTP proxy server for accessing Monarch Money financial data, enabling transaction analysis, budget tracking, and cashflow insights through natural language.
    6
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for programmatic read-only access to RiseUp cashflow data, allowing AI assistants to retrieve budget information via natural language.
    2
    247 npm
    30
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    A read-only MCP server for the Dough personal finance app, enabling assistants to query financial data like balances, transactions, and budgets through natural language.
    8
    MIT