splitwise-chatgpt-mcp
Splitwise connector for ChatGPT
Splitwise の公式 API に ChatGPT を接続するデータ専用の MCP サーバーです。以下に対応しています:
list_groupslist_friends(残高を含む)list_expensesget_expensecreate_expense(グループ均等割り、または明示的なシェア指定)
このサーバーは /mcp で Streamable HTTP を使用します。また、小さな OAuth 2.1 認可ブリッジとしても機能します。ChatGPT はこのサーバーとの間で PKCE を完了し、一方このサーバーが Splitwise の OAuth を完了して、Splitwise のトークンを ChatGPT から隔離します。
前提条件
Node.js 20 以降
デプロイ用の安定した公開 HTTPS URL(テスト中は開発用トンネルでも可)
Splitwise アカウントと Splitwise OAuth アプリケーション
1. Splitwise アプリケーションの登録
https://secure.splitwise.com/apps を開き、OAuth アプリケーションを作成します。
コールバック URL を
https://YOUR-CONNECTOR-HOST/oauth/splitwise/callbackに設定します。クライアント ID とクライアントシークレットをコピーします。これらをコミットしないでください。
Splitwise はコネクタにリダイレクトする必要があり、ChatGPT に直接リダイレクトしてはいけません。コネクタはその後、ChatGPT の別の PKCE フローを再開します。
2. 設定と実行
cp .env.example .env
# Fill in .env, then:
npm install
npm run dev必須変数:
変数 | 目的 |
| 末尾スラッシュなしの公開 HTTPS オリジン |
| Splitwise OAuth アプリのクライアント ID |
| Splitwise OAuth アプリのシークレット |
| 安定したランダムなシークレット。少なくとも 32 文字。OAuth 成果物の認証と暗号化に使用 |
任意変数: PORT、SPLITWISE_AUTHORIZE_URL、SPLITWISE_TOKEN_URL、SPLITWISE_API_BASE_URL。
openssl rand -hex 32 でセッションシークレットを生成します。コンテナの場合:
docker build -t splitwise-mcp .
docker run --env-file .env -p 3000:3000 splitwise-mcp3. OAuth フロー
ChatGPT は MCP サーバーから
/.well-known/oauth-protected-resourceを検出します。/.well-known/oauth-authorization-serverでこのコネクタの OAuth メタデータを検出し、/registerで公開クライアントを動的登録します。ChatGPT は
/authorizeで authorization-code + PKCE を開始し、MCP のresource値を含めます。コネクタはユーザーを Splitwise にリダイレクトし、
/oauth/splitwise/callbackで結果を受け取ります。コネクタは Splitwise のコードをサーバー側で交換し、5 分間有効な暗号化コネクタコードを作成して、ChatGPT にリダイレクトします。
ChatGPT はそのコードを PKCE ベリファイアを使って
/tokenで交換します。コネクタは、最小限のセッションコンテキストを含む認証済みの暗号化アクセストークンを返します。すべての
/mcpリクエストは、Splitwise を呼び出す前に、トークン、有効期限、スコープコンテキスト、リソースを復号して検証します。
動的クライアント登録、コネクタコード、30 日間のアクセストークンは、SESSION_SECRET から導出されるステートレスな AES-256-GCM エンベロープです。すべてのインスタンスが同じシークレットを保持している限り、スリープ、再起動、再デプロイ、複数レプリカをまたいで存続します。SESSION_SECRET をローテーションすると、既存のすべての登録と接続が意図的に無効化されます。このサンプルはリフレッシュトークンを発行しないため、30 日後には再リンクが必要です。
4. テストと ChatGPT への接続
実行:
npm run build
npm test
npx @modelcontextprotocol/inspector@latestInspector で Streamable HTTP を選択し、https://YOUR-CONNECTOR-HOST/mcp を使用します。
ChatGPT で、Settings → Security and login の下で Developer mode を有効にします。Plugins ページで、接続を追加し、公開エンドポイントオプションを選択して、https://YOUR-CONNECTOR-HOST/mcp を入力します。検出された 5 つのツールを確認し、読み取りツールを呼び出してアカウントリンクを開始します。
推奨チェック:
「Splitwise のグループを一覧表示して。」
「Splitwise の友達との残高を表示して。」
「グループ 123 の最新の 5 件の支出を一覧表示して。」
「支出 456 の詳細を取得して。」
「グループ 123 に $24 USD の夕食費を作成し、均等に分割して。」
本番運用に関する注意
実行可能なサーバーは OAuth セッション状態を保存しません。より大規模な複数ユーザーデプロイの前に:
SESSION_SECRETを安定した、秘密の、レプリカ間で同一のものに保ちます。より強力なキー管理のため、暗号化キーを管理された KMS から導出または取得します。トークンやシークレットをログに記録しないでください。ステートレスな認可コードは、ストレージなしでは消費済みとしてマークできません。PKCE、正確なクライアント/リダイレクト/リソースのバインド、認証付き暗号化、5 分間の有効期限により、リプレイの露出を制限します。厳密な単回使用の強制が必要な場合は、コード ID をキーとする短命の共有リプレイキャッシュを追加します。
動的登録のリダイレクト URI を、アプリ管理ページに表示される正確な ChatGPT コールバック URL(明示的に設定された開発用コールバックに加えて)に制限します。
レート制限、構造化されたセキュリティログ、シークレットのローテーション、プライバシーポリシー、トークン失効/アカウントのリンク解除を追加します。
resourceのバインド、PKCE 検証、短いコードの有効期限、正確なリダイレクト URI の一致を維持します。HTTPS の背後で実行します。この開発サーバーをインターネットに直接公開しないでください。
create_expense ツールは非冪等な書き込みとしてマークされています。その指示は、モデルに、呼び出し前に正確な金額、通貨、グループ、支払者、シェアを要約するように指示します。Splitwise は HTTP 200 とアプリケーションレベルの errors オブジェクトを返す可能性があるため、コネクタは成功を報告する前にそのオブジェクトをチェックします。
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