关于 Otis
Otis 是面向顾问和小型机构的 MCP 服务,可通过 AI 助手管理客户账单。它记录业务与客户资料、工时、费用、发票和付款,并按规则编号发票且不修改已开具发票。
主要功能
- 01业务与客户资料管理
- 02记录计费工时、服务、费用和 AI 使用量
- 03管理发票草稿与已开具发票
- 04跟踪全额及部分付款
- 05导出业务记录
- 06按规则计算总额并编号发票
适用场景
- 01记录顾问工作与费用
- 02准备发票并提交审批
- 03跟踪客户付款及其参考信息
- 04导出业务账单记录
MCP 相关
Otis 通过托管远程端点或自托管部署向 MCP 客户端提供账单工具。用户通过 OAuth 邮件验证码登录。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.otisbase.com/mcpclaude mcp add --transport http com-otisbase-otis https://mcp.otisbase.com/mcp{"mcpServers":{"com-otisbase-otis":{"type":"http","url":"https://mcp.otisbase.com/mcp"}}}在 Cursor 中打开{"servers":{"com-otisbase-otis":{"type":"http","url":"https://mcp.otisbase.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"com-otisbase-otis":{"type":"http","url":"https://mcp.otisbase.com/mcp"}}}{"mcpServers":{"com-otisbase-otis":{"serverUrl":"https://mcp.otisbase.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
Otis MCP
Otisbase 的源代码,这是一个免费的 MCP 服务,用于客户计费,专为顾问和小型代理机构打造。
Otis 没有应用或仪表板。你的 AI 助手就是操作界面:它会在 Otis 中记录客户、工作、费用和付款,并开具你批准的发票。Otis 存储记录并执行规则。它会为发票编号、计算总额、要求你确认准确的总额后才开具发票,并且绝不会重写已开具的发票。Otis 不运行任何 AI 模型;所有结果都来自此代码库中的记录和规则。
此代码库包含运行在 mcp.otisbase.com 上的完整服务:MCP 服务、电子邮件登录和存储层。它运行在 Cloudflare Workers 上。otisbase.com 网站由另一个项目维护。
使用托管服务
在你的助手中将此 URL 添加为远程 MCP 服务:
https://mcp.otisbase.com/mcp
登录使用带电子邮件验证码的 OAuth,因此无需 API 密钥。安装指南介绍了如何在 Claude、ChatGPT、Claude Code、Codex、Cursor、Muse、Grok Bot 和 Mistral Vibe 中安装。托管服务免费。记录存储在欧盟。
- MCP 文档:端点、规则和所有工具。
- Otis Plugins:适用于 Claude 和 Codex 的插件,包含一个菜单和九种工作流技能。
- 技能:每项技能的功能说明。
Otis 记录的内容
| 区域 | 记录 |
|---|---|
| 企业 | 企业详情、税务设置和发票编号,由企业所有者使用 |
| 客户 | 客户及其账单详情 |
| 工作 | 可计费时间、服务、报告的 AI 使用情况和费用 |
| 发票 | 草稿、内容不可变的已开具发票、折扣和税费 |
| 付款 | 全额和部分付款,以及用于防止重复的参考信息 |
| 导出 | 企业记录的完整导出 |
工作原理
| 部分 | 实现方式 |
|---|---|
| 运行时 | 一个 Cloudflare Worker(src/index.ts) |
| MCP 服务 | /mcp 上基于 Streamable HTTP 的 @modelcontextprotocol/server(src/mcp.ts) |
| 登录 | 使用电子邮件验证码的 @cloudflare/workers-oauth-provider(src/auth.ts) |
| 企业记录 | 每家企业对应一个 Durable Object,其中使用 SQLite(src/business-store.ts) |
| 账户和登录 | Durable Objects(src/account-store.ts、src/sign-in-store.ts) |
| OAuth 状态 | Workers KV |
| 电子邮件 | Cloudflare Email Sending,用于发送登录验证码和安全通知 |
| 数据位置 | 欧盟管辖区内的 Durable Objects(src/regions.ts) |
| 登录页面 | 使用自有精简样式表的服务端渲染 HTML(src/html.ts、src/shell.ts) |
每项企业操作都会检查调用者当前的成员资格。金额以最小货币单位的整数表示。写入操作会接收请求 ID,因此重试调用不会重复记录同一事项。
代码库结构
| 路径 | 内容 |
|---|---|
src/ | Worker、MCP 工具、登录、存储、账单规则和公开文档 |
test/ | 在 Cloudflare 本地运行时中执行的集成测试 |
scripts/ | 实时端点检查、登录检查和插件生成器 |
spec/ | 产品规格:范围、账单规则、服务和设计 |
修改行为前请先阅读规格。请从 spec/01-README.md 开始。规格优先于决策日志。
开发
你需要 Node 24 或更高版本。
npm ci
npm run check
npm test
测试在 Cloudflare 本地运行时中执行。测试会模拟电子邮件投递。
要在本地运行 Worker:
npm run dev -- --local --ip 127.0.0.1 --port 8788
然后打开 http://127.0.0.1:8788/health。本地运行时仅使用本地存储。
npm run plugins:build 会根据 src/workflows.ts 生成 Claude 和 Codex 插件,并将其放入 plugins/。这些插件发布在 otisbase/otis-plugins。
自托管
你可以在 Cloudflare 账户上运行自己的副本。部署前请编辑 wrangler.jsonc:
- 将
account_id设置为你的 Cloudflare 账户。 - 为 OAuth 状态创建一个 KV 命名空间,并将其 ID 填入
kv_namespaces。如需使用欧盟存储,请在欧盟区域创建。 - 将两个
routes替换为你自己的域名。 - 设置
vars:ORIGIN:MCP 主机的 URL。SITE_ORIGIN:你的网站 URL。在 MCP 主机上打开的网站页面会重定向到该地址,登录页面也会链接到该网站的服务条款和隐私政策。EMAIL_FROM:登录验证码的发件人。该域名必须配置为可使用 Cloudflare Email Sending。FEEDBACK_TO:接收通过feedback_send工具发送的反馈的地址。DO_JURISDICTION:设为eu可将 Durable Objects 保留在欧盟。删除此项则由 Cloudflare 选择。SIGN_IN_ENABLED:设为true以允许登录。
- 将
ratelimits.namespace_id设置为账户中唯一的 ID。
然后部署:
npx wrangler login
npm run deploy
登录页面和邮件中会显示 Otisbase。向其他人提供你的副本前,请在 src/html.ts、src/auth.ts 和 src/notify.ts 中修改相关内容,并发布你自己的服务条款和隐私政策。
参与贡献
欢迎提交错误报告、修复和想法。请参阅 CONTRIBUTING.md。如需报告安全问题,请参阅 SECURITY.md。你也可以通过助手发送反馈:让它向 Otis 发送反馈。
许可证
代码依据 MIT License 发布。
以下内容不受 MIT License 涵盖:
- Otisbase 和 Otis 名称及徽标。
src/fonts/中的 Geist 字体,依据 SIL Open Font License 授权。
src/html.ts 中的复制图标和勾选图标来自 Phosphor Icons(MIT)。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。