Ledgy MCP Server
Official Model Context Protocol (MCP) server for Ledgy — a multi-currency expense tracker where you talk to your money. Connect Claude, ChatGPT, Cursor, or any MCP-compatible client and log, query, and edit your expenses, budgets, and accounts in plain English.
[!NOTE] Ledgy MCP is a hosted service — there is nothing to install or self-host. This repository is its public documentation. Full setup guide: ledgy.app/integrations.
Endpoint
| Server URL | https://api.ledgy.app/mcp |
| Transport | HTTP SSE, stateless mode |
| Auth | OAuth 2.1 + PKCE (S256, mandatory) |
| Client registration | Dynamic (RFC 7591) — no manual client_id |
| Discovery | RFC 8414 (authorization server metadata), RFC 9728 (protected resource metadata) |
| Sign-in | Apple, Google, or email |
| Access | Ledgy Cloud subscription — 7-day free trial, then $2.99/mo or $22.99/yr |
Quick start
Claude (claude.ai and Claude Desktop)
Settings → Connectors → Add custom connector → Name: Ledgy → Server URL: https://api.ledgy.app/mcp → Add → sign in with Apple, Google, or email.
ChatGPT (Plus / Pro / Business)
Ledgy is listed in the ChatGPT Apps directory. To add it manually instead:
Settings → Apps → Advanced settings → Developer mode (on) → Create → Name: Ledgy → MCP Server URL: https://api.ledgy.app/mcp → Authentication: OAuth → Create → sign in.
Cursor / Windsurf / other MCP clients
{
"mcpServers": {
"ledgy": {
"url": "https://api.ledgy.app/mcp"
}
}
}
Dynamic Client Registration is supported — the client registers itself on first connect.
What you can do
- "Log $12.50 coffee at Blue Bottle yesterday"
- "How much did I spend on groceries this month?"
- "Here's my bank statement — import it" (PDF, CSV, or a screenshot)
- "Move 200 EUR from Cash to Savings"
- "Set a 400 EUR monthly budget for eating out"
Tools (35)
| Group | Tools |
|---|---|
| Transactions | get_transactions, get_transaction, upsert_transactions, delete_transactions, aggregate_transactions |
| Accounts | list_accounts, upsert_accounts, delete_accounts, get_account_balance, adjust_account_balance, reconcile_account, transfer_between_accounts |
| Categories | list_categories, upsert_categories, delete_categories, upsert_category_groups, delete_category_groups |
| Budgets | list_budgets, upsert_budgets, delete_budgets |
| Groups (shared ledgers) | list_groups, upsert_groups, delete_groups |
| Tags | list_tags, upsert_tags, delete_tags |
| Recurring | list_recurring_transactions, upsert_recurring_transactions, delete_recurring_transactions |
| Receipts | upload_receipt, download_receipt |
| Currency | convert_currency — live ECB FX rates |
| User & misc | get_user_profile, update_user_settings, list_supported_icons |
Sharing in Ledgy decides visibility, not ownership: members of a shared group (household, trip, flat) see the same transactions while ownership stays personal.
Privacy & security
- OAuth 2.1 with PKCE; on 401 the server returns
WWW-Authenticatewithresource_metadatafor automatic discovery - Data is stored in Google Cloud Firestore and on Hetzner servers in Germany
- Security contact: security.txt (RFC 9116) · security@ledgy.app
- Privacy Policy · Terms of Service