Splid MCP
Created at a month ago
by mxxfun
# Splid MCP Server A Model Context Protocol (MCP) server that exposes Splid (splid.app) via tools, powered by the reverse‑engineered `splid-js` client. - Language/Runtime: Node.js (ESM) + TypeScript - Transport: Streamable HTTP (and stdio for local inspector) - License: MIT ## Quick start 1) Install ```bash npm install ``` 2) Configure env Create a `.env` in project root: ``` CODE=YOUR_SPLID_INVITE_CODE PORT=8000 ``` 3) Build and run ```bash npm run build npm run dev ``` 4) Inspect locally ```bash npm run inspect ``` Then connect to `http://localhost:8000/mcp` using "Streamable HTTP". ## Tools All tools support an optional group selector to override the default from `CODE`: - `groupId?: string` - `groupCode?: string` (invite code) - `groupName?: string` (reserved; not yet supported) If none provided, the server uses the default group from `CODE`. ### health - Purpose: connectivity check - Output: `{ ok: true }` ### whoami - Purpose: show the currently selected group and its members - Input: none - Output: JSON containing group info and members ### createExpense - Purpose: create a new expense entry - Input: - `title: string` - `amount: number > 0` - `currencyCode?: string` (defaults to the group default when omitted) - `payers: { userId?: string; name?: string; amount: number > 0 }[]` (at least 1) - `profiteers: { userId?: string; name?: string; share: number in (0,1] }[]` (at least 1) - Optional group selector fields - Rules: - Names are case‑insensitive and resolved to member GlobalId; unknown names return a clear error. - The sum of all `share` values must equal 1 (±1e‑6). - Example (names): ```json { "title": "Dinner", "amount": 12.5, "payers": [{ "name": "Alice", "amount": 12.5 }], "profiteers": [{ "name": "Bob", "share": 0.6 }, { "name": "Alice", "share": 0.4 }] } ``` - Example (userIds): ```json { "title": "Dinner", "amount": 12.5, "payers": [{ "userId": "<GlobalId>", "amount": 12.5 }], "profiteers": [{ "userId": "<GlobalId>", "share": 1 }] } ``` ### listEntries - Purpose: list recent entries in a group - Input: - `limit?: number` (1..100, default 20) - Optional group selector fields - Output: array of entries ### getGroupSummary - Purpose: show balances/summary for a group - Input: - Optional group selector fields - Output: summary object (balances computed via Splid) ### Streamable HTTP - URL: `http://localhost:8000/mcp` - No auth headers required; use MCP Inspector to test. ## Troubleshooting - "Bad Request: Server not initialized": refresh and reconnect; first POST must be `initialize`. - 400 with share errors: ensure shares are in (0,1] and sum to 1. - Unknown name: check exact member names in `whoami` output. ## Configuration - Env variables: - `CODE`: Splid invite/join code for the default group - `PORT` (optional): default 8000 ## Acknowledgements - Splid JS client: https://github.com/LinusBolls/splid-js - MCP Server template / docs: https://github.com/InteractionCo/mcp-server-template ## License MIT
Categories
Tags
splid
expense tracking
what is Splid MCP?
Splid MCP is a Model Context Protocol (MCP) server that exposes the Splid application via tools, utilizing the reverse-engineered splid-js client.
how to use Splid MCP?
To use Splid MCP, follow these steps:
- Install the project using
npm install. - Configure your environment by creating a
.envfile with your Splid invite code and desired port. - Build and run the server with
npm run buildandnpm run dev. - Connect to
http://localhost:8000/mcpusing Streamable HTTP.
key features of Splid MCP?
- Provides a connectivity check tool.
- Displays current group and member information.
- Allows creation of new expense entries with detailed input requirements.
- Lists recent entries in a group.
- Shows balances and summaries for a group.
use cases of Splid MCP?
- Tracking shared expenses among friends or family.
- Managing group finances for events or trips.
- Analyzing group spending patterns and balances.
FAQ from Splid MCP?
- What is the purpose of the health tool?
It checks the connectivity of the server.
- How do I create a new expense entry?
You need to provide a title, amount, and details of payers and profiteers.
- What should I do if I encounter a "Bad Request: Server not initialized" error?
Refresh and reconnect; the first POST must be
initialize.
View More
MCP Servers