Lunchmoney Cloudflare Connector
FreeNot checkedCloudflare Workers deployment of the LunchMoney MCP server with Google OAuth multi-tenant authentication.
About
Cloudflare Workers deployment of the LunchMoney MCP server with Google OAuth multi-tenant authentication.
README
Deploy LunchMoney's MCP server to Cloudflare so Claude (desktop or mobile) can use it as a custom connector. Sign-in is gated by Google, with an optional Gmail allowlist for beta deployments. Each end-user supplies their own LunchMoney API token on first connect — the operator deploying the worker does not need a LunchMoney token.
What you'll need
As the operator (the person deploying):
- A free Cloudflare account
- A Google Cloud account (to create the OAuth client all end-users authenticate against)
- Node 22 or newer
As an end-user connecting from Claude:
- A Google account (one of the allowlisted Gmail addresses, if the operator configured an allowlist)
- A LunchMoney API token — you'll paste this once at the
/setuppage on first connect
Quick start
git clone https://github.com/bm1549/lunchmoney-mcp-cloudflare.git
cd lunchmoney-mcp-cloudflare
./setup.sh
The wizard walks you through everything below — KV namespaces, deploy, Google OAuth client, secrets, redeploy — and prints the final URL to paste into claude.ai.
Setup (manual)
1. Clone, install, log in to Cloudflare
git clone https://github.com/bm1549/lunchmoney-mcp-cloudflare.git
cd lunchmoney-mcp-cloudflare
npm install
npx wrangler login
2. Create the KV namespaces
npx wrangler kv namespace create OAUTH_KV
npx wrangler kv namespace create USER_TOKENS
Open wrangler.jsonc and paste the printed ids over REPLACE_WITH_OAUTH_KV_ID and REPLACE_WITH_USER_TOKENS_ID respectively.
3. Deploy once to mint your URL
npx wrangler deploy
The output prints a URL like https://lunchmoney-mcp.<your-subdomain>.workers.dev. Copy it — you'll need it next.
4. Set up Google sign-in
At Google Cloud → APIs & Services → Credentials:
- Configure the OAuth consent screen → External + Testing. Add the Gmail addresses you want to allow as test users.
- Create credentials → OAuth client ID → Web application.
- Add an Authorized redirect URI:
https://lunchmoney-mcp.<your-subdomain>.workers.dev/authorize/callback - Copy the Client ID and Client Secret.
5. Set the worker secrets
echo -n "<google-client-id>" | npx wrangler secret put GOOGLE_CLIENT_ID
echo -n "<google-client-secret>" | npx wrangler secret put GOOGLE_CLIENT_SECRET
echo -n "[email protected]" | npx wrangler secret put ALLOWED_EMAILS
openssl rand -hex 32 | npx wrangler secret put STATE_SECRET
ALLOWED_EMAILS is optional and serves as a beta gate. Leave it unset (or set it to an empty string) to allow any Google account with a verified email. Set it to a comma-separated list to restrict access.
6. Redeploy
npx wrangler deploy
7. Connect from Claude
In claude.ai → Settings → Connectors → Add custom connector:
https://lunchmoney-mcp.<your-subdomain>.workers.dev/mcp
The first time you connect:
- You'll be bounced through Google sign-in.
- After sign-in you'll land on a
/setuppage asking for your LunchMoney API token. - Paste a token from my.lunchmoney.app/developers and submit.
- You'll be returned to Claude with all LunchMoney tools registered.
On subsequent connects you'll skip step 2 — the stored token is reused.
Token rotation (v1 limitation)
This release does not yet expose a self-serve UI for rotating or deleting a stored token. To rotate, the operator deletes the user's KV row:
# `sub` is the Google subject id printed in worker logs at sign-in time.
npx wrangler kv key delete --binding USER_TOKENS "user:<sub>"
The user will then be sent back through /setup on their next connect. A /settings page for self-serve rotation is a planned follow-up.
Troubleshooting
- Google warns "App is being tested" — normal in Testing mode. Continue.
Forbidden: <email> is not authorizedafter Google sign-in — that address isn't inALLOWED_EMAILS. Either add them to the allowlist or unset it for open signup.Setup link expiredat/setup— the resume token is good for 30 minutes. Re-launch the connect flow from Claude.- Anything else —
npx wrangler tailstreams live logs from the deployed worker.
License
MIT
Installing Lunchmoney Cloudflare Connector
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/bm1549/lunchmoney-mcp-cloudflareFAQ
Is Lunchmoney Cloudflare Connector MCP free?
Yes, Lunchmoney Cloudflare Connector MCP is free — one-click install via Unyly at no cost.
Does Lunchmoney Cloudflare Connector need an API key?
No, Lunchmoney Cloudflare Connector runs without API keys or environment variables.
Is Lunchmoney Cloudflare Connector hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Lunchmoney Cloudflare Connector in Claude Desktop, Claude Code or Cursor?
Open Lunchmoney Cloudflare Connector on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Lunchmoney Cloudflare Connector with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
