Skip to main content
Glama
bhonick

lunchmoney-readonly-mcp

by bhonick

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:

  1. createReadonlyServer() legt eine positive Zulassungsliste mit 25 Abruf-Tools offen. Create-, Update-, Delete-, Upload-, Sync-, Refresh-, Split-, Grouping- und Budget-Mutationstools sind nicht registriert.

  2. 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

  1. Klonen Sie dieses Repository, installieren und verifizieren Sie dann die Abhängigkeiten:

    npm install
    npm run typecheck
    npm run lint
    npm run test:readonly
  2. Wählen Sie in wrangler.jsonc einen eindeutigen Worker-name und erstellen Sie den OAuth-KV-Namespace:

    npx wrangler kv namespace create OAUTH_KV

    Kopieren Sie die zurückgegebene Namespace-ID in REPLACE_WITH_OAUTH_KV_NAMESPACE_ID in wrangler.jsonc.

  3. Stellen Sie einmal bereit, um Ihre Worker-URL zu erhalten:

    npx wrangler deploy
  4. Erstellen 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/callback
  5. Legen 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_TOKEN

    ALLOWED_EMAILS ist eine durch Kommas getrennte Liste von Google-Konten, die eine Verbindung herstellen dürfen. Der Server verweigert bei leerer Liste den Zugriff.

  6. Stellen Sie erneut bereit. Ihr MCP-Endpunkt lautet:

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

ChatGPT Business verbinden

  1. Öffnen Sie in ChatGPT Workspace-Einstellungen → Apps → Erstellen.

  2. Geben Sie den obigen /mcp-Endpunkt ein und wählen Sie die OAuth-Authentifizierung.

  3. Überprüfen Sie die Warnung zur benutzerdefinierten App, erstellen Sie den Entwurf, veröffentlichen und aktivieren Sie ihn dann.

  4. Jeder Benutzer verbindet sich über Einstellungen → Plugins → [your app] → Verbinden und meldet sich mit einem auf der Zulassungsliste stehenden Google-Konto an.

  5. 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:readonly

Details zur Namensnennung finden Sie in THIRD_PARTY_NOTICES.md.

-
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