mcpField
S
Saybooks

Saybooks

远程服务
saybooks.io金融数据04 天前更新

关于 Saybooks

Saybooks 是面向家庭和企业的开源 ERP,让 Agent 与用户通过同一套命令、规则和审计记录操作。其 MCP 工具覆盖对账单、账单、贷款、发票和库存等记账领域,并设有权限声明和仅限人工审批的关卡。

主要功能

  1. 01涵盖记账与业务的十四个模块
  2. 02界面与 Agent 共用命令和规则
  3. 03写入记录操作者及原因
  4. 04基于角色的权限与人工专属操作
  5. 05核对对账单并保留行来源

适用场景

  1. 01跟踪家庭账户、账单和贷款
  2. 02将银行对账单与记录核对
  3. 03管理发票、订单和库存
  4. 04准备期间或纳税年度记录

MCP 相关

Saybooks 通过 Streamable HTTP 上的 MCP 或本地 stdio 服务提供按模块划分的工具。客户端可连接工作区,可用工具由配置的模块决定。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://saybooks.io/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

Saybooks

可以与你对话的书籍。始终保持书籍本色。

Saybooks 是一个开源 ERP,Agent 和界面属于同一个系统:一套命令注册表、一套规则手册、一条审计记录。让 Claude 导入卡账单、开具发票或发货,也可以直接点击按钮:执行的是同一条命令,遵循同一套规则,并记录相同的操作人和原因。

适用于家庭:saybooks.io/personal。把银行和信用卡账单交给 Agent,它就会管理账户、信用卡、抵押贷款和汽车贷款、账单与收据,并生成年度税务汇总。无需银行数据流,也无需银行密码:只有当账单中的行项目加总后与印刷的余额一致时,才会录入账单。支持任何银行、任何货币。查看一个虚构家庭,无需注册;连接 https://saybooks.io/mcp/household,或观看五集系列视频。

在线体验:saybooks.io。无需注册即可试用演示版,也可以使用 Google 登录并选择账簿包含的模块。将 https://saybooks.io/mcp 添加为连接器,即可连接 Claude(使用 OAuth,无需粘贴密钥);同一套账簿也会以普通页面的形式显示在浏览器中。

观看:Saybooks 流程演示,五段简短视频,均基于演示账簿实时录制:采购订单与收货、库存价值、月末结账、银行对账和销售税。

目前共有十四个模块,每个模块都以规范为先,并配有可执行的一致性测试场景:

模块适用对象保留内容
solo(开票)自由职业者客户、带链接和 PDF 的发票、收款、未结款项;支持任意币种和你的税务方案
o2c(订单到收款)小型企业报价、订单、发货、发票、应收款,以及 Agent 无法绕过的信用审核关卡
crm小型企业营销活动、客户、带来源信息的联系人、缺口、销售管道;由 Agent 撰写、由人发送的外联草稿;带来源信息和日历的活动
prospect任何拥有购买名单的人CRM 前的暂存区:Agent 整理并评估名单行,只有人才能将其转入 CRM
jobhunt求职者职位发布、申请、面试、招聘人员、防重复机制,以及一个下一步行动
p2p(采购)采购库存的小型企业按供应商价格创建的采购订单、与订单对应的收货记录,以及在人员批准付款前通过三方匹配审核的供应商账单
inventory(库存)持有库存的小型企业记录每次库存变动、移动平均成本、每次发货的成本和利润率、带原因的盘点,以及与账簿相符的库存价值
purchases(个人财务)任何人账户和净资产、账户间转账、信用卡应付金额、利息和退款、预期账单、自动付款和到期款项、已报销的工作支出、税务标签和年度信息;由 Agent 读取的银行和信用卡对账单及收据:带来源信息的行、审核、订阅、支出
bankrec(银行对账)会计师会问“银行账能对上吗?”的任何人每份对账单与账簿逐项核对、与已记录付款匹配的存款、明确标记的在途项目,以及由人员签署的确认
loans(个人财务、贷款)有房贷或车贷的任何人贷款方提供的数字、每笔付款拆分为本金、利息和托管款、欠款金额和还清时间、每年的利息,以及与贷款方数据的核对
salestax(销售税)收取销售税并申报的任何人根据开票和贷项信息生成的月度或季度申报表、由人员记录的申报、付款,以及相符的负债
gl(月末结账)任何需要结账的人结账清单、借贷平衡且可冲销的调整分录、停止变动的已结期间,以及在下一个开放期间进行的更正
bridge(账簿)有会计师的任何人移交至 QuickBooks、Xero 或普通 CSV:一次性映射对方的科目表、导出一个期间,并记录导出了哪些内容以及截至何时
core每个空间客户、商品、公司资料、搜索、审计、设置

为什么要构建它

“对话式 ERP”通常是指在一个不了解 Agent 存在的系统上加装聊天层。Saybooks 反其道而行:每项业务操作都只声明一次,其他所有内容都从该声明派生而来:

派生内容目的
MCP 工具(名称、原则、JSON Schema、注释)Agent 看到的内容与 UI 能执行的操作完全一致
UI 表单(字段、控件、验证)人看到的内容与 Agent 能执行的操作完全一致
守卫评估灰显按钮的工具提示、抛出的拒绝信息和 Agent 的回答是同一句话,并由测试断言
审计记录来自任一界面的每次写入都会进入同一日志,并记录操作者和原因;拒绝操作也包括在内

