Spliit MCP for Cloudflare Workers
Click on "Install 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., "@Spliit MCP for Cloudflare WorkersWhat's my current group balance?"
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.
Spliit MCP for Cloudflare Workers
An unofficial, security-focused MCP server for Spliit. One remote MCP connection can remember many groups, keep one active group, and read or deliberately create Spliit data. It is designed for a personal Cloudflare Worker deployment.
A normal Spliit group link is sufficient. No modified Spliit backend or Spliit account is required.
A Spliit group link grants access to its group. The protected/setup page is
the safer import path because the link does not pass through an AI client.
add_group_from_link is available for users who explicitly accept that their
MCP client and model will receive the link. The tool never returns or logs it.
Version 1 breaking change
Version 1 replaces per-call group arguments with a durable active-group model:
list_groupslists remembered aliases and the active alias;select_groupchanges the active group for later reads and preparations;read tools no longer accept a
groupargument;direct create tools are replaced by
prepare_expense,prepare_reimbursement, andcommit_draft;group credentials and drafts are encrypted inside a SQLite Durable Object;
the old
SPLIIT_GROUPS_JSONsecret is imported once for a safe upgrade.
Prepared drafts contain an immutable encrypted copy of their target. Selecting
another group before commit_draft cannot redirect the write.
Related MCP server: SplitwiseMCP
Version 1.1 group management
add_group_from_linkaccepts a normal group link, verifies it, encrypts it in the Cloudflare registry, derives a unique alias when needed, and selects it;create_groupcreates a group on the active group's Spliit server, or on publicspliit.appwhen the registry is empty, then remembers and selects it;neither tool returns the secret group URL or ID;
create_groupis registered only whenWRITES_ENABLEDis"true".
Install with an AI coding agent (recommended)
Give a trusted coding agent terminal and browser access, then paste:
Install Spliit MCP from https://github.com/kegelmeier/spliit-mcp-cloudflare
into my Cloudflare account. Read AGENTS.md and docs/agentic-install.md completely
before acting. Keep the default prepare/commit write workflow enabled, but do
not invoke it during installation. Never ask me to paste a Spliit group URL
into chat, a command argument, source control, or logs. Use Wrangler's
interactive Cloudflare login. Generate separate 32-byte MCP and admin tokens
and a 32-byte data-encryption key without displaying them. Deploy with an empty
SPLIIT_GROUPS_JSON bootstrap value, validate /healthz and authentication, then
give me the /setup URL so I can add group links privately in my browser.
Configure one Streamable HTTP MCP connection with an environment-backed bearer
token. Confirm the four write tools are present without invoking them.Existing 0.x deployments need the upgrade variant in Agentic installation.
Other installation paths
Tools
Tool | Default | Purpose |
| Read-only | List aliases and show which one is active |
| State change | Remember the active alias |
| State change | Validate and remember a supplied group link |
| Enabled | Create, remember, and select a new group |
| Read-only | Read active-group metadata and participants |
| Read-only | Read balances and suggested reimbursements |
| Read-only | Page and filter active-group expenses |
| Read-only | Read one active-group expense |
| Read-only | Read categories from the active Spliit host |
| Read-only | Read recent active-group activity |
| Enabled | Validate and store an expiring group-bound draft |
| Enabled | Validate and store an expiring group-bound draft |
| Enabled | Commit a prepared draft exactly to its bound group |
Write tools are registered by default. Set WRITES_ENABLED to "false" and
redeploy only when an intentionally read-only Worker is required; link import
remains available because it changes only the encrypted registry. Tool
availability is not permission to mutate: clients should require approval for
create_group, and always inspect a prepared expense preview and obtain
separate approval before commit_draft. There are no update or delete tools.
Configuration
Four encrypted Worker secrets are required:
Name | Purpose |
| Bearer token used by the MCP client; at least 32 characters |
| Different bearer token used only by |
| Exactly 64 hexadecimal characters used for AES-256-GCM |
| Import-only 0.x migration value; use |
Do not change DATA_ENCRYPTION_KEY after groups are stored. There is no
automatic key-rotation migration in version 1.
Non-secret variables live in wrangler.jsonc:
Name | Default | Meaning |
|
| Registers prepare and commit tools; set false for read-only mode |
|
| Upstream timeout, 1,000–30,000 ms |
|
| Draft lifetime, 60–3,600 seconds |
|
| Exact outbound Spliit hostname allowlist |
| empty | Optional inbound Worker hostname allowlist |
Self-hosted Spliit installations must be explicitly added to
ALLOWED_SPLIIT_HOSTNAMES before their links can be stored.
Security and persistence
/mcpand/adminuse separate bearer tokens.The MCP client receives aliases, never stored group URLs or IDs. If
add_group_from_linkis invoked, the supplied link necessarily passes through that one authenticated MCP request but is not returned.Group records, draft payloads, and completed draft results are encrypted with AES-256-GCM and record-specific associated data before SQLite persistence.
The setup page is same-origin, non-cacheable, frame-protected, and stores the admin token only in the current page's memory.
One-time draft claims prevent concurrent duplicate commits. A completed draft is replay-safe. An interrupted ambiguous commit remains locked so the user can verify Spliit instead of risking an automatic duplicate.
MCP transport requests remain stateless; only application state is durable.
Request tracing is intentionally disabled because Spliit tRPC URLs can contain group IDs.
Read SECURITY.md before deployment.
Limits and cost
There is no application-level group-count cap. Practical capacity and cost are bounded by Cloudflare Durable Objects storage/request limits and the Spliit server. Expense/activity pages remain limited to 50 records and upstream responses to 2 MiB.
The design is intended to fit ordinary personal use on Cloudflare's Free plan, but platform limits can change. Check current Durable Objects pricing, Workers pricing, and platform limits.
Compatibility and non-goals
Spliit has no account API for discovering every group; each existing link is added once through setup or
add_group_from_link.The Worker calls Spliit's unofficial tRPC procedures. Upstream changes can require an update.
Attachments, recurring creation, custom splits, updates, and deletion are not implemented.
This project is not affiliated with Spliit or Cloudflare.
Development
npm ci
cp .dev.vars.example .dev.vars
npm run dev
npm run checkUse placeholders only in tracked files and tests. See CONTRIBUTING.md and Architecture.
License
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMCP server for Splitwise. Enables creating and managing expenses, splits, and groups directly from Claude without manual entry.
- FlicenseNot gradedqualityCmaintenanceA local MCP server that enables AI clients like Codex, Claude Code, and Claude Desktop to manage Splitwise expenses, friends, groups, and more through natural language.2
- AlicenseNot gradedqualityBmaintenanceA local MCP server that exposes the Splitwise API as tools, enabling conversational management of expenses, groups, and friends. It runs entirely locally over stdio with no hosting required.870MIT
- FlicenseNot gradedqualityBmaintenanceRead-only MCP server for querying group expense splits and balances from a self-hosted receipt splitting app.
Related MCP Connectors
Hosted remote MCP server for YNAB on Cloudflare Workers with OAuth
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Cloudflare Workers MCP server: crypto-signal
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kegelmeier/spliit-mcp-cloudflare'
If you have feedback or need assistance with the MCP directory API, please join our Discord server