lunchmoney-readonly-mcp
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:
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.runWithReadonlyConfig()rechaza cualquier solicitud que no seaGETa 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
Clona este repositorio, luego instala y verifica las dependencias:
npm install npm run typecheck npm run lint npm run test:readonlyEn
wrangler.jsonc, elige unnameúnico para el Worker y crea el espacio de nombres KV de OAuth:npx wrangler kv namespace create OAUTH_KVCopia el ID del espacio de nombres devuelto en
REPLACE_WITH_OAUTH_KV_NAMESPACE_IDenwrangler.jsonc.Despliega una vez para obtener la URL de tu Worker:
npx wrangler deployCrea 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/callbackConfigura 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_TOKENALLOWED_EMAILSes una lista separada por comas de las cuentas de Google permitidas para conectarse. El servidor falla en modo cerrado cuando esto está vacío.Despliega nuevamente. Tu punto final MCP es:
https://YOUR-WORKER.YOUR-SUBDOMAIN.workers.dev/mcp
Conecta ChatGPT Business
En ChatGPT, abre Ajustes del espacio de trabajo → Aplicaciones → Crear.
Introduce el punto final
/mcpanterior y elige OAuth como autenticación.Revisa la advertencia de aplicación personalizda, crea el borrador, luego publícalo y habilítalo.
Cada usuario se conecta desde Ajustes → Plugins → [tu aplicación] → Conectar e inicia sesión con una cuenta de Google en la lista blanc.
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-releaseTambié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:readonlyConsúltese THIRD_PARTY_NOTICES.md para obtener détalles de atribución.
This server cannot be installed
Maintenance
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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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