注册表之外的任何内容都不能调用处理程序。点击和工具调用都会经过相同的命令、相同的守卫和相同的事务。两种界面不会出现偏差,因为它们都不是手动编写的;如果有人尝试这样做,test/contract.test.js 就会导致构建失败。

Agent 优先,而非解析器优先:涉及文件时(例如对账单、收据),由 Agent 读取文件并交付读取结果;模块会检查控制总额、保留每一行的来源信息,并拒绝无法核对一致的内容。无需维护银行解析器。

内容

src/registry.js            declare once; derive tools, forms, guards, audit; enforce
src/workspace.js           a SQLite database per space (per person, per sandbox)
src/members.js             capability-token identity: named members with roles
src/oauth.js               OAuth 2.0 front door for MCP clients (DCR, client-id metadata documents)
src/mcp-http.js            MCP over streamable HTTP; one tool list per space's modules
src/document.js            the invoice document: one PDF renderer, previewed as its own pages
src/modules/core, o2c, crm, prospect, jobhunt, solo, purchases, bridge
specs/<area>/spec.md       the area spec: calibration, entities, invariants, read models
specs/<area>/scenarios/    executable conformance scenarios (refusals are contract)
src/conformance.js         replays scenarios through the real registry; keeps evidence
server.js                  workbench + hosted demo + MCP + OAuth (all one registry)
mcp-server.js              stdio MCP for local development
test/contract.test.js      the 24-gate contract (see below)
test/smoke.mjs             every workbench view and detail panel rendered in headless Chrome
test/local/                plain-language scripts run against a local model, checked in the database

访问控制:每条命令都声明一个权限标签;设有四种角色(所有者 / 控制者 / 文员 / 查看者);在注册表的关键节点执行权限检查;拒绝请求时会以一句话说明理由,并记录日志。通过成员密钥连接的 Agent 是该成员的代理:使用该成员的姓名和权限。每次写入都必须附带原因;读取操作从不记录日志。

资金在任何地方都以整数最小货币单位表示,并注明币种;金额合计按币种分别计算,不会跨币种汇总。绝不凭空捏造信息:缺少金额、日期或姓名时会询问,绝不猜测。

24 项门槛契约

每个模块——无论现有还是未来的——都必须满足以下要求:MCP/UI 一致 · 命名空间前缀 · 每次写入都遵循准则 · 声明防护条件 · 表所有权(不得跨模块写入)· 工具预算 · 模块挂载 · 一句话规则 · 审计行为 · 夹具重放 · 规范符合性(实现声称支持某个领域时,必须映射该领域的每项操作并通过所有场景)· 权限(未设置权限的命令不得发布)· 规范版本(模块实现其操作文件声明的版本)· 仅限人工操作(某个字段或整个操作必须由人完成;无论角色如何,Agent 都会被拒绝执行)· 入口(暂存行由 Agent 审核,且只能由人批准)· 声明门槛(活动可以宣称什么由人设定,编辑时会进行约束)· 账单(只有人可以批准付款;付款发生后才记录,并关联与之匹配的对账单行)。

最终目标是针对同一领域提供相互竞争的实现,并通过重放相同的场景文件进行认证——规范以操作而非命令为准,因此任何符合规范的模块都能运行这些操作。

运行

npm install
npm test          # the 24 gates
npm run smoke     # every workbench view and panel, in headless Chrome
npm run local -- --model <id> --script plain-invoicing --instructions off   # a local model, plain prompts
npm run demo      # a full quote-to-cash run, human and agent interleaved
npm start         # workbench on http://127.0.0.1:8140
npm run mcp       # stdio MCP server (OTC_WORKSPACE=you)

注册 Claude Code 会话:claude mcp add saybooks-local -e SAYBOOKS_WORKSPACE=$USER -- node <path>/mcp-server.js

本地模型

Saybooks 是一个普通的 MCP 服务,因此本机上的模型可以记账,且不会有任何内容离开本机。在配备 32 GB 内存的笔记本电脑上,使用 LM Studio 中的 Gemma 4 26B A4B 进行了测试:仅凭普通语句、不加引导,即可完成完整的发票流程和对账单流程。在 LM Studio 的 mcp.json 中:

{ "mcpServers": { "saybooks": {
    "command": "/usr/local/bin/node",
    "args": ["/path/to/saybooks/mcp-server.js"],
    "env": { "SAYBOOKS_WORKSPACE": "main", "SAYBOOKS_MODULES": "core,solo", "SAYBOOKS_ACTOR": "gemma-4" }
} } }

SAYBOOKS_MODULES 用于选择模型可见的工具(core,solo 有 35 个工具;core,purchases 有 60 个;全部十四个模块共有 236 个工具,对小型模型来说太多了)。加载模型时使用一个并发槽位。相关耗时,以及为此对工具进行的六项修复,详见 saybooks.io/notes/local-models;用于测量性能的纯语言测试框架可通过 npm run local 运行。

坦诚说明限制

每张发票可以使用任意币种,但币种之间不进行换算(总额按币种分别计算);每个空间仅支持一家公司;没有税务引擎(税率会按行记录并冻结;税务判定由集成负责);不执行任何对外操作:Saybooks 不会给客户发邮件、扣款或预订货运,只记录已发生的事情。账本交接会为 QuickBooks Online 和 Xero 写入导入文件;不会通过它们的 API 发布数据。各领域的延期事项清单及原因,见 specs/ 下的规范。

许可证

AGPL-3.0-only。版权所有 (C) 2026 Peter Varga。 如果你将修改后的 Saybooks 作为服务运行,就要分享你的修改——这就是约定。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。