Toast MCP Server
Toast MCP Server
Toast POS API 用の読み取り専用 Model Context Protocol サーバーです。AI アシスタントが、レストランに関する質問に答えたり、ライブの Toast データから売上・人件費・現金レポートを生成したりできるようにします。
Toast への書き込みは一切行いません。HTTP クライアントは GET リクエストのみを発行します。コードベース内の唯一の POST は、Toast がトークンを発行するために必要な認証呼び出しであり、src/auth.ts に分離されています。スモークテストはこれを検証します。
質問できる内容
接続すると、次のような質問が機能します。
「先週は前週と比べてどうでしたか?」
「7月の純売上上位20品目と、それぞれの平均価格は?」
「先週の土曜日の時間別売上を教えて。実際のディナーラッシュはいつ?」
「今月の現金とカードの割合は?カード処理手数料はいくら支払いましたか?」
「最も使われている割引はどれで、その金額は?」
「過去2週間のすべてのボイドを、理由と担当者とともに表示して」
「先月の人件費は純売上に対して何パーセントでしたか?従業員別で」
「現在、売り切れ(86'd)になっているものは?」
「金曜の夜の340ドルの注文を見つけて、その内容を表示して」
「日曜日の営業時間は?また、設定されているダイニングオプションは?」
Related MCP server: infera-mcp-server
要件
Node.js 20 以降(Node 22 でビルド・テスト済み)。
Toast API 資格情報。 自社データをレポートするレストランの場合、適切な製品は Standard API Access です。これは設計上読み取り専用で、セルフサービスです。
Toast Web で、Integrations → Toast API access → Manage credentials に移動します。
資格情報セットを作成し、名前を付け(例:
mcp-reporting)、以下の読み取りスコープを選択します。クライアント ID と クライアントシークレット をコピーします。シークレットは一度しか表示されません。
アカウントにそのオプションがない場合、それは Restaurant Management Essentials の一部です。Toast の担当者が有効化できます。パートナー統合の場合は、代わりに Toast 統合チームから資格情報を取得します。
有効にするスコープ
スコープ | 必要な用途 |
| すべての売上レポート — これが中核です |
| ダイニングオプション、売上センター、売上カテゴリ、割引、ボイド理由、テーブル |
| ロケーションのプロフィール、タイムゾーン、締め時間、営業時間 |
| タイムエントリ、シフト、ジョブ |
| 従業員名(これがないと、サーバーは短い GUID で表示されます) |
| 公開済みメニュー、価格、モディファイア |
| ドロワーエントリと入金 |
| 在庫切れ / 86'd アイテム |
コアの売上レポートには orders:read、config:read、restaurants:read のみが必要です。スコープが不足している場合、サーバーは正常に縮退します。影響を受けるツールは拒否を報告し、他のツールは動作し続けます。toast_check_connection を実行して、付与されている内容を正確に確認してください。
また、レストラン GUID も必要です。toast_check_connection がそれを報告するか、Toast Web の URL でロケーションが選択されているときに確認するか、管理グループ GUID を使用して toast_list_restaurants を使用します。
インストール
npm install && npm run build次に、環境テンプレートをコピーして記入します。
cp .env.example .env最低限 TOAST_CLIENT_ID、TOAST_CLIENT_SECRET、TOAST_RESTAURANT_GUID を設定します。サーバーはこのファイルを自動的に読み取ります(Node のネイティブ env-file サポート経由)。.env は gitignore されています。
配線する前に資格情報を検証します。
npm run check-connectionこれにより、環境、付与されたスコープ、レストラン名、タイムゾーン、締め時間、現在の営業日が出力されます。
Claude に接続する
サーバーは stdio 経由で MCP を話します。資格情報には2つのオプションがあり、1つだけで十分です。
.envに残す。 サーバーは、クライアントが起動する作業ディレクトリに関係なく、自身のパッケージディレクトリから.envを読み込むため、以下の設定はenvブロックなしで機能します。シークレットはクライアントの設定ファイルに残りません。クライアントの
envブロックに入れる(下記参照)。実際の環境変数は常に.envより優先されるため、両方存在する場合はこれが優先されます。
Claude Code
.env を記入した場合、これだけで十分です。コマンドに資格情報は不要です。
claude mcp add toast -- node /absolute/path/to/toast_mcp/dist/index.js資格情報を明示的に渡す場合:
claude mcp add toast --env TOAST_CLIENT_ID=your-id --env TOAST_CLIENT_SECRET=your-secret --env TOAST_RESTAURANT_GUID=your-restaurant-guid -- node /absolute/path/to/toast_mcp/dist/index.jsClaude Desktop
claude_desktop_config.json に追加:
{
"mcpServers": {
"toast": {
"command": "node",
"args": ["/absolute/path/to/toast_mcp/dist/index.js"],
"env": {
"TOAST_CLIENT_ID": "your-client-id",
"TOAST_CLIENT_SECRET": "your-client-secret",
"TOAST_RESTAURANT_GUID": "your-restaurant-guid"
}
}
}
}.env を使用している場合は、env ブロックを完全に削除します。Windows では、パスにフォワードスラッシュまたはエスケープされたバックスラッシュを使用します。
設定
変数 | デフォルト | 目的 |
| (必須) | API クライアント ID |
| (必須) | API クライアントシークレット |
| — |
|
| — | デフォルトのレストラン。すべてのツールが呼び出しごとに上書き可能 |
| — | 複数ロケーショングループの |
|
|
|
| — | 完全なベース URL。 |
|
| 確定済み営業日のディスクキャッシュ |
|
| キャッシュされた注文の保存場所 |
|
| 常にライブで再取得する日数 |
|
| レポートあたりの営業日の上限 |
|
|
|
ツール
接続とセットアップ
ツール | 機能 |
| 資格情報を検証し、各 API をプローブし、スコープ、タイムゾーン、締め時間、キャッシュ状態を表示 |
| ロケーションプロフィール: 住所、電話、営業時間、通貨、オンライン注文と配達設定 |
| 管理グループ内のすべてのロケーションと GUID |
| ローカルキャッシュを削除(Toast には何も触れません) |
レポート
ツール | 機能 |
| 主要な売上と数量。オプションで前期または前年と比較 |
| アイテム、売上カテゴリ、メニューグループ、時間、曜日、日付、サーバー、ダイニングオプション、ソース、売上センター、サービスエリア、またはテーブルでグループ化された純売上 |
| 支払い方法の構成、カードブランド、チップ、返金、処理手数料 |
| 名前別の割引と無償提供、使用回数付き |
| 理由別のボイドされた注文、チェック、アイテム |
| 時間、推定コスト、純売上に対する人件費の割合 |
| ドロワーエントリと入金。現金支払いと照合 |
ルックアップ
ツール | 機能 |
| 金額、チャネル、サーバー、または顧客/タブテキストで個々の注文を検索 |
| 1件の注文を完全に表示: ラインアイテム、モディファイア、割引、支払い |
| 24の設定コレクションのいずれか — フィルタ用の GUID を発見する方法 |
| 公開済みメニュー構造、価格リスト、または1アイテムのモディファイア詳細 |
| 現在の在庫 / 86'd アイテム |
| 従業員名簿と賃金付きジョブリスト |
| 個々の打刻/退出記録 |
| 予定されたシフト |
日付
すべてのレポートは、レストラン自身のタイムゾーンで営業日に基づき、設定された締め時間を尊重します。つまり、土曜日の午前2時の売上は、Toast のレポートと同様に、金曜日の営業日に計上されます。
date_range でプリセット(today、yesterday、this_week、last_week、last_7_days、last_14_days、last_30_days、last_90_days、this_month、last_month、month_to_date、year_to_date)を使用するか、start_date / end_date でその他の日付を指定します。これらは 2026-08-01、20260801、today、yesterday、または -7d、-2w、-3m のような相対オフセットを受け入れます。何も指定しない場合のデフォルトは昨日です。
数値の定義
これらは生の注文データから取得されるため、追加の会計ルールを適用する Toast Web のレポートとはわずかに異なる場合があります。各レポートは、出力でその定義を再述します。
指標 | 定義 |
売上総額 | 無効化・繰延されていない明細項目の |
割引 | 適用されたすべての割引。項目レベルとチェックレベルの両方を含む。 |
純売上 | 明細項目の |
サービス料 | チップとしてフラグ付けされていない適用済みサービス料。純売上とは別に報告される。 |
自動チップ |
|
チップ | 実際に回収された支払いの |
繰延 | ギフトカード売上。回収された金銭ではあるが、収益ではない — 純売上から除外され、独立した行に表示される。 |
無効化 | 無効化・削除された注文、チェック、項目は売上から完全に除外され、 |
知っておくべき微妙な点が1つある。 Toast のデータモデルでは、明細項目の price と preDiscountPrice
には、ネストされたモディファイアの価格がすでに含まれている。親項目に加えてモディファイアを合計すると、すべての追加料金が二重計上される。このサーバーは常にトップレベルの選択項目のみを合計し、テストスイートはモディファイアが2回カウントされないことを検証する。
2つの前提が該当箇所に明記されている。人件費の見積もりは、記録上の時給の 1.5倍 を時間外として計算する(Toast は実際の時間外料金を報告しない。乗数はツールの引数である)。また、記録上の時給がない時間エントリは、時間数にはカウントされるがコストにはカウントされない。
レート制限とキャッシュ
Toast は全体で毎秒20リクエスト、ordersBulk は毎秒5リクエスト、menus は毎秒1リクエストを許可している。サーバーはこれらの上限を下回るトークンバケット方式のリミッターを実行し、429 および 5xx レスポンスに対しては指数バックオフで再試行し、Retry-After を尊重する。
1か月分のレポートは30営業日分のすべての注文を取得することを意味するため、完了した日付はJSONとしてディスクにキャッシュされる。今日と過去 TOAST_CACHE_SETTLE_DAYS 日分(デフォルトは1日)は、チップ、返金、締め処理が変わり続けるため、常に再取得される。任意のレポートに refresh: true を渡すとキャッシュをバイパスできる。また、過去の日付について Toast で修正を行った後は toast_clear_cache を実行できる。各レポートのフッターには、キャッシュから取得された日付とライブで取得された日付の数が記載される。
開発
npm run typecheck # type-check without emitting
npm run build # compile to dist/
npm test # build, then run the end-to-end smoke testnpm test は手計算されたフィクスチャデータでモック Toast API を起動し、コンパイル済みサーバーを実際の子プロセスとして起動し、MCP クライアントが行うように stdio 経由で19個すべてのツールを駆動する。実際の算術(純売上、税、チップ、繰延収益、人件費、無効化合計)が正しいこと、GUID が名前に解決されること、ページネーションが切り詰められないこと、キャッシュが正しく使用・バイパスされること、エラーが読みやすく表示されること、そして GET リクエストと認証用 POST 以外は API に到達しないことを検証する。
構成
src/
index.ts MCP server entry, tool registration, --check-connection
env.ts .env discovery and loading, with environment taking precedence
config.ts Environment loading and validation
auth.ts Token acquisition, caching, refresh (the only POST)
client.ts Read-only HTTP client: retries, rate limiting, pagination
rateLimiter.ts Token-bucket limiters matched to Toast's documented limits
cache.ts On-disk cache for settled business dates
service.ts Data access across Orders, Config, Menus, Labor, Cash, Stock
dates.ts Business-date arithmetic in the restaurant's time zone
aggregate.ts Revenue definitions and the single-pass fact builder
grouping.ts Group-by dimensions
names.ts GUID to human name resolution
money.ts Integer-cent arithmetic and currency formatting
format.ts Text table rendering
tools/ One module per tool group
test/
mock-toast.mjs Fixture Toast API
config.mjs Credential loading, .env precedence, error messages
smoke.mjs End-to-end assertionsトラブルシューティング
「必須環境変数がありません」 — サーバーが認証情報を見つけられなかった。メッセージには作成すべき正確な .env パスが記載されている。.env は読み取られたが変数が定義されていないと表示された場合は、タイプミスや空白のままの値がないか確認すること — 空白の値は未設定として扱われる。
.env の値が無視されているように見える — 環境変数が優先されるため、実際の環境の何かがそれを上書きしている。toast_check_connection は認証情報がどのソースから来たかを報告する。(空でエクスポートされた変数、例: TOAST_CLIENT_ID= は未設定として扱われ、.env の値をブロックしない。)
一部のツールでのみ 403 が発生する — スコープが不足している。toast_check_connection を実行すること。API アクセステーブルに拒否されたものが表示される。Toast Web の認証情報セットにスコープを追加すること。
サーバーやカテゴリが #a1b2c3d4 と表示される — Configuration または Labor スコープが付与されていないため、GUID を名前に解決できない。売上数値は依然として正しい。
数値が Toast Web とわずかに異なる — 想定内。上記の定義表を参照のこと。最も一般的な原因は、Toast のダッシュボードがサービス料または繰延収益を異なる方法で扱っていることである。
過去の日付が古く見える — 日付がキャッシュされた後に Toast で修正が行われた。refresh: true を渡すか、toast_clear_cache を実行すること。
最初のレポートが遅い — 90日間のレポートは90営業日分のすべての注文を取得する。2回目の実行はキャッシュから提供される。
This server cannot be deployed
Maintenance
Related MCP Connectors
Run your restaurant from an AI client: orders, menu, reports, refunds, payouts and staff.
Query your books, company data, business health, and ship invoices from your AI assistant.
Read-only by architecture: ask AI about QuickBooks, Xero and NetSuite, across every entity.
Ask your AI about your Airbnb and VRBO listings, bookings, guest messages and reviews. Read-only.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to manage restaurant operations by integrating with Toast POS, including orders, menus, employees, payments, inventory, and reporting through 50+ tools and 18 React apps.816MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to query internal business data for insights into customers, revenue, subscriptions, sales, and churn through controlled, read-only MCP tools.-
- AlicenseCqualityBmaintenanceEnables Claude or any MCP client to query a Toast POS using plain English, with 55 read-only tools covering orders, sales, labor, employees, menus, inventory, customers, and cash.552MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to query a retail and food-service point-of-sale database through predefined business tools for sales summaries, top products, margins, stagnant inventory, cash reconciliation, and optional stock adjustments, returning formatted markdown answers.MIT