CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

Splitwise Mcp

chrischall/splitwise-mcp
27 toolsauthSTDIOregistry active
Summary

Connects Claude to your Splitwise account through the official Splitwise API, exposing 20 tools for managing shared expenses, groups, and friends. You can ask Claude to add expenses with custom splits, check balances, create groups, invite friends, or search past transactions. It covers the full CRUD surface: create/update/delete expenses and comments, manage group membership, handle friend requests. Runs via npx or from source, authenticates with your Splitwise API key. Built entirely by Claude Code, so review the implementation before use. Best for automating expense tracking when you're already managing shared costs in Splitwise and want natural language access without opening the app.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Tools

Public tool metadata for what this MCP can expose to an agent.

27 tools
users.get_currentReturns information about the authenticated user: id, name, email, default currency, locale, registration status.

Returns information about the authenticated user: id, name, email, default currency, locale, registration status.

No parameter schema in public metadata yet.

users.getReturns public information about another Splitwise user by id.1 params

Returns public information about another Splitwise user by id.

Parameters* required
idinteger
path parameter
users.updateUpdate the authenticated user's profile (first_name, last_name, email, password, default_currency, locale, etc.).7 params

Update the authenticated user's profile (first_name, last_name, email, password, default_currency, locale, etc.).

Parameters* required
idinteger
path parameter
emailstring
body parameter
localestring
body parameter
passwordstring
body parameter
last_namestring
body parameter
first_namestring
body parameter
default_currencystring
body parameter
groups.list**Note**: Expenses that are not associated with a group are listed in a group with ID 0.

**Note**: Expenses that are not associated with a group are listed in a group with ID 0.

No parameter schema in public metadata yet.

groups.getReturns full details for a group: members, balances, simplified-debts setting, group type, avatar.1 params

Returns full details for a group: members, balances, simplified-debts setting, group type, avatar.

Parameters* required
idinteger
path parameter
groups.createCreates a new group. Adds the current user to the group by default. **Note**: group user parameters must be flattened into the format `users__{index}__{property}`, where `property` is `user_id`, `first_name`, `last_name`, or `email`. The user's email or ID must be provided.3 params

Creates a new group. Adds the current user to the group by default. **Note**: group user parameters must be flattened into the format `users__{index}__{property}`, where `property` is `user_id`, `first_name`, `last_name`, or `email`. The user's email or ID must be provided.

Parameters* required
namestring
body parameter
group_typestring
What is the group used for? **Note**: It is recommended to use `home` in place of `house` or `apartment`. one of home · trip · couple · other · apartment · house
simplify_by_defaultboolean
Turn on simplify debts?
groups.deleteDelete an existing group. Destroys all associated records (expenses, etc.)1 params

Delete an existing group. Destroys all associated records (expenses, etc.)

Parameters* required
idinteger
path parameter
groups.restoreRestores a deleted group. **Note**: 200 OK does not indicate a successful response. You must check the `success` value of the response.1 params

Restores a deleted group. **Note**: 200 OK does not indicate a successful response. You must check the `success` value of the response.

Parameters* required
idinteger
path parameter
groups.add_user**Note**: 200 OK does not indicate a successful response. You must check the `success` value of the response.1 params

**Note**: 200 OK does not indicate a successful response. You must check the `success` value of the response.

Parameters* required
_bodystring
body parameter
groups.remove_userRemove a user from a group. Does not succeed if the user has a non-zero balance. **Note:** 200 OK does not indicate a successful response. You must check the success value of the response.2 params

Remove a user from a group. Does not succeed if the user has a non-zero balance. **Note:** 200 OK does not indicate a successful response. You must check the success value of the response.

Parameters* required
user_idinteger
body parameter
group_idinteger
body parameter
friends.list**Note**: `group` objects only include group balances with that friend.

**Note**: `group` objects only include group balances with that friend.

No parameter schema in public metadata yet.

friends.getReturns details about a single friendship including balances by currency and any pending expenses with that friend.1 params

Returns details about a single friendship including balances by currency and any pending expenses with that friend.

Parameters* required
idinteger
User ID of the friend
friends.createAdds a friend. If the other user does not exist, you must supply `user_first_name`. If the other user exists, `user_first_name` and `user_last_name` will be ignored.3 params

