xupersplit について
xupersplitは、グループの共通費をアカウントなしで分担するサービスです。MCPサーバーからエージェントが支出を管理して精算額を確認でき、柔軟な分割方法や支払いリンクにも対応します。
主な機能
- 01アカウントなしで割り勘を作成
- 02均等・比率・金額指定で分割
- 03最小限の精算振込を計算
- 04satsを含む複数通貨に対応
- 05支払いリンクとQRコードを生成
活用シーン
- 01グループ旅行の費用を記録
- 02共同生活の請求を精算
- 03エージェントに割り勘作成と残額確認を依頼
MCP 対応
MCPサーバーは、割り勘の作成・更新、支出や支払いの記録、誰が誰にいくら払うかの確認に使うツールを提供します。Streamable HTTPで接続でき、アカウントやAPIキーは不要です。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://split.xuper.fun/api/mcpclaude mcp add --transport http kanylbullen-xupersplit https://split.xuper.fun/api/mcp{"mcpServers":{"kanylbullen-xupersplit":{"type":"http","url":"https://split.xuper.fun/api/mcp"}}}Cursor で開く{"servers":{"kanylbullen-xupersplit":{"type":"http","url":"https://split.xuper.fun/api/mcp"}}}VS Code で開く{"mcpServers":{"kanylbullen-xupersplit":{"type":"http","url":"https://split.xuper.fun/api/mcp"}}}{"mcpServers":{"kanylbullen-xupersplit":{"serverUrl":"https://split.xuper.fun/api/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
11| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| title | string | はい | 分担の用途。例:"Ski trip"。 |
| currency | enum | いいえ | 通貨コード。デフォルトは SEK です。SEK | EUR | USD | NOK | DKK | ISK | GBP | CHF | PLN | THB | SATS |
| participants | array | はい | 分担する全員の名前。2 人以上必要です。 |
詳細
xupersplit
面倒な手間なく、共有費用を分割できます。 分割を作成してリンクを共有し、 各自が支払った金額を追加してもらいましょう。残高と誰が誰にいくら支払うかは 自動で計算され、残高画面からワンタップで支払えます。
split.xuper.fun · English · Svenska
Next.js 16 · Supabase · Tailwind v4 · wagmi/viem
分割を作成して誰が誰に支払うかを確認 · 金額が入力済みのSwish QRコード · 持分による分割
AI エージェントで利用できます。 xupersplit はMCP サーバーでもあります。 アシスタントに1つのURLを指定するだけで、分割の作成、各自の支払額の追加、 誰が誰に支払うかの確認ができます。アカウントもAPIキーもインストールも不要です。
claude mcp add --transport http xupersplit https://split.xuper.fun/api/mcp
概要
すっきりとした、アカウント不要の費用分割ツールです。秘密のリンクが鍵です。 リンクを持っている人なら誰でも費用を追加して精算できます。ログインは不要です。 任意のメールサインインを利用すると、複数のデバイスで分割情報を引き継げます。 1つのプロンプトから始まったプロジェクトが、そこから成長しました。
特長
- アカウントは不要です。 推測困難な分割リンク(122ビットのエントロピー)そのものが アクセス権となります。サインインは任意です。
- 柔軟な分割 — 均等割り、重み付けした持分、または金額の指定に対応し、 最大剰余方式でセント単位の丸めを行います。
- スマートな精算 — 「AがBに支払う」最小限の送金回数を計算します。 一部払い(「全額または一部を支払う」)に対応し、精算後は取り消し線が付きます。
- 早すぎる精算を防止 — 分割を開いた人や、完了をマークした人を確認できます。 支払いダイアログでは、まだ意思表示していない人がいる場合に警告します。
- 安全な分割 (サインイン時のみ任意) — 参加者をアカウントに紐付けます。 自分の支払い情報だけを編集し、自分の費用だけを入力できます。作成者は、 ログインが必要な人、閲覧できる人、参加方法を指定できます。
- 複数通貨対応 — 保存時の為替レートを固定して、任意の通貨で費用を入力できます (Kittysplit方式)。分割ごとにメイン通貨を設定できます。satsにも対応し、 ビットコインだけで分割を完結させることもできます。
- 8種類の支払い方法に対応し、そのうち複数はワンタップで実際に支払い情報を入力できます — 詳細はこちら。
- MCP サーバー — AI エージェントはModel Context Protocolを通じて 分割を一通り操作できます。アカウントもAPIキーも不要です。
- 6言語対応 — English、Svenska、Norsk、Dansk、Suomi、Íslenska (自動検出、切り替え可能)。
- プライバシーを重視した設計 — 全員の精算後に支払い情報を消去できます。 6か月間利用のない分割は削除され、IPハッシュは1日以内に削除されます。 CSV/JSONエクスポート、包括的なGDPRポリシーにも対応しています。
- ダーク/ライト/システムテーマ、Cookieを使わない分析、目立たないCookie通知。
支払い
xupersplit は各受取人の支払いハンドルを保存し、支払いネットワークがオープンで、契約不要のインターフェースを提供している場合は、残高の行からワンタップで実際に支払えるようにします。正確な金額があらかじめ入力された状態で支払いを開始できます。xupersplit が金銭を預かることは一切ありません。支払う人が自分のアプリで承認するリンク、請求書、トランザクションを作成するだけです。
| 方法 | 支払い方法 | 仕組み |
|---|---|---|
| Swish 🇸🇪 | QR コード+アプリへのディープリンク。金額は入力済み | 公開されている app.swish.nu リンク+QR エンドポイント。加盟店契約は不要 |
| Lightning ⚡ | QR コード+lightning: リンク。正確な金額を埋め込み | LNURL-pay(LUD-16):ライトニングアドレスから BOLT11 請求書を作成 |
| Ethereum / USDC Ξ | 金額入力済みの USDC 送金をワンタップで実行 | WalletConnect(Reown AppKit):接続し、チェーンを選択して承認 |
| Solana / USDC ◎ | 金額入力済みの USDC SPL 送金をワンタップで実行 | WalletConnect(Reown AppKit):Phantom/Solflare を使用。受取人の ATA は自動作成 |
| Ethereum / Solana アドレス | アドレスの QR コード+コピー。ENS 名前解決に対応 | 0x… / name.eth / base58。あらゆるウォレットで利用可能 |
| Revolut | クリック可能な revolut.me プロフィールリンク | 受取人のプロフィールを開いて支払い |
| Vipps · MobilePay · IBAN | 保存したハンドル+コピー ボタン | オープンな P2P API がないため、支払う人は自分のアプリで支払いを完了 |
違いが生じるのはなぜですか? Swish は真にオープンな、金額入力済みのディープリンクと QR エンドポイントを提供しています。Lightning の LNURL と、WalletConnect を介した EVM/Solana はオープンプロトコルです。一方、Vipps と MobilePay(現在の Vipps MobilePay)で金額入力済みの支払いフローを利用できるのは、加盟店向け API のみです。これは企業に送金するための事業者契約であり、個人間の支払いには使えません。そのため、xupersplit では正直に、コピー ボタン付きでハンドルを表示します。オープンな P2P ディープリンクが提供されれば、簡単に追加できます。PR をお待ちしています。🤞
暗号資産の送金は取り消せません。 暗号資産を使う方法では、追加の警告が表示されます。また、すべての方法で、受取人の詳細が最初の入力後に変更されたことがある場合は、変更日とともに警告が表示されます。リンクを知っている人なら誰でも詳細を編集できます。
MCP サーバー
xupersplit は Model Context Protocol に対応しているため、AI アシスタントが割り勘を作成し、全員の支払い内容を追加して、誰が誰にいくら支払う必要があるかを計算し、その後、共有用のリンクを渡せます。アプリの他の機能と同じくアカウントは不要で、サインアップも API キーも必要ありません。
claude mcp add --transport http xupersplit https://split.xuper.fun/api/mcp
または、任意の MCP クライアントから https://split.xuper.fun/api/mcp を指定してください(Streamable HTTP。stdio 専用のクライアントは npx mcp-remote を介して接続できます)。セルフホストしたインスタンスでも、独自の /api/mcp で同じエンドポイントを利用できます。
ウェブ版の Claude や ChatGPT のカスタムコネクターとしても利用できます。エンドポイントを貼り付けるだけで、認証は不要です。ChatGPT では、まず開発者モードを有効にする必要があります。有効にしないと、追加するオプション自体が表示されません。手順は /mcp をご覧ください。
11 個のツールでライフサイクル全体をカバーします。create_split、get_split、add_expense、record_payment、update_entry、delete_entry、add_participant、rename_participant、remove_participant、set_payment_methods、update_split です。参加者は名前で指定し、金額は通常の小数で扱うため、エージェントが UUID やセント単位の値を扱う必要はありません。
サーバーは、ウェブアプリと同じ RPC および money.ts ヘルパーの上に構築された薄いレイヤーです。また、匿名ロールのみを使用します。これにより、セキュアな割り勘(利用にはサインイン済みの auth.uid() が必要です)に MCP 経由でアクセスできないようになっています。詳しくは /mcp をご覧ください。
アーキテクチャ
- アプリにサービスロールキーはありません。 すべてのデータアクセスは、
security definerの Postgres RPC(split_data、save_entry、set_payment_methodsなど)を経由します。URL 内の秘密の分割キーがアクセス権限として機能します。すべてのテーブルで RLS はすべて拒否する設定になっており、直接の権限付与は取り消されています。クライアントが保持するのは公開可能なキーだけです。スキーマとすべての変更はsupabase/migrations/にあります。 - Next.js App Router とサーバーアクションを使用しています。クライアントは状態管理ライブラリを使わないプレーンな React です。CSS 変数によるテーマ設定を備えた Tailwind v4 を使用しています。
- キー不要の薄い API ルートが、オープンな決済ネットワークへのプロキシとして機能し、すべて同一オリジンに制限されています:
/api/swish-qr、/api/ln-invoice(LNURL-pay)、/api/ens(viem)、/api/fx(法定通貨+BTC、プロバイダーのフォールバックあり)。 - WalletConnect はプロジェクト ID がある場合にのみ有効になります。ID がない場合、EVM ダイアログは QR コードとコピーにスムーズにフォールバックします。
- プライバシーと不正利用対策 — 決済完了時の支払い情報消去(オプトアウト)、非アクティブな分割の 6 か月後の削除、IP ハッシュごとおよび全体の作成レート制限、分割キーの列挙試行を検知する日次ジョブを備えています。
技術スタック
Next.js 16 · React 19 · TypeScript · Tailwind CSS v4 · Supabase(Postgres、 Auth)· wagmi + viem + @solana/web3.js + Reown AppKit · Playwright · Vercel
ローカルで実行する
npm install
cp .env.example .env.local # add your own Supabase URL + anon key
npm run dev
.env.local:
NEXT_PUBLIC_SUPABASE_URL=https://<your-project>.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=<your publishable key>
# Optional — enables the WalletConnect USDC flow (free id from cloud.reown.com)
NEXT_PUBLIC_REOWN_PROJECT_ID=<your reown project id>
独自環境にデプロイする
Supabase + Vercel の無料プランでセルフホストできます。
- Supabase — プロジェクトを作成します(EU リージョンを選ぶとデータをヨーロッパに保持できます)。次に、
supabase link --project-ref <ref> && supabase db pushを実行してスキーマを適用します(supabase/migrations/内のすべてのマイグレーションが実行されます)。Project URL と publishable (anon) key を取得します。メールによる任意のサインインを使う場合は、SMTP と…/auth/confirmリダイレクトを設定します。 - Vercel — リポジトリをインポートし、
NEXT_PUBLIC_SUPABASE_URLとNEXT_PUBLIC_SUPABASE_ANON_KEYを追加します(どちらも公開して安全です。セキュリティは RLS と RPC に依存します)。WalletConnect を使う場合はNEXT_PUBLIC_REOWN_PROJECT_IDも追加します。デプロイします。 - カスタムドメイン(任意) — Vercel に追加し、DNS のみの CNAME を
cname.vercel-dns.comに向けます。メールによるサインインを使う場合は、ドメインの…/auth/confirmを Supabase のリダイレクト許可リストに追加します。
Docker で完全にセルフホストする
スタック全体を自分で管理したい場合は、selfhost/ を使うと、アプリと独自のバックエンド(Postgres、認証(GoTrue)、REST/RPC レイヤー(PostgREST)、ローカルメールボックス)を外部サービスなしで起動できます。アプリ自体がゲートウェイとして機能するため、ブラウザーは常に 1 つのオリジンとのみ通信します。
cd selfhost
cp .env.example .env # ⚠️ change the secrets — see the notes in the file
docker compose up -d --build
- アプリ:**http://localhost:3000**。**メールアドレス+パスワード**でサインインします(SMTP 不要ですぐに使えます)。または、Mailpit(**http://localhost:8025**)に届くマジックコードを使います。
- HTTPS はフラグを 1 つ設定するだけで有効になります。ドメインをホストに向け、
.envでDOMAINとACME_EMAILを設定し、SITE_URL=https://…を指定してから、docker compose --profile tls up -d --buildを実行します。Caddy が Let's Encrypt 証明書を自動的に取得して更新します。NAT の背後にある場合やワイルドカード証明書が必要な場合は、CF_API_TOKEN(権限を制限した Cloudflare トークン)を設定すると、Caddy は代わりに DNS-01 チャレンジを使用します。ポート 80 を公開する必要はありません。 supabase/migrations/内のマイグレーションは初回起動時に自動的に適用されます。.env.exampleには、すぐに実行できるよう 公開デモ用 JWT キーが含まれています。インターネットに公開する場合は、JWT_SECRETとパスワードを変更し、新しいシークレットを使ってANON_KEY/SERVICE_ROLE_KEYを再生成してください(任意の JWT ツールを使用できます。新しいシークレットで{"role":"anon",...}/{"role":"service_role",...}に署名します)。- ホスト側のポートを変更するには、
.envでAPP_PORT/MAILPIT_PORTを設定します。REOWN_PROJECT_IDを設定すると、WalletConnect の決済ボタンが有効になります。
完全なガイド(シークレットの再生成、ゲートウェイアーキテクチャ、Cloudflare DNS-01、設定リファレンス、トラブルシューティング)については、selfhost/README.md を参照してください。
テストと CI
Playwright のスモークテスト(npm run test:e2e)は、ローカルの本番ビルドに対してすべての PR で実行され、main へのマージを制御します。純粋な分割・均等化・精算のロジックは src/lib/money.ts にあります。
貢献
Issue や PR は歓迎します。サイトを使ったばかりの方からのバグ報告も歓迎です。まずは CONTRIBUTING.md をご覧ください。
分割リンクは決して投稿しないでください。 分割の URL はパスワードです。これを見た人は誰でも、その分割を閲覧・編集できます。また、Issue は公開され、インデックス化されます。問題の内容を説明するか、架空の名前を使って使い捨ての分割を作成してください。
- 🐛 バグを報告する — GitHub アカウントの作成が面倒な場合は、[email protected] にメールを送るだけでもかまいません
- 💡 機能を提案する
- 🔒 脆弱性を非公開で報告する — 公開 Issue として報告しないでください。SECURITY.md をご覧ください
- 🌱 good first issue — 小規模で独立したタスク
現在、特に求めているのは、Vipps または MobilePay 向けの実際に機能する P2P ディープリンクです。これにより、Swish や Lightning と同様に金額を事前入力できます。また、追加の決済手段や、6 つのロケールにおける翻訳の修正も歓迎します。コードベースは小規模で、完全に型付けされています。
ライセンス
MIT — LICENSE をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。