Saybooks について
Saybooksは、エージェントと人が同じコマンド、ルール、監査記録を使うよう設計された、家庭や企業向けのオープンソースERPです。MCPツールは明示的な権限と人による承認条件のもと、明細、請求、ローン、在庫などの会計業務を扱います。
主な機能
- 01会計・業務向けの14モジュール
- 02UIとエージェントで共通のコマンドとルール
- 03実行者と理由を記録する書き込み監査
- 04ロール権限と人のみが行える操作
- 05明細照合と行ごとの出所記録
活用シーン
- 01家庭の口座、請求、ローンの管理
- 02銀行明細と帳簿の照合
- 03請求書、注文、在庫の管理
- 04会計期間や税年度の記録準備
MCP 対応
SaybooksはStreamable HTTP経由のMCP、またはローカルのstdioサーバーでモジュール別ツールを公開します。クライアントはワークスペースに接続し、設定されたモジュールに応じたツールを利用します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://saybooks.io/mcpclaude mcp add --transport http alviso-saybooks https://saybooks.io/mcp{"mcpServers":{"alviso-saybooks":{"type":"http","url":"https://saybooks.io/mcp"}}}Cursor で開く{"servers":{"alviso-saybooks":{"type":"http","url":"https://saybooks.io/mcp"}}}VS Code で開く{"mcpServers":{"alviso-saybooks":{"type":"http","url":"https://saybooks.io/mcp"}}}{"mcpServers":{"alviso-saybooks":{"serverUrl":"https://saybooks.io/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
Saybooks
話しかけられる本。ずっと本のままの本。
Saybooks は、エージェントとインターフェースが同じシステムを使うオープンソースの ERP です。コマンドレジストリ、ルールブック、監査証跡はすべて共通です。Claude にカード明細のインポート、請求書の発行、注文の発送を頼むことも、ボタンをクリックすることもできます。同じコマンド、同じルール、誰が何をしたか、その理由まで同じ記録に残ります。
ご家庭向け:saybooks.io/personal。エージェントに銀行とカードの明細を渡せば、口座、カード、住宅ローン、自動車ローン、請求書、領収書を管理し、税務申告用に年間サマリーを作成します。銀行口座との自動連携も、銀行のパスワードも不要です。明細は、記載された残高と明細の各行の合計が一致した場合にのみ取り込まれます。どの銀行、どの通貨にも対応します。登録不要で架空の家庭の例を見るか、https://saybooks.io/mcp/household に接続するか、全5回のシリーズを見ることができます。
公開中:saybooks.io。登録不要のデモを試すか、Google でサインインして、帳簿に必要なモジュールを選んでください。コネクターとして https://saybooks.io/mcp を追加すれば、Claude に接続できます(OAuth を使用するため、貼り付けるキーはありません)。同じ帳簿をブラウザー上の通常のページからも利用できます。
動画:Saybooks の作業デモ。デモ用帳簿を使ってライブで収録した5本の短い動画では、発注書と入荷処理、在庫評価、月末締め、銀行照合、売上税を紹介します。
現在14のモジュールがあり、すべて仕様を優先して開発され、実行可能な適合シナリオを備えています。
| モジュール | 対象 | 保持する情報 |
|---|---|---|
| solo(請求) | フリーランス | 顧客、リンクと PDF 付きの請求書、支払い、未回収額。あらゆる通貨と、利用者の税制に対応 |
| o2c(受注から入金まで) | 小規模事業者 | 見積もり、注文、出荷、請求書、売掛金。エージェントが回避できない与信ゲート付き |
| crm | 小規模事業者 | キャンペーン、取引先、情報源や不足項目を含む連絡先、パイプライン。エージェントが作成し、人が送信する営業文案。情報源とカレンダーを含むイベント |
| prospect | 購入したリストを持つすべての人 | CRM の手前にある保留エリア。エージェントが行を登録して評価し、昇格させるのは人だけ |
| jobhunt | 求職中の人 | 求人、応募、面接、採用担当者、重複防止、次に取るべきアクション 1 件 |
| p2p(購買) | 在庫を仕入れる小規模事業者 | ベンダー価格での発注書、発注書に対する入庫、支払いの人手承認前に 3 点照合を行うベンダー請求書 |
| inventory | 在庫を保有する小規模事業者 | すべての在庫移動、移動平均原価、各出荷の原価と利益率、理由付きの棚卸し、帳簿と一致する在庫価値 |
| purchases(個人の財務) | すべての人 | 口座と純資産、口座間の振替、カードの支払額、利息と返金、予定請求、自動引き落としと支払期限、立替経費の精算、税区分と年度。エージェントが読み取る銀行・カード明細と領収書:出所情報、確認、サブスクリプション、支出を含む行 |
| bankrec(銀行) | 「銀行残高は帳簿と合っていますか?」と会計士に聞かれる人 | 各明細と帳簿の照合、記録済みの支払いに照合した入金、名称が付けられた未処理項目、人による承認 |
| loans(個人の財務、ローン) | 住宅ローンまたは自動車ローンがある人 | 貸し手の数値、元金・利息・エスクローに分けた各支払い、債務残高と完済時期、年ごとの利息、貸し手との照合 |
| salestax(売上税) | 売上税を徴収して申告する人 | 請求と貸方処理に基づく月次または四半期の申告書、人が記録する申告、納付、帳簿と一致する負債 |
| gl(月次締め) | 帳簿を締めるすべての人 | 締めチェックリスト、貸借が一致し取り消し可能な調整仕訳、変更を防ぐ締め済み期間、次のオープン期間での修正 |
| bridge(元帳) | 会計士がいるすべての人 | QuickBooks、Xero、または通常の CSV への引き継ぎ。一度勘定科目表をマッピングし、期間をエクスポートして、何をいつまでに送ったかを保持 |
| core | すべてのスペース | 顧客、品目、会社プロフィール、検索、監査、設定 |
これが存在する理由
「会話型 ERP」とは通常、エージェントの存在を認識しないシステムにチャットレイヤーを 後付けしたものです。Saybooks はこれを逆転させます。すべての業務上の行為を一度だけ宣言し、 それ以外のすべてはその宣言から導出されます。
| 導出されるもの | その結果 |
|---|---|
| MCP ツール(名前、原則、JSON Schema、注釈) | エージェントには UI でできることが正確に表示されます |
| UI フォーム(フィールド、ウィジェット、検証) | 人にはエージェントができることが正確に表示されます |
| ガード評価 | 無効化されたボタンのツールチップ、送出される拒否、エージェントの回答は、同じ文であり、テストで検証されます |
| 監査行 | どちらの画面からの書き込みも、実行者と理由を記録した単一のログに残ります。拒否も含まれます |
レジストリの外部からハンドラーを呼び出すことはできません。クリックもツール呼び出しも、
同じコマンド、同じガード、同じトランザクションを通ります。どちらも個別に作成されることがないため、
2 つの画面に食い違いは生じません。また、誰かが食い違いを起こそうとすると、test/contract.test.js がビルドを失敗させます。
パーサーファーストではなく、エージェントファーストです。明細や領収書などのファイルが関わる場合、 エージェントがファイルを読み取り、読み取った内容を渡します。モジュールは管理合計を確認し、 各行の出所情報を保持し、照合できないものは拒否します。保守が必要な銀行用パーサーはありません。
内容
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
アクセス制御:各コマンドには権限タグが設定されています。ロールは owner/controller/clerk/viewer の4種類です。レジストリの要所で適用され、拒否は1文で応答し、ログに記録されます。メンバーのキーで接続するエージェントは、そのメンバーの 代理人 として扱われ、そのメンバーの名前と権限を使います。すべての書き込みには理由が必要です。読み取りはログに記録されません。
金額は、どこでも通貨単位付きの整数の最小通貨単位で扱い、合計は通貨ごとに計算され、通貨をまたぐことはありません。情報を捏造することはありません。金額、日付、名前が不足している場合は推測せず、確認します。
24項目の契約
すべてのモジュールは、現在および将来のものを問わず、次の要件に従います。MCP/UI の同等性 · 名前空間プレフィックス · すべての書き込みに理由を必須とする · ガードの宣言 · テーブルの所有権(モジュールをまたぐ書き込みは禁止) · ツールの上限 · モジュールのマウント · 1文ルール · 監査の動作 · フィクスチャの再生 · 仕様への準拠(ある領域を実装するとするものは、すべての操作を対応付け、すべてのシナリオに合格しなければなりません) · 権限(権限のないコマンドはリリースしません) · 仕様のバージョン(モジュールは、操作ファイルで宣言されたバージョンを実装します) · 人間専用(人が行う必要のあるフィールドや操作全体は、ロールにかかわらずエージェントには拒否されます) · 扉(ステージングされた行はエージェントが審査し、昇格できるのは人だけです) · 主張のゲート(キャンペーンで何を主張できるかは人が設定し、編集時にも維持されます) · 請求書(支払いの承認は人だけが行います。支払いは実行後に、それと一致する明細行に対して記録されます)。
最終的には、同じ領域に対する複数の実装を競わせ、同じシナリオファイルを再生して認定します。仕様はコマンドではなく操作で記述されているため、準拠するモジュールであればどれでも実行できます。
実行方法
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 のノート PC 上の 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個、14個すべてのモジュールを有効にすると236個となり、小型モデルには多すぎます)。モデルは同時実行スロットを1つにして読み込んでください。これにかかった時間と、ツールに加えざるを得なかった6つの修正については、saybooks.io/notes/local-models をご覧ください。計測に使った平易な言葉で操作するハーネスは npm run local です。
正直な制限事項
請求書ごとに任意の通貨を使えますが、通貨間の換算はできません(合計は通貨ごとに保持されます)。1つのスペースにつき会社は1社です。税計算エンジンはありません(税率は行ごとに取得され、固定されます。税率の判定は連携先の役割です)。外部への処理は一切行いません。Saybooks が顧客にメールを送信したり、カードに請求したり、配送を手配したりすることはありません。発生した事実を記録します。台帳の引き継ぎでは QuickBooks Online と Xero 向けのインポートファイルを作成しますが、各サービスの API 経由で投稿することはありません。各領域で先送りにされた項目とその理由は、specs/ 内の仕様に記載されています。
ライセンス
AGPL-3.0-only。Copyright (C) 2026 Peter Varga. 変更した Saybooks をサービスとして運用する場合は、変更内容を共有してください。それが条件です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。