关于 xupersplit
xupersplit 是面向分摊共同开支群组的免账户工具。其 MCP 服务可让 Agent 管理费用并查询欠款,网页应用还支持灵活分账和付款链接。
主要功能
- 01免账户创建分账
- 02按均分、份额或金额分摊
- 03计算最少结算转账
- 04支持多种货币及 sats
- 05生成付款链接和二维码
适用场景
- 01记录团体旅行开支
- 02结算共同居住账单
- 03让 Agent 创建分账并查询欠款
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 | 是 | 所有分摊参与者的姓名,至少两人。 |
详细介绍
xupersplit
轻松拆分共同开支。 创建一个分账,分享链接,然后让每个人添加自己支付的费用——系统会自动计算余额和彼此欠款,还能直接在余额视图中一键付款。
split.xuper.fun · English · Svenska
Next.js 16 · Supabase · Tailwind v4 · wagmi/viem
创建分账并查看彼此欠款 · 已填入金额的 Swish 二维码 · 按份额拆分
支持 AI Agent。 xupersplit 也是一个 MCP 服务—— 只需将一个 URL 提供给你的助手,它就能创建分账、添加每个人支付的费用,并告诉你彼此欠款。无需账户、API 密钥,也无需安装任何东西。
claude mcp add --transport http xupersplit https://split.xuper.fun/api/mcp
它是什么
一款简洁、无需账户的费用分摊工具。私密链接就是关键——任何拥有链接的人都可以添加费用并结清款项,无需登录。可选的电子邮件登录功能可以让你的分账在不同设备间同步。这是一个从一个提示词项目起步、逐步发展而来的产品。
功能
- 无需账户。 无法猜测的分账链接(122 位熵)本身就是访问凭证。登录是可选的。
- 灵活拆分——平均分摊、按权重分摊或指定金额,并通过最大余数法进行分位舍入。
- 智能结算——以最少的“A 付给 B”转账结清,支持部分付款(“付清全部或部分”),结清后会显示删除线。
- 别太早结算——查看谁打开过分账,以及谁已标记完成;如果有人尚未确认,付款对话框会发出提醒。
- 安全分账(可选,登录后启用)——将参与者绑定到账户:你只能编辑自己的付款信息、录入自己的费用。创建者可以选择哪些人必须登录、哪些人可以查看,以及参与者如何加入。
- 多币种——可使用任意币种录入费用,汇率会在保存时锁定(类似 Kittysplit);还可以为每个分账设置主币种。支持聪(sats)——你也可以用比特币结算整个分账。
- 八种付款方式,其中好几种支持真正的一键预填——见下文。
- MCP 服务——AI Agent 可以通过 Model Context Protocol 完成整个分账流程,无需账户和 API 密钥。
- 六种语言——English、Svenska、Norsk、Dansk、Suomi、Íslenska(自动检测,可切换)。
- 隐私保护设计——所有人结清后可清除付款信息;不活跃的分账会在 6 个月后清除;IP 哈希会在一天内删除;支持 CSV/JSON 导出,并提供完整的 GDPR 政策。
- 深色 / 浅色 / 跟随系统主题、无 Cookie 分析,以及低调的 Cookie 提示。
付款
xupersplit 会存储每位收款人的付款账号,并在支付网络提供开放、无需协议的接口时,将余额行变成真正的一键付款——预填确切金额。资金不会经过 xupersplit;它只会生成付款人可以在自己的应用中审批的链接、发票或交易。
| 方式 | 使用体验 | 原理 |
|---|---|---|
| Swish 🇸🇪 | 二维码 + 应用深度链接,预填金额 | 公开的 app.swish.nu 链接 + 二维码端点——无需商户合同 |
| Lightning ⚡ | 二维码 + lightning: 链接,内含确切金额 | LNURL-pay(LUD-16):Lightning 地址 → BOLT11 发票 |
| Ethereum / USDC Ξ | 一键预填 USDC 转账 | WalletConnect(Reown AppKit)——连接、选择链、审批 |
| Solana / USDC ◎ | 一键预填 USDC SPL 转账 | WalletConnect(Reown AppKit)——Phantom/Solflare,自动创建收款人 ATA |
| Ethereum / Solana 地址 | 地址二维码 + 复制,解析 ENS | 0x… / name.eth / base58——适用于任何钱包 |
| Revolut | 可点击的 revolut.me 个人资料链接 | 打开收款人的个人资料进行付款 |
| Vipps · MobilePay · IBAN | 已保存的付款账号 + 复制按钮 | 没有开放的 P2P API——付款人需在自己的应用中完成付款 |
为什么会有区别? Swish 提供真正开放的预填深度链接和二维码端点;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。参与者通过姓名指代,金额使用普通小数,因此 Agent 无需处理 uuid 或分。
服务端是同一组 RPC 和 Web 应用所用 money.ts 辅助函数的轻量封装,并且始终只持有匿名角色——因此 secure 分摊(需要已登录的 auth.uid())无法通过 MCP 访问。完整说明见 /mcp。
架构
- 应用中不包含服务角色密钥。 所有数据访问都通过
security definerPostgres 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 时启用——未配置时,EVM 对话框会顺畅地回退到二维码 + 复制。
- 隐私与滥用控制——结算时清除支付信息(可选择退出)、清理 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 — 创建一个项目(选择欧盟区域可将数据保留在欧洲),然后运行
supabase link --project-ref <ref> && supabase db push应用架构(会运行supabase/migrations/中的每个迁移)。 获取 项目 URL 和 可发布(anon)密钥。如需通过电子邮件登录,请配置 SMTP 和…/auth/confirm重定向。 - Vercel — 导入代码仓库,添加
NEXT_PUBLIC_SUPABASE_URL和NEXT_PUBLIC_SUPABASE_ANON_KEY(二者都可安全公开;安全性依赖 RLS- RPC)。如果需要 WalletConnect,也添加
NEXT_PUBLIC_REOWN_PROJECT_ID。 然后部署。
- RPC)。如果需要 WalletConnect,也添加
- 自定义域名(可选) — 在 Vercel 中添加域名,将 仅 DNS 的 CNAME
指向
cname.vercel-dns.com;如果使用电子邮件登录,还要将该域名的…/auth/confirm添加到 Supabase 重定向允许列表中。
使用 Docker 完全自托管
想要掌控整个技术栈?selfhost/ 会启动应用 及其自有后端——Postgres、身份验证(GoTrue)、REST/RPC 层(PostgREST)和本地邮箱——无需外部服务。应用本身充当网关,因此浏览器始终只与一个源通信。
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:将域名指向主机,在
.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 支付按钮。
完整指南请参阅 selfhost/README.md,其中包含密钥重新生成、网关架构、Cloudflare DNS-01、配置参考和故障排查。
测试与 CI
Playwright 冒烟测试(npm run test:e2e)会在每个 PR 中针对本地生产构建运行,并作为合并到 main 的门槛;纯粹的拆分/均摊/结算逻辑位于 src/lib/money.ts。
贡献
欢迎提交 Issue 和 PR,也欢迎刚使用过网站的用户报告 Bug。请从 CONTRIBUTING.md 开始。
切勿发布拆分链接。 拆分的 URL 就是它的密码——任何看到它的人都能读取和编辑该拆分,而 Issue 是公开的,且会被索引。请描述问题,或者创建一个使用虚假姓名的一次性拆分。
- 🐛 报告 Bug — 如果注册 GitHub 账号太麻烦,也可以直接发送邮件至 [email protected]
- 💡 提出功能建议
- 🔒 私下报告安全漏洞 — 切勿作为公开 Issue 提交;请参阅 SECURITY.md
- 🌱 适合新手的 Issue — 小型、独立的任务
目前最需要的是:为 Vipps 或 MobilePay 添加真正开放的 P2P 深层链接,让金额能像 Swish 和 Lightning 一样预先填好;此外,还需要增加更多支付方式,并修复六种语言中的翻译问题。代码库规模小,且完全采用类型标注。
许可证
MIT — 请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。