lunchmoney-readonly-mcp
Schreibgeschützter Lunch Money MCP für ChatGPT
Ein Einzelbenutzer-Remote-MCP-Server für Lunch Money, entwickelt für ChatGPT Business und bereitgestellt auf Cloudflare Workers. Er verwendet Google OAuth nur zur Identifizierung eines Benutzers aus der Zulassungsliste; das Lunch-Money-API-Token wird als verschlüsseltes Cloudflare-Geheimnis gespeichert und niemals an ChatGPT oder ein MCP-Tool zurückgegeben.
Dieses Projekt basierte ursprünglich auf dem Projekt bm1549/lunchmoney-mcp-cloudflare und wurde in eine schreibgeschützte Lunch-Money-MCP-Vorlage für Cloudflare Workers und ChatGPT angepasst. Die gebündelte Upstream-Implementierung bleibt unter vendor-lunchmoney-mcp erhalten, einschließlich ihrer ursprünglichen MIT-Lizenz und Namensnennung. Dank an Brian Marks für die ursprüngliche Arbeit.
Dieses Repository ist eine Vorlage. Es enthält keine Live-Bereitstellungs-URL, kein API-Token, kein Google-OAuth-Geheimnis, keine E-Mail-Adresse und keine Cloudflare-Ressourcen-ID.
Was es schreibgeschützt macht
Der Server erzwingt den Schreibschutz in zwei unabhängigen Ebenen:
createReadonlyServer()legt eine positive Zulassungsliste mit 25 Abruf-Tools offen. Create-, Update-, Delete-, Upload-, Sync-, Refresh-, Split-, Grouping- und Budget-Mutationstools sind nicht registriert.runWithReadonlyConfig()lehnt jede Nicht-GET-Anfrage an die Lunch-Money-API ab, bevor eine Netzwerkanfrage gestellt wird.
Alle verfügbaren Tools deklarieren readOnlyHint: true, destructiveHint: false und openWorldHint: false.
Voraussetzungen
Ein Lunch-Money-API-Token
Ein Cloudflare-Konto, in dem Workers und KV verfügbar sind
Ein Google-Cloud-OAuth-2.0-Webclient
Ein ChatGPT-Business-Arbeitsbereich, in dem Sie Administrator oder Eigentümer sind
Eigene Kopie bereitstellen
Klonen Sie dieses Repository, installieren und verifizieren Sie dann die Abhängigkeiten:
npm install npm run typecheck npm run lint npm run test:readonlyWählen Sie in
wrangler.jsonceinen eindeutigen Worker-nameund erstellen Sie den OAuth-KV-Namespace:npx wrangler kv namespace create OAUTH_KVKopieren Sie die zurückgegebene Namespace-ID in
REPLACE_WITH_OAUTH_KV_NAMESPACE_IDinwrangler.jsonc.Stellen Sie einmal bereit, um Ihre Worker-URL zu erhalten:
npx wrangler deployErstellen Sie eine Google-OAuth-2.0-Webanwendung. Fügen Sie diesen Redirect-URI hinzu, wobei Sie den Host durch Ihre Worker-URL ersetzen:
https://YOUR-WORKER.YOUR-SUBDOMAIN.workers.dev/authorize/callbackLegen Sie die Produktionsgeheimnisse interaktiv fest. Übergeben Sie ihre Werte niemals an 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_EMAILSist eine durch Kommas getrennte Liste von Google-Konten, die eine Verbindung herstellen dürfen. Der Server verweigert bei leerer Liste den Zugriff.Stellen Sie erneut bereit. Ihr MCP-Endpunkt lautet:
https://YOUR-WORKER.YOUR-SUBDOMAIN.workers.dev/mcp
ChatGPT Business verbinden
Öffnen Sie in ChatGPT Workspace-Einstellungen → Apps → Erstellen.
Geben Sie den obigen
/mcp-Endpunkt ein und wählen Sie die OAuth-Authentifizierung.Überprüfen Sie die Warnung zur benutzerdefinierten App, erstellen Sie den Entwurf, veröffentlichen und aktivieren Sie ihn dann.
Jeder Benutzer verbindet sich über Einstellungen → Plugins → [your app] → Verbinden und meldet sich mit einem auf der Zulassungsliste stehenden Google-Konto an.
Starten Sie einen neuen Work-Chat, wählen Sie die App aus und überprüfen Sie die Tool-Liste, bevor Sie sie bitten, Lunch-Money-Daten zu untersuchen.
Bevor Sie das Repository öffentlich machen
Führen Sie Folgendes aus:
npm run check:public-releaseÜberprüfen Sie außerdem git status, bestätigen Sie, dass .dev.vars nicht versioniert ist, und stellen Sie sicher, dass der Worker-Name, der Endpunkt, die Cloudflare-Ressourcen-IDs und die Beispieldokumentation Ihre persönliche Bereitstellung nicht identifizieren.
Wenn Sie eine vorhandene Bereitstellung bereinigen, bewahren Sie deren Konfiguration außerhalb des Repositorys oder in einer per Git ignorierten Datei wrangler.personal.jsonc auf. Stellen Sie diese private Konfiguration mit npx wrangler deploy --config wrangler.personal.jsonc bereit.
Überprüfung
Der gezielte Sicherheitstest überprüft die genaue Zulassungsliste, ihre Annotationen, das Fehlen repräsentativer Mutationstools und die Ablehnung ausgehender POST-Anfragen:
npm run test:readonlyDetails zur Namensnennung finden Sie in THIRD_PARTY_NOTICES.md.
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