splitMCP

MCP OAuth TypeScript SSE HTTP Splitwise

What it is

splitMCP is a remotely hosted MCP server that lets AI applications interact with Splitwise conversationally.

Users can connect their MCP-compatible AI client and ask things like:

  • “Who do I owe money to right now?”
  • “Add lunch for 1200 split equally with Riya.”
  • “Show my groups and recent balances.”

The server exposes Splitwise functionality as MCP tools over HTTP/SSE transport.


What I built

I implemented the complete stack around:

  • MCP tool exposure
  • Remote HTTP/SSE transport
  • OAuth flows and session handling
  • Splitwise API integration
  • Hosting and deployment
  • Landing page and onboarding UX

The project started around stdio-based MCP transports, but evolved into a fully remote MCP service accessible directly from AI apps.


Challenges and learnings

The biggest challenge was learning how MCP clients actually behave in practice.

A major discovery was that many clients — including some large platforms — do not fully follow the MCP protocol spec consistently, especially around authentication and Dynamic Client Registration (DCR).

That led to a lot of debugging around:

  • OAuth edge cases
  • Broken DCR implementations
  • SSE connection behavior
  • Client-specific compatibility quirks
  • Auth chaining for smoother onboarding

I eventually rolled parts of my own OAuth handling flow to make the sign-in experience work more reliably across clients.


Operating the system

Unlike local-only MCP demos, splitMCP is continuously hosted as a public service.

That introduced operational challenges around:

  • Long-running server stability
  • Managing auth securely
  • Handling unreliable client behavior
  • Maintaining compatibility as MCP tooling evolves

The project became a practical deep dive into real-world MCP infrastructure, OAuth systems, and protocol interoperability beyond toy examples.