ExpensifyAI
Enables managing Splitwise expenses and generating premium spending analytics with category breakdowns, trends, and settlement optimization through natural language.
README
ExpensifyAI
Talk to your Splitwise. Get CRED-grade spending analytics.
ExpensifyAI is a Model Context Protocol (MCP) server for Splitwise that lets any LLM client (Claude, etc.) manage shared expenses and produce deterministic, premium spending analytics — category breakdowns, monthly trends, per-member comparisons, and minimum-transaction settlement plans — rendered as a self-contained, offline HTML dashboard.
Built on top of the excellent tarunn2799/splitwise-mcp; extended with a deterministic analytics engine and a category-first dashboard.

Interactive dashboard, generated from synthetic data. Open examples/demo-dashboard.html
in a browser to try it live — pick a date range and every section recomputes instantly.
Analytics (what makes this ExpensifyAI)
- Deterministic by construction — every number is computed in pure Python with
Decimalmath (no float drift, no LLM estimation). Same input → byte-identical output. Each report carries a reconciliation check: per-expense shares must sum to cost, or the mismatch is flagged. - Category-first, à la CRED — an expandable "where it goes" view leads every report; tap a category to drill into its transactions.
- Seven analytics modules — category breakdown · monthly trend · owed-vs-paid ("mine vs split") · per-member comparison + category×member matrix · transaction ledger · top transactions · settlement optimizer (minimum transactions to settle a group — no other Splitwise tool has this).
- Interactive dashboard — CRED-grade dark UI with a live date-range picker + presets (this month / 3mo / 6mo / this year / all) that re-filter and recompute every section in the browser. Hand-rolled inline-SVG charts, validated colorblind-safe palette, fully offline (self-contained single file — no CDN, no server). All client math is integer paise, so the live recompute stays exact and reconciles against the Python source of truth.
- Two analytics tools —
analyze_spending(target_type, target_id?, dates?, generate_dashboard?)andcompare_group_members(group_id, …).target_typeisme|group|friend.
Itemization, receipt scanning & default splits
Splitwise-Pro-parity, built deterministically:
- Structured itemization —
create_itemized_expense(description, group_id, items, …)turns line-items into ONE expense where each item can split differently (beers ¾ to one person, groceries 4-way, cake between two). Each person's totalowed_shareis computed in exact integer paise (largest-remainder rounding, so an indivisible ₹100/3 still sums back to ₹100), and the expense is reconciled to its total before anything is written — a mismatch refuses to create rather than posting a wrong split.dry_run=Truepreviews the computed split. - Receipt scanning (LLM-vision-native) — no OCR engine, no cloud keys, no new dependencies:
the calling agent (Claude) reads the receipt image, extracts line-items, and calls
create_itemized_expense. The server owns the exact math and the Splitwise write. - Save default splits —
save_default_split(name, split)/list_default_splits/delete_default_split. Reuse a template by putting"split_ref": "roomies-4way"on an item. Stored locally in~/.expensifyai/splits.json.
Pick any date range — the whole dashboard recomputes live in the browser:

Try it without an account:
python examples/generate_demo.py # writes examples/demo-dashboard.html
Features (MCP)
- Full API Access: Manage expenses, groups, friends, and comments.
- Natural Language Resolution: Fuzzy matching for names ("John" -> "John Smith") and groups.
- Dual Auth: Supports both OAuth 2.0 (recommended) and API Keys.
- Smart Caching: Optimizes performance for static data like categories and currencies.
Installation
git clone https://github.com/udaysrinu/ExpensifyAI
cd ExpensifyAI
python -m venv venv
source venv/bin/activate
pip install -e .
Configuration
See SETUP.md for detailed authentication and configuration instructions.
Quick Config
Run the included setup script:
python -m splitwise_mcp_server.oauth_setup
Use the keys provided there, and add all three to your mcp.json:
{
"mcpServers": {
"splitwise": {
"command": "python",
"args": ["-m", "splitwise_mcp_server"],
"env": {
"SPLITWISE_OAUTH_ACCESS_TOKEN": "your_token_here"
}
}
}
}
Get your Auth Keys You can get your Consumer Key and Secret by registering an app at https://secure.splitwise.com/apps.
IMPORTANT: Using a Virtual Environment? If you installed the package in a
venvor Conda environment, you must use the absolute path to the python executable in your config."command": "/absolute/path/to/venv/bin/python"See SETUP.md for details.
Usage
The server enables natural language interactions with your Splitwise data.
Examples:
- "What's my current balance?"
- "Split a $50 dinner with Sarah."
- "Use the receipt I uploaded to split the dinner between Manav and me."
- "Show me expenses from last month."
- "Create a group called 'Ski Trip' with Mike."
Tools
See TOOLS.md for detailed documentation.
User Tools
get-current-user: Get authenticated user informationget-user: Get information about a specific user
Expense Tools
create-expense: Create a new expense with splitsget-expenses: List expenses with optional filtersget-expense: Get detailed expense informationupdate-expense: Update an existing expensedelete-expense: Delete an expense
Group Tools
get-groups: List all groupsget-group: Get detailed group informationcreate-group: Create a new groupdelete-group: Delete a groupadd-user-to-group: Add a user to a groupremove-user-from-group: Remove a user from a group
Friend Tools
get-friends: List all friendsget-friend: Get detailed friend information
Resolution Tools
resolve-friend: Fuzzy match friend names to user IDsresolve-group: Fuzzy match group names to group IDsresolve-category: Fuzzy match category names to category IDs
Comment Tools
create-comment: Add a comment to an expenseget-comments: Get all comments for an expensedelete-comment: Delete a comment
Utility Tools
get-categories: Get all expense categoriesget-currencies: Get all supported currencies
Arithmetic Tools
add: Add multiple numberssubtract: Subtract numbersmultiply: Multiply numbersdivide: Divide numbersmodulo: Calculate remainder
Development
# Setup
git clone https://github.com/udaysrinu/ExpensifyAI
cd ExpensifyAI
python -m venv venv
source venv/bin/activate
pip install -e ".[dev]"
# Test
pytest # full suite
pytest tests/test_analytics.py # deterministic analytics (15 tests)
# See the dashboard with no account
python examples/generate_demo.py # writes examples/demo-dashboard.html
License
MIT License. See LICENSE for details.
Built on top of tarunn2799/splitwise-mcp (MIT); the analytics engine, interactive dashboard, and tests are added by ExpensifyAI.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.