Skip to content

v0.3.0

Choose a tag to compare

@jamiew jamiew released this 02 Mar 16:00
· 27 commits to main since this release

a large rewrite of the MCP server with new tooling, testing, and observability.

Highlights

  • MCP tool annotations — all 19 tools now declare read/write intent (READONLY, WRITE_IDEMPOTENT, WRITE_CREATE, etc.)
  • MCP resources & prompts — 3 resources (categories, accounts, institutions) and 4 guided prompts (spending analysis, budget review, financial health check, transaction categorization)
  • Log analyzer & session evaluatorscripts/analyze_logs.py and scripts/eval_session.py for measuring token usage and identifying optimization opportunities
  • Token-optimized responses — compact categories (just id+name), lean bulk update responses, smarter compact transaction format
  • Local CI scriptuv run python scripts/ci.py runs the same checks as GitHub Actions

Server changes

  • Consolidated logging — removed redundant analytics tracking, simplified to structlog
  • Deleted ~200 lines of dead code (unused Pydantic models, duplicate helpers)
  • Bulk transaction updates return compact {transaction_id, status} instead of echoing full objects
  • get_transaction_categories returns compact {id, name} pairs by default (verbose=True for full)
  • Compact transactions now include categoryId, only include pending/notes when present

Testing & CI

  • 151 tests across 13 test files (up from ~70)
  • GitHub Actions CI on Python 3.10–3.13 (ruff, mypy, pytest)
  • Ruff linting and formatting enforced
  • Code review workflow with sticky comments

Dependencies

  • mcp 1.18 → 1.26
  • monarchmoneycommunity 1.2 → 1.3
  • pytest 8 → 9
  • starlette 0.48 → 0.52, typer 0.19 → 0.24, uvicorn 0.38 → 0.41
  • All deps bumped to latest

Docs

  • README rewritten — cleaner structure, proper fork attribution to @colvint and @hammem
  • PII policy added to CLAUDE.md — no real financial data in code or docs
  • All examples use anonymized data