No description
  • Python 92%
  • Go Template 4.8%
  • Makefile 1.6%
  • Dockerfile 1.6%
Find a file
example-bot d782df9045
Some checks failed
build-publish / test (push) Successful in 13s
build-publish / helm (push) Failing after 32s
build-publish / publish (push) Has been skipped
chore(ci): add Telegram main-failure alerts
2026-07-10 09:02:52 +00:00
.agents/skills/repo-lunch-money-k8s chore: add repo-lunch-money-k8s pointer skill 2026-06-02 01:01:57 -07:00
.claude chore: scrub coily references for coily retirement 2026-07-04 17:54:44 +00:00
.forgejo/workflows chore(ci): add Telegram main-failure alerts 2026-07-10 09:02:52 +00:00
.ward refactor: retire standalone deploy surface 2026-07-09 21:15:17 +00:00
chart/templates refactor: retire standalone deploy surface 2026-07-09 21:15:17 +00:00
docs refactor: retire standalone deploy surface 2026-07-09 21:15:17 +00:00
lunch_money_mcp fix HTTP host allowlists for MCP 2026-07-08 16:22:13 +00:00
scripts feat: categorize verb looks back 90 days 2026-05-22 04:22:10 -07:00
tests fix public ingress authority allowlist 2026-07-08 16:32:41 +00:00
.dockerignore Bootstrap the containerized, Helm-deployable MCP server 2026-05-22 02:09:19 -07:00
.gitignore Bootstrap the containerized, Helm-deployable MCP server 2026-05-22 02:09:19 -07:00
.pre-commit-config.yaml chore: bump agentic-os pre-commit pin to v0.65.0 2026-07-02 02:26:54 +00:00
AGENTS.md refactor: retire standalone deploy surface 2026-07-09 21:15:17 +00:00
CLAUDE.md chore(pre-commit): adopt context-load-points hooks (v0.11.1) 2026-05-30 00:44:14 -07:00
Dockerfile fix: run the venv console script directly instead of uv run 2026-05-22 03:23:06 -07:00
LICENSE Bootstrap the containerized, Helm-deployable MCP server 2026-05-22 02:09:19 -07:00
Makefile refactor: retire standalone deploy surface 2026-07-09 21:15:17 +00:00
pyproject.toml refactor: retire standalone deploy surface 2026-07-09 21:15:17 +00:00
README.md refactor: retire standalone deploy surface 2026-07-09 21:15:17 +00:00
rules.example.yaml chore(code-comments): clean YAML comment violations, bump agentic-os v0.16.0 2026-06-08 16:51:30 -07:00
uv.lock Refresh uv.lock for the renamed project 2026-05-22 02:09:59 -07:00

lunch-money-k8s 🍱☸️

An MCP server for the Lunch Money personal-finance API, packaged as a container image and served over streamable HTTP. Point Claude or any MCP client at it and ask about your spending in plain language.

Who this is for

  • Homelab folks running k3s who want Claude on their phone to answer "what did I spend on groceries this week" without keeping a laptop awake.
  • People who want one MCP endpoint shared across desktop, mobile, and scheduled jobs, instead of stdio-per-device.
  • Anyone who'd rather deploy a shared MCP endpoint than learn each server's bespoke install path.

Why you might try this one

For read/write API coverage, this is feature parity with the other Lunch Money MCP servers. Reach for it when you want the deployment shape - three things stdio-on-a-laptop can't do:

  • Mobile access - dictation-based shorthand queries from the phone. "What did I spend on groceries this week" against a Tailscale-reachable MCP works the same on the train as at the desk, no laptop awake required.
  • Scheduled dumps and analysis - k3s is the homelab's general-purpose scheduler, and anything in k3s inherits tailnet reach. A daily routine pulls the trailing 7 days, flags the credit-card balance, enriches opaque payees, feeds uncategorized transactions back into an opinionated rules.yaml format, and writes the digest into an Obsidian vault inbox.
  • Credential isolation - the Lunch Money API token lives in a k8s Secret materialized from AWS SSM via ExternalSecrets. The pod gets it as an env var, the MCP exposes tool calls, and the LLM never sees the underlying key. Access control sits at the tailnet boundary.

The daily pulls compound through the vault. Each digest becomes context for the next day's question, so today's note is what next March's "what was that big charge again" finds - an LLM-readable second brain built up over time.

Tools

  • list_transactions - transactions in a date range, optional uncategorized filter
  • list_categories / create_category - read and create categories
  • categorize_transaction - assign a category to a transaction
  • spending_summary - total spend per category
  • list_budgets - budget detail per category

Quick start (local, stdio)

Grab an API token from the Lunch Money developers page:

export LUNCH_MONEY_TOKEN=...
uv sync
uv run lunch-money-mcp

Then register uv run lunch-money-mcp with your MCP client.

Fleet deploy

The Kubernetes deploy bundle now lives in coilyco-bridge/deploy/services/lunch-money-mcp/. It owns the manifest, secret wiring, ingress, and rollout details. This repo keeps the app source and Docker image build only.

The server speaks streamable HTTP at /mcp on port 8080. Deployment notes are in docs/deploy.md.

License

AGPL-3.0. See LICENSE.

See also

Cross-reference convention from coilysiren/agentic-os#59.