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.

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.

-
license - not tested
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Read-only MCP server for ClassQuill, a tutoring-business-management platform.

  • Hosted remote MCP server for YNAB on Cloudflare Workers with OAuth

  • Multi-tenant FastMCP server for Charles Schwab brokerage data, monetized via DPYC Tollbooth

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bhonick/lunchmoney-readonly-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server