Adds a friend. If the other user does not exist, you must supply `user_first_name`. If the other user exists, `user_first_name` and `user_last_name` will be ignored.

Parameters* required
user_emailstring
body parameter
user_last_namestring
body parameter
user_first_namestring
body parameter
friends.create_batchAdd multiple friends at once. For each user, if the other user does not exist, you must supply `users__{index}__first_name`. **Note**: user parameters must be flattened into the format `users__{index}__{property}`, where `property` is `first_name`, `last_name`, or `email`.1 params

Add multiple friends at once. For each user, if the other user does not exist, you must supply `users__{index}__first_name`. **Note**: user parameters must be flattened into the format `users__{index}__{property}`, where `property` is `first_name`, `last_name`, or `email`.

Parameters* required
_bodystring
body parameter
friends.deleteGiven a friend ID, break off the friendship between the current user and the specified user. **Note**: 200 OK does not indicate a successful response. You must check the `success` value of the response.1 params

Given a friend ID, break off the friendship between the current user and the specified user. **Note**: 200 OK does not indicate a successful response. You must check the `success` value of the response.

Parameters* required
idinteger
User ID of the friend
reference.currenciesReturns a list of all currencies allowed by the system. These are mostly ISO 4217 codes, but we do sometimes use pending codes or unofficial, colloquial codes (like BTC instead of XBT for Bitcoin).

Returns a list of all currencies allowed by the system. These are mostly ISO 4217 codes, but we do sometimes use pending codes or unofficial, colloquial codes (like BTC instead of XBT for Bitcoin).

No parameter schema in public metadata yet.

expenses.getReturns full details for a single expense by id: payers, splits, shares, comments count, group, and audit metadata.1 params

Returns full details for a single expense by id: payers, splits, shares, comments count, group, and audit metadata.

Parameters* required
idinteger
path parameter
expenses.listList expenses visible to the authenticated user. Supports filters: group_id, friend_id, dated_after, dated_before, updated_after, updated_before, limit, offset.8 params

List expenses visible to the authenticated user. Supports filters: group_id, friend_id, dated_after, dated_before, updated_after, updated_before, limit, offset.

Parameters* required
limitinteger
query parameterdefault: 20
offsetinteger
query parameterdefault: 0
group_idinteger
If provided, only expenses in that group will be returned, and `friend_id` will be ignored.
friend_idinteger
ID of another user. If provided, only expenses between the current and provided user will be returned.
dated_afterstring
query parameter
dated_beforestring
query parameter
updated_afterstring
query parameter
updated_beforestring
query parameter
expenses.createCreates an expense. You may either split an expense equally (only with `group_id` provided), or supply a list of shares. When splitting equally, the authenticated user is assumed to be the payer. When providing a list of shares, each share must include `paid_share` and `owed_s...1 params

Creates an expense. You may either split an expense equally (only with `group_id` provided), or supply a list of shares. When splitting equally, the authenticated user is assumed to be the payer. When providing a list of shares, each share must include `paid_share` and `owed_s...

Parameters* required
_bodystring
body parameter
expenses.updateUpdates an expense. Parameters are the same as in `create_expense`, but you only need to include parameters that are changing from the previous values. If any values is supplied for `users__{index}__{property}`, _all_ shares for the expense will be overwritten with the provide...17 params

Updates an expense. Parameters are the same as in `create_expense`, but you only need to include parameters that are changing from the previous values. If any values is supplied for `users__{index}__{property}`, _all_ shares for the expense will be overwritten with the provide...

Parameters* required
idinteger
ID of the expense to update
coststring
A string representation of a decimal value, limited to 2 decimal places
datestring
The date and time the expense took place. May differ from `created_at`
detailsstring
Also known as "notes."
group_idinteger
The group to put this expense in, or `0` to create an expense outside of a group.
category_idinteger
A category id from `get_categories`
descriptionstring
A short description of the expense
currency_codestring
A currency code. Must be in the list from `get_currencies`
repeat_intervalstring
body parameterone of never · weekly · fortnightly · monthly · yearly
users__1__emailstring
body parameter
users__0__user_idinteger
body parameter
users__1__last_namestring
body parameter
users__0__owed_sharestring
Decimal amount as a string with 2 decimal places. The amount this user owes for the expense
users__0__paid_sharestring
Decimal amount as a string with 2 decimal places. The amount this user paid for the expense
users__1__first_namestring
body parameter
users__1__owed_sharestring
Decimal amount as a string with 2 decimal places. The amount this user owes for the expense
users__1__paid_sharestring
Decimal amount as a string with 2 decimal places. The amount this user paid for the expense
expenses.delete**Note**: 200 OK does not indicate a successful response. The operation was successful only if `success` is true.1 params

