splitwise-chatgpt-mcp
Splitwise-Connector für ChatGPT
Ein reiner Daten-MCP-Server, der ChatGPT mit der offiziellen Splitwise-API verbindet. Unterstützt werden:
list_groupslist_friends(einschließlich Salden)list_expensesget_expensecreate_expense(gleiche Gruppenaufteilung oder explizite Anteile)
Der Server verwendet Streamable HTTP unter /mcp. Er fungiert außerdem als kleine OAuth-2.1-Autorisierungsbrücke: ChatGPT führt PKCE mit diesem Server durch, während dieser Server den Splitwise-OAuth abschließt und das Splitwise-Token von ChatGPT fernhält.
Voraussetzungen
Node.js 20 oder neuer
Eine stabile öffentliche HTTPS-URL für die Bereitstellung (oder ein Entwicklungstunnel beim Testen)
Ein Splitwise-Konto und eine Splitwise-OAuth-Anwendung
1. Splitwise-Anwendung registrieren
Öffnen Sie https://secure.splitwise.com/apps und erstellen Sie eine OAuth-Anwendung.
Setzen Sie die Rückruf-URL auf
https://YOUR-CONNECTOR-HOST/oauth/splitwise/callback.Kopieren Sie die Client-ID und das Client-Geheimnis. Committen Sie diese niemals.
Splitwise muss zum Connector umleiten, nicht direkt zu ChatGPT. Der Connector setzt danach den separaten PKCE-Ablauf von ChatGPT fort.
2. Konfiguration und Ausführung
cp .env.example .env
# Fill in .env, then:
npm install
npm run devErforderliche Variablen:
Variable | Zweck |
| Öffentlicher HTTPS-Ursprung ohne abschließenden Schrägstrich |
| Client-ID der Splitwise-OAuth-App |
| Geheimnis der Splitwise-OAuth-App |
| Stabiles zufälliges Geheimnis, mindestens 32 Zeichen, zum Authentifizieren und Verschlüsseln von OAuth-Artefakten |
Optionale Variablen: PORT, SPLITWISE_AUTHORIZE_URL, SPLITWISE_TOKEN_URL und SPLITWISE_API_BASE_URL.
Generieren Sie ein Session-Geheimnis mit openssl rand -hex 32. Für einen Container:
docker build -t splitwise-mcp .
docker run --env-file .env -p 3000:3000 splitwise-mcp3. OAuth-Ablauf
ChatGPT erkennt
/.well-known/oauth-protected-resourcevom MCP-Server.Es erkennt die OAuth-Metadaten dieses Connectors unter
/.well-known/oauth-authorization-serverund registriert dynamisch einen öffentlichen Client unter/register.ChatGPT startet Autorisierungscode + PKCE unter
/authorize, einschließlich des MCP-resource-Werts.Der Connector leitet den Benutzer zu Splitwise um und empfängt das Ergebnis unter
/oauth/splitwise/callback.Der Connector tauscht den Splitwise-Code serverseitig aus, erstellt einen fünf Minuten gültigen verschlüsselten Connector-Code und leitet zu ChatGPT um.
ChatGPT tauscht diesen Code unter
/tokenmit seinem PKCE-Verifier aus. Der Connector gibt ein authentifiziertes, verschlüsseltes Zugriffstoken zurück, das den minimalen Sitzungskontext enthält.Jede
/mcp-Anfrage entschlüsselt und validiert das Token, den Ablauf, den Scope-Kontext und die Ressource, bevor Splitwise aufgerufen wird.
Dynamische Client-Registrierungen, Connector-Codes und 30-Tage-Zugriffstokens sind zustandslose AES-256-GCM-Umschläge, die von SESSION_SECRET abgeleitet werden. Sie überstehen Ruhezustand, Neustarts, erneute Bereitstellungen und mehrere Replikate, solange jede Instanz dasselbe Geheimnis behält. Die Rotation von SESSION_SECRET macht absichtlich alle vorhandenen Registrierungen und Verbindungen ungültig. Dieses Beispiel gibt keine Aktualisierungstokens aus, daher ist nach 30 Tagen eine erneute Verknüpfung erforderlich.
4. Testen und mit ChatGPT verbinden
Führen Sie aus:
npm run build
npm test
npx @modelcontextprotocol/inspector@latestWählen Sie im Inspector Streamable HTTP und verwenden Sie https://YOUR-CONNECTOR-HOST/mcp.
In ChatGPT aktivieren Sie den Entwicklermodus unter Einstellungen → Sicherheit und Anmeldung. Fügen Sie auf der Plugins-Seite eine Verbindung hinzu, wählen Sie die Option für den öffentlichen Endpunkt und geben Sie https://YOUR-CONNECTOR-HOST/mcp ein. Überprüfen Sie die fünf erkannten Tools und rufen Sie dann ein Lesetool auf, um die Kontoverknüpfung zu starten.
Empfohlene Prüfungen:
„Liste meine Splitwise-Gruppen auf.“
„Zeige Salden mit meinen Splitwise-Freunden.“
„Zeige die letzten fünf Ausgaben in Gruppe 123.“
„Rufe Ausgabe 456 ab.“
„Erstelle eine Ausgabe von 24 USD in Gruppe 123, gleichmäßig aufgeteilt.“
Produktionshinweise
Der ausführbare Server speichert keinen OAuth-Sitzungsstatus. Vor einer größeren Mehrbenutzerbereitstellung:
Halten Sie
SESSION_SECRETstabil, geheim und identisch in allen Instanzen. Leiten Sie den Verschlüsselungsschlüssel für ein verwaltetes Schlüsselmanagement ab oder rufen Sie ihn ab; protokollieren Sie niemals Token oder Geheimnisse.Zustandslose Autorisierungscodes können nicht erneut verwendet werden. PKCE, exakte Bindung an Redirect-URI, Resource und Client, authentifizierte Verschlüsselung und die fünfminütige Lebensdauer begrenzen das Replay-Risiko. Falls strikte Einmalverwendung erforderlich ist, fügen Sie einen kurzlebigen gemeinsamen Replay-Cache mit einem Code-Identifier hinzu.
Beschränken Sie die Redirect-URIs der dynamischen Registrierung auf die genauen ChatGPT-Rückruf-URLs, die auf der App-Verwaltungsseite angezeigt werden (plus explizit konfigurierte Entwicklungs-Callbacks).
Fügen Sie Ratenbegrenzung, strukturierte Sicherheitsprotokolle, Geheimnisrotation, eine Datenschutzrichtlinie sowie Token-Widerruf/Kontoentkopplung hinzu.
Bewahren Sie die
resource-Bindung, die PKCE-Verifizierung, die kurze Code-Lebensdauer und das exakte Abgleich der Redirect-URIs auf.Führen Sie den Dienst hinter HTTPS aus. Setzen Sie diesen Entwicklungsserver nicht direkt dem Internet aus.
Das Tool create_expense ist als nicht idempotenter Schreibvorgang markiert. Die Anweisungen sagen dem Modell, dass es den genauen Betrag, die Währung, die Gruppe, den Zahler und die Anteile zusammenfassen soll, bevor es das Tool aufruft. Splitwise kann HTTP 200 mit einem errors-Objekt auf Anwendungsebene zurückgeben, daher prüft der Connector dieses Objekt, bevor er den Erfolg meldet.
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 Connectors
Hosted MCP server exposing US hospital procedure cost data to AI assistants
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
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/preethamd98/splitwise-chatgpt-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server