Package Exports
- spendlog
- spendlog/db
- spendlog/entities
- spendlog/entities/Budget
- spendlog/entities/Category
- spendlog/entities/Invoice
- spendlog/entities/Profile
- spendlog/entities/Project
- spendlog/entities/Recurring
- spendlog/entities/SyncQueue
- spendlog/entities/Transaction
- spendlog/entities/User
- spendlog/entities/index
- spendlog/i18n
- spendlog/services/category
- spendlog/services/connection
- spendlog/services/pdf
- spendlog/services/project
- spendlog/services/sync
Readme
Spendlog
Expense tracking for freelancers, inside Claude. No apps. No spreadsheets.
Track expenses, send invoices, manage budgets — all in natural language. Your data stays local in SQLite.
Works with
Claude Desktop | Claude Code | VS Code | Cursor
Quick Start
npx spendlogOr one-click install:
The installer auto-configures Claude Desktop and Claude Code. Restart Claude, then try:
"Track 50€ for hosting"
That's it. Requires Node.js 20+.
Why Spendlog?
- Zero context-switching — track expenses while you work, right where you already are
- Local-first — all data in
~/.spendlog/spendlog.db, no account needed - Natural language — no forms, no menus, just tell Claude what you spent
- 43 tools — invoicing, budgets, recurring expenses, tax export, multi-project tracking
- Multilingual — English and German (EN/DE), with i18n ready for more
Examples
Tracking:
You: "29€ for ChatGPT subscription"
Claude: Expense saved: 29.00 € — Category: IT & Software
You: "Export 2025 for my accountant"
Claude: 247 transactions written to ~/spendlog-export-2025.csvInvoices:
You: "Create invoice for TechCorp, web development, 8h at 95€/h"
Claude: Invoice #2026-004 created — 760.00 € — PDF saved
You: "Mark it as paid"
Claude: Invoice #2026-004 marked as paid, income recorded.Analysis:
You: "How much did I spend on software this quarter?"
Claude: IT & Software: 287.00 € (12 transactions) — 23% of total expenses
You: "Compare January vs February"
Claude: Expenses up 15%. Biggest increase: Marketing (+120€)Tools
43 tools across 11 categories:
| Category | Tools |
|---|---|
| Transactions | add_expense add_income list_transactions update_transaction delete_transaction |
| Analysis | get_summary get_category_breakdown compare_periods get_tax_summary |
| Invoices | create_invoice list_invoices get_invoice mark_invoice_sent mark_invoice_paid delete_invoice duplicate_invoice |
| Budgets | set_budget get_budget_status list_budgets update_budget delete_budget |
| Recurring | create_recurring list_recurring delete_recurring process_recurring |
| Projects | create_project list_projects rename_project delete_project |
| Categories | list_categories add_category delete_category |
| Export | export_transactions export_invoices export_for_tax_advisor |
| Connection | connect connection_status disconnect |
| Sync | sync_status sync_now |
| Settings | get_profile set_profile get_notifications |
Configuration
Manual setup (if the installer didn't work)
Claude Desktop — edit your config file:
{
"mcpServers": {
"spendlog": {
"command": "npx",
"args": ["-y", "--package=spendlog", "spendlog-mcp"]
}
}
}Claude Code:
claude mcp add spendlog -- npx -y --package=spendlog spendlog-mcpEnvironment variables
| Variable | Description | Default |
|---|---|---|
SPENDLOG_LANGUAGE |
en or de |
en |
SPENDLOG_DATA_DIR |
Data directory path | ~/.spendlog |
DATABASE_PATH |
Full path to SQLite database | $SPENDLOG_DATA_DIR/spendlog.db |
SPENDLOG_PROJECT |
Default project for all transactions | none |
Privacy
All data stays on your machine. Cloud sync via spendlog.dev is opt-in.
Note: Spendlog is a tracker, not accounting software. Use it for personal insights, not official bookkeeping.
Development
TypeScript (strict), Vitest for tests, TypeORM + SQLite for storage.
git clone https://github.com/makz81/spendlog.git
cd spendlog
npm install
npm run dev # MCP server with watch mode
npm run test # 382 tests
npm run typecheck # type check (no emit)See CONTRIBUTING.md for architecture details and how to add new tools.