**Note**: 200 OK does not indicate a successful response. The operation was successful only if `success` is true.

Parameters* required
idinteger
ID of the expense to delete
expenses.restore**Note**: 200 OK does not indicate a successful response. The operation was successful only if `success` is true.1 params

**Note**: 200 OK does not indicate a successful response. The operation was successful only if `success` is true.

Parameters* required
idinteger
ID of the expense to restore
comments.listReturns the comments on a given expense. `expense_id` is required.1 params

Returns the comments on a given expense. `expense_id` is required.

Parameters* required
expense_idinteger
query parameter
comments.createAdd a comment to an existing expense by expense_id.2 params

Add a comment to an existing expense by expense_id.

Parameters* required
contentstring
body parameter
expense_idinteger
body parameter
comments.deleteDeletes a comment. Returns the deleted comment.1 params

Deletes a comment. Returns the deleted comment.

Parameters* required
idinteger
path parameter
notifications.listReturn a list of recent activity on the users account with the most recent items first. `content` will be suitable for display in HTML and uses only the `<strong>`, `<strike>`, `<small>`, `<br>` and `<font color="#FFEE44">` tags. The `type` value indicates what the notificatio...2 params

Return a list of recent activity on the users account with the most recent items first. `content` will be suitable for display in HTML and uses only the `<strong>`, `<strike>`, `<small>`, `<br>` and `<font color="#FFEE44">` tags. The `type` value indicates what the notificatio...

Parameters* required
limitinteger
Omit (or provide `0`) to get the maximum number of notifications.default: 0
updated_afterstring
If provided, returns only notifications after this time.
reference.categoriesReturns a list of all categories Splitwise allows for expenses. There are parent categories that represent groups of categories with subcategories for more specific categorization. When creating expenses, you must use a subcategory, not a parent category. If you intend for an...

Returns a list of all categories Splitwise allows for expenses. There are parent categories that represent groups of categories with subcategories for more specific categorization. When creating expenses, you must use a subcategory, not a parent category. If you intend for an...

No parameter schema in public metadata yet.

Splitwise MCP

CI npm license

A Model Context Protocol server that connects Claude to Splitwise, giving you natural-language access to your expenses, groups, friends, and balances.

[!WARNING] AI-developed project. This codebase was entirely built and is actively maintained by Claude Code. No human has audited the implementation. Review all code and tool permissions before use.

What you can do

Ask Claude things like:

  • "What do I owe?"
  • "Add a $50 dinner expense to the vacation group"
  • "Split this hotel bill 60/40 with Sarah"
  • "Who's in the trip group?"
  • "Add Meredith to the household group"
  • "Show me recent expenses"
  • "Delete that duplicate expense"

Requirements

  • Claude Desktop or Claude Code
  • Node.js 20.6 or later
  • A Splitwise account and API key

Acknowledgement of Terms

By using this MCP server, you acknowledge and agree to the following:

1. This server accesses your own Splitwise account via Splitwise's official Developer API. Auth happens via your own API consumer key + secret, which Splitwise issues to you when you register an app. It does not — and cannot — access anyone else's expenses or groups.

2. Splitwise's Developer Terms govern your use of this server. The clauses most relevant here:

You will use Splitwise Materials solely as necessary to develop, test and support a Self-Service integration of your software application… with Splitwise.

And on rate limits: "You will not use the API in a manner that exceeds rate limits, or constitutes excessive or abusive usage." And on competitive use: "You may not [use] Splitwise Materials to create an application that replicates existing Splitwise functionality or competes with Splitwise."

You are agreeing to those terms — read by the maintainer 2026-05-23 — every time you invoke a tool in this server.

