splitsmart-mcp
The SplitSmart MCP server lets an AI agent manage group expense splitting and settlement end-to-end.
Create groups with a name and unique members.
List all groups or get a group's members and expenses.
Add new members to an existing group.
Record expenses paid by a payer and split equally among participants in integer cents.
Delete expenses.
Get net balances per member: positive means owed money, negative means owes money.
Settle all debts with a minimal list of transfers from, to, and amount_cents.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@splitsmart-mcp Create group 'Roadtrip' with three friends, record gas expense, show who owes whom."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SplitSmart πΈ
Split group expenses fairly β from a web page, a REST API, or straight from your AI agent via MCP. Record who paid, see who owes whom, and get the fewest transfers needed to settle up. All money math is done in integer paise/cents, and the core rules are proven with property-based tests.
Built with Kiro for the Kiro University Challenge (#KiroUniversity #BuildWithKiro).
Quick start
git clone https://github.com/AswaniSahoo/splitsmart && cd splitsmart
uv sync
uv run splitsmart # web UI + API at http://127.0.0.1:8000
uv run pytest -q # 22 tests incl. 7 property-based tests
uv run splitsmart-mcp # MCP server (stdio) β normally started by Kiro via .kiro/settings/mcp.jsonUse it from Kiro CLI with the custom agent:
kiro-cli chat --agent splitsmart-accountant
> Create a group Goa Trip with Asha, Ravi and Meera. Asha paid βΉ1200 for the hotel for all three. Who owes whom?β οΈ SplitSmart has no authentication and binds to
127.0.0.1by default. Don't expose it to the internet.
Related MCP server: splitwise-mcp
How each Kiro lesson is used
# | Lesson | Where | What it does in this project |
1 | Spec-driven development | EARS requirements β design (architecture, API, data model) β task plan that drove the build | |
2 | Steering |
| |
3 | Hooks |
| |
4 | Property-based testing |
| 7 properties (money conserved, balances sum to 0, order independence, delete = undo, settle-up clears debts, β€ nβ1 transfers, format round-trip) run with Hypothesis, 200β500 cases each |
5 | Powers | Kiro Powers panel | Installed the Context7 power from the Kiro registry and used it to check |
6 | MCP | Our own MCP server exposing 8 tools ( | |
7 | Custom agents |
| |
β 1 | Kiro Web, cloud sessions, cloud configuration | Uploaded local | |
β 2 | Package a Kiro power |
|
Install the power in Kiro: Powers panel β Add Custom Power β Import power from GitHub β
https://github.com/AswaniSahoo/splitsmart (power folder: power-splitsmart), then say "split the dinner bill".
Architecture
Web UI ββfetchβββΆ api.py (FastAPI) ββ
βββΆ store.py (SQLite) + ledger.py (pure money logic)
Kiro agent βMCPββΆ mcp_server.py ββββββAPI
Method | Path | Body |
POST |
|
|
GET |
| |
POST |
|
|
POST |
|
|
DELETE |
| |
GET |
|
License
MIT
Available Tools
8 toolsadd_expenseA
Record an expense paid by payer, split equally among participants. amount_cents is a positive integer.
Inputs: payer (required), group_id (required), description (required), amount_cents (required), +1 more. Returns: object
add_memberC
Add a new member to an existing group.
Inputs: name (required), group_id (required). Returns: object
create_groupA
Create a group with a name and a list of unique member names.
Inputs: name (required), members (required). Returns: object
delete_expenseC
Delete an expense from a group.
Inputs: group_id (required), expense_id (required). Returns: result
get_balancesB
Net balance per member in cents: positive = is owed money, negative = owes money.
Inputs: group_id (required). Returns: result
get_groupB
Get a group with its members and expenses.
Inputs: group_id (required). Returns: object
list_groupsA
List all groups (id and name).
Inputs: no named parameters. Returns: result
settle_upA
Minimal list of transfers (from, to, amount_cents) that settles every debt in the group.
Inputs: group_id (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogβ¦
TDQS
Scored across 8 tools
Each tool targets a distinct operation: group lifecycle (create/list/get), member addition, expense add/delete, and balance/settlement. No overlap or ambiguity between tools.
All tools follow a consistent lowercase snake_case verb_noun pattern (e.g., add_expense, get_balances). Even settle_up, a phrasal verb, fits the style without deviation.
With 8 tools, the server is well-scoped for an expense-splitting domain. Each tool is necessary for core workflows, and the count is neither sparse nor bloated.
The tool surface covers the full cycle: create/list/get groups, add members, add/delete expenses, and compute balances/settlements. Minor gaps exist (e.g., no update/delete for groups or member removal), but they are not essential for the core purpose and agents can work around them.
Maintenance
Related MCP Connectors
Shared ledger for groups that share money: balances, expenses, transfers, budgets and reports.
Track and split shared expenses across trips, events, and groups. Create groups, add expenses, andβ¦
Split shared costs fairly: who owes whom, in the fewest payments. No account.
Track shared expenses, balances, reminders and records. OAuth required; no money transfers.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that helps AI assistants manage expense-sharing for social events, enabling the creation of gatherings, tracking of expenses, and calculation of fair reimbursements among participants.Apache 2.0
- AlicenseAqualityDmaintenanceAn MCP server for Splitwise that enables users to manage shared expenses, friends, and groups directly through AI assistants. It allows for creating, deleting, and listing expenses while providing tools to track net balances and group debts.8895 npmMIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server for managing shared expenses between groups, with tools for group management, expense tracking, and debt simplification.5 npmMIT
- FlicenseNot gradedqualityDmaintenanceA remote, multi-user MCP server for splitting group expenses, enabling users to register, create groups, add members, log expenses, and view balances through MCP clients.-