关于 Invoice by Ouroboros Apps
Invoice 是面向自由职业者的发票 MCP 服务,保存已批准的项目、费率、到期日和逾期条款,供 AI 助手读取。对已封存发票的变更须经明确批准。
主要功能
- 01读取已批准的发票记录
- 02管理项目、数量与费率
- 03设置到期日和逾期条款
- 04提出并批准发票变更
适用场景
- 01核对发票中的已批准金额
- 02检查付款到期日和逾期条款
- 03经批准后调整已封存发票
MCP 相关
向 MCP 客户端提供发票读取与管理工具,支持 Streamable HTTP 和 OAuth,也可通过 stdio 运行。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://invoice-continuity2.vercel.app/mcpclaude mcp add --transport http lahutchins91-invoice https://invoice-continuity2.vercel.app/mcp{"mcpServers":{"lahutchins91-invoice":{"type":"http","url":"https://invoice-continuity2.vercel.app/mcp"}}}在 Cursor 中打开{"servers":{"lahutchins91-invoice":{"type":"http","url":"https://invoice-continuity2.vercel.app/mcp"}}}在 VS Code 中打开{"mcpServers":{"lahutchins91-invoice":{"type":"http","url":"https://invoice-continuity2.vercel.app/mcp"}}}{"mcpServers":{"lahutchins91-invoice":{"serverUrl":"https://invoice-continuity2.vercel.app/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
13| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| offset | integer | 否 |
详细介绍
Invoice
Invoice 会保存自由职业者已批准的发票内容——明细项、数量、已批准的费率、到期日和逾期条款——然后让助手在回答前读取该记录。除非明确批准变更,否则助手不能添加明细项、更改费率、编造折扣或更改到期日。
它适用于 ChatGPT、Claude、Gemini、Grok 和 Cursor,以及任何支持 Streamable HTTP 和 OAuth 的其他 MCP 客户端。它并非仅适用于 ChatGPT 的插件。
助手打开 OAuth 时,请使用你的 Invoice 账号登录。不要将 API 密钥或密码粘贴到标头中。Invoice 支持动态客户端注册:将客户端 ID 和密钥留空。/.well-known/oauth-protected-resource/mcp 中的受保护资源元数据会将客户端指向 OAuth 颁发者,由其注册客户端。
使用 Invoice 工具需要 Pro 方案或有效的试用期。新订阅包含 14 天试用期。本页面未列出价格。结账页面会显示计费周期和付款条款。发票中存储的金额是自由职业者已批准的数字,以发票币种的最小单位整数表示。它们不是产品价格。
若要自托管,请运行服务器并使用你配置的基础 URL。默认 MCP 地址为 http://127.0.0.1:3000/mcp。
托管服务器
- MCP 服务 URL:
https://invoice-continuity2.vercel.app/mcp(Streamable HTTP,OAuth 登录) - 文档:https://ouroborosapps.com/docs/invoice
- 状态:早期访问。将 URL 粘贴到 Claude、Cursor、Grok 或 ChatGPT 开发者模式中。
- 注册表名称:
io.github.LAHutchins91/invoice
助手可以做什么
批准连接后,服务器会提供以下工具:
- list_invoices
- begin_invoice
- read_invoice
- place_line
- describe_line
- quote_line_rate
- set_line_quantity
- set_invoice_due
- write_late_terms
- offer_discount
- seal_invoice
- suggest_invoice_change
- accept_invoice_change
read_invoice 是助手回答前应调用的读取工具。草稿金额不代表已批准的承诺。建议的发票变更不会更改记录。发票封存后,place_line 会拒绝新增明细项,quote_line_rate 会拒绝更改费率,offer_discount 会拒绝提供折扣,set_invoice_due 会拒绝更改到期日。这些变更需要先通过 suggest_invoice_change 提出,再通过 accept_invoice_change 接受,并且只有在你明确批准变更后才会生效。
只有在你和宿主均允许时,助手才会调用这些工具。
连接
Cursor,在 ~/.cursor/mcp.json 或项目的 .cursor/mcp.json 中:
{
"mcpServers": {
"invoice": {
"url": "http://127.0.0.1:3000/mcp"
}
}
}
不要添加 headers 块。Cursor 会注册客户端并打开登录页面。
Claude Code:
claude mcp add --transport http invoice http://127.0.0.1:3000/mcp
不要传递 Authorization 标头。其他客户端使用相同地址,选择 OAuth,并将客户端 ID 和密钥留空。ChatGPT、Claude、Gemini、Grok 和 Cursor 的连接步骤请见 /connect 上的连接页面。
此服务器的注册表元数据位于 server.json(io.github.LAHutchins91/invoice)中。其中的远程 URL 为 https://invoice-continuity2.vercel.app/mcp。
运行
npm install
npm test
npm run typecheck
npm run build
npm start
当标准输入是终端时,Invoice 会在端口 3000 上提供 Streamable HTTP。当标准输入不是终端时,它会通过标准输入/输出进行 MCP 通信,同时仍会开放 HTTP 端口。在标准输入/输出模式下,日志会写入标准错误,以免与协议内容混在一起。
记录会持久存储在 JSON 文件中。默认路径为 ~/.invoice/invoice.json。设置 INVOICE_DATA_PATH 可更改存储位置。该文件由一个服务器进程独占。请勿将其指向其他产品的数据文件。
OAuth 采用与 Supabase 授权服务器相同的方式,并支持动态客户端注册。在服务器进程中设置以下变量,而不是在 MCP 标头中设置:
APP_BASE_URL(默认为http://localhost:3000)SUPABASE_URLSUPABASE_ANON_KEYSTRIPE_SECRET_KEYSTRIPE_WEBHOOK_SECRETSTRIPE_PRICE_MONTHLY和STRIPE_PRICE_YEARLY(Stripe 目录 ID,而非价格)OPENAI_APPS_CHALLENGE(可选;设置后,/.well-known/openai-apps-challenge会以纯文本形式返回该令牌)
除发现以外的工具调用都需要使用已登录账户,且其订阅状态必须为 active 或 trialing。
了解 Ouroboros 的更多信息:https://ouroborosapps.com
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。