3. Personal, non-commercial use only. This project is not affiliated with, endorsed by, sponsored by, or in partnership with Splitwise, Inc. It is a personal automation tool that calls the documented public Splitwise REST API on your own account. Do not use it to commercialize Splitwise data, compete with Splitwise's product, or share API credentials with third parties.

4. Your API key is yours alone. Splitwise issues credentials per-app, per-developer. Do not commit your SPLITWISE_API_KEY (or consumer key/secret) to git, do not paste it into shared chats, and do not embed it in a public client.

5. You accept full responsibility for any consequences of using this server in connection with your Splitwise account — rate limiting, API key revocation, account warnings, or any enforcement action. If Splitwise objects to your use or your usage exceeds their rate limits, stop using this server.

This section is the maintainer's good-faith summary of the terms — it is not legal advice and does not modify or supersede Splitwise's actual Developer Terms.

Installation

Option A -- npx (recommended)

npx -y splitwise-mcp

Add to your Claude config (.mcp.json or Claude Desktop config):

{
  "mcpServers": {
    "splitwise": {
      "command": "npx",
      "args": ["-y", "splitwise-mcp"],
      "env": {
        "SPLITWISE_API_KEY": "your-api-key-here"
      }
    }
  }
}

Option B -- from source

git clone https://github.com/chrischall/splitwise-mcp.git
cd splitwise-mcp
npm install
npm run build

Add to Claude Desktop config:

  • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "splitwise": {
      "command": "node",
      "args": ["/absolute/path/to/splitwise-mcp/dist/index.js"],
      "env": {
        "SPLITWISE_API_KEY": "your-api-key-here"
      }
    }
  }
}

Getting your API key

  1. Go to secure.splitwise.com/apps/register
  2. Register an app (name and description can be anything)
  3. Copy the API key from the app detail page

Credentials

Env varRequiredNotes
SPLITWISE_API_KEYYesAPI key from splitwise.com/apps/register

Available tools

20 tools across 5 domains. All tools are prefixed sw_.

User

ToolWhat it does
sw_get_current_userGet the authenticated user's profile
sw_get_userGet another user's profile by ID

Groups

ToolWhat it does
sw_list_groupsList all groups with members
sw_get_groupGroup details including members and balances
sw_create_groupCreate a new group
sw_delete_groupSoft-delete a group
sw_undelete_groupRestore a deleted group
sw_add_user_to_groupAdd a user to a group
sw_remove_user_from_groupRemove a user from a group

Friends

ToolWhat it does
sw_list_friendsList all friends
sw_create_friendAdd a friend by email
sw_delete_friendRemove a friendship

Expenses

ToolWhat it does
sw_list_expensesList or search expenses with filters
sw_get_expenseFull details of a single expense
sw_create_expenseCreate an expense (equal or custom split)
sw_update_expenseEdit an existing expense
sw_delete_expenseSoft-delete an expense
sw_undelete_expenseRestore a deleted expense
sw_get_commentsGet comments on an expense
sw_create_commentAdd a comment to an expense
sw_delete_commentDelete a comment

Utilities

ToolWhat it does
sw_get_notificationsRecent activity feed
sw_get_categoriesExpense category list
sw_get_currenciesSupported currency codes

Troubleshooting

"SPLITWISE_API_KEY is required" -- set the environment variable in your MCP config or a .env file.

429 rate limit -- Splitwise has undocumented rate limits. Wait a moment and retry.

Tools not appearing in Claude -- go to Claude Desktop > Settings > Developer to see connected servers. Make sure you fully quit and relaunched after editing the config.

Development

npm test        # run the test suite (vitest)
npm run build   # compile TypeScript -> dist/

Project structure

src/
  client.ts         Splitwise API client (auth, request handling)
  index.ts          MCP server entry point
  tools/
    user.ts         sw_get_current_user, sw_get_user
    groups.ts       group CRUD and membership
    friends.ts      friend list and management
    expenses.ts     expense CRUD, comments
    utilities.ts    notifications, categories, currencies

License

MIT

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Configuration

SPLITWISE_API_KEY*secret

Your Splitwise API key (splitwise.com/apps/api)

Registryactive
Packagesplitwise-mcp
TransportSTDIO
AuthRequired
UpdatedMay 29, 2026
View on GitHub