Skip to main content
Glama
daveed716

Toast MCP Server

by daveed716

Toast MCP Server

一个用于 Toast POS API 的只读 Model Context Protocol 服务器。它让 AI 助手能够直接根据实时 Toast 数据回答关于您餐厅的问题,并生成销售、人工和现金报告。

从不写入 Toast。HTTP 客户端仅发出 GET 请求;代码库中唯一的 POST 是 Toast 要求用于生成令牌的身份验证调用,并且它被隔离在 src/auth.ts 中。冒烟测试对此进行了断言。


您可以询问什么

连接后,类似这样的问题都可以使用:

  • “我们上周与再前一周相比表现如何?”

  • “7 月份净销售额前 20 的商品是哪些,每件商品的平均价格是多少?”

  • “按小时细分上周六的销售额——我们真正的晚餐高峰是什么时候?”

  • “这个月我们的现金与银行卡比例是多少,我们支付了多少银行卡处理费?”

  • “哪些折扣使用最多,折扣金额是多少?”

  • “显示过去两周内每一笔作废记录,包括原因和当班人员。”

  • “上个月按员工计算,人工占净销售额的百分比是多少?”

  • “我们现在有哪些菜品已售罄(86'd)?”

  • “找到周五晚上的那笔 340 美元订单,并显示其包含的内容。”

  • “我们周日的营业时间是什么,我们配置了哪些用餐选项?”


Related MCP server: Shopify MCP Server

要求

  • Node.js 20 或更高版本(在 Node 22 上构建和测试)。

  • Toast API 凭据。 对于报告自身数据的餐厅,合适的产品是 标准 API 访问,它按设计是只读且自助式的:

    1. Toast Web 中,转到 集成 → Toast API 访问 → 管理凭据

    2. 创建一组凭据,为其命名(例如 mcp-reporting),并选择下面的读取范围。

    3. 复制 客户端 ID客户端密钥——密钥仅显示一次。

    如果您的账户没有该选项,它属于 Restaurant Management Essentials;您的 Toast 代表可以启用它。合作伙伴集成则从 Toast 集成团队获取凭据。

需要启用的范围

范围

用途

orders:read

所有销售报告——这是核心范围

config:read

用餐选项、收入中心、销售类别、折扣、作废原因、桌台

restaurants:read

门店资料、时区、结算小时、服务时间

labor:read

时间记录、班次、职位

labor.employees:read

员工姓名(没有它,服务员会显示为短 GUID)

menus:read

已发布的菜单、价格、修饰符

cashmgmt:read

抽屉记录和存款

stock:read

缺货 / 已售罄(86'd)商品

核心销售报告只需要 orders:readconfig:readrestaurants:read。如果缺少某个范围,服务器会优雅降级——受影响的工具会报告拒绝,其他工具继续工作。运行 toast_check_connection 可查看实际授予的范围。

您还需要您的餐厅 GUIDtoast_check_connection 会报告它,或者当门店被选中时在 Toast Web URL 中找到它,或者使用 toast_list_restaurants 配合管理组 GUID。


安装

npm install && npm run build

然后复制环境模板并填写:

cp .env.example .env

至少设置 TOAST_CLIENT_IDTOAST_CLIENT_SECRETTOAST_RESTAURANT_GUID。服务器会自动读取此文件(通过 Node 的原生环境文件支持),并且 .env 已被 gitignore。

在连接任何内容之前验证凭据:

npm run check-connection

这将打印环境、授予的范围、餐厅名称、其时区和结算小时,以及当前业务日期。


连接到 Claude

服务器通过 stdio 使用 MCP 通信。您有两种凭据选项,只需选择一种:

  • 将它们留在 .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.js

Claude 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 上,路径中使用正斜杠或转义的反斜杠。


配置

变量

默认值

用途

TOAST_CLIENT_ID

(必填)

API 客户端 ID

TOAST_CLIENT_SECRET

(必填)

API 客户端密钥

TOAST_ENV_FILE

加载此文件而不是搜索 .env;适用于每个门店一个凭据文件

TOAST_RESTAURANT_GUID

默认餐厅;每个工具都可以在调用时覆盖它

TOAST_MANAGEMENT_GROUP_GUID

为多门店组启用 toast_list_restaurants

TOAST_ENV

production

productionsandbox

TOAST_HOSTNAME

完整的基础 URL;覆盖 TOAST_ENV

TOAST_CACHE_ENABLED

true

已结算业务日期的磁盘缓存

TOAST_CACHE_DIR

~/.toast-mcp/cache

缓存订单的存储位置

TOAST_CACHE_SETTLE_DAYS

1

始终实时重新获取的天数

TOAST_MAX_DAYS

92

每个报告的业务日期上限

TOAST_LOG_LEVEL

info

debug 会将每个请求记录到 stderr


工具

连接与设置

工具

功能

toast_check_connection

验证凭据,探测每个 API,显示范围、时区、结算小时、缓存状态

toast_get_restaurant

门店资料:地址、电话、营业时间、货币、在线订餐和配送设置

toast_list_restaurants

管理组中的每个门店,包含 GUID

toast_clear_cache

清除本地缓存(不触及 Toast 中的任何内容)

报告

工具

功能

toast_sales_summary

主要收入和数量,可选与上一期间或去年比较

toast_sales_breakdown

按商品、销售类别、菜单组、小时、星期几、日期、服务员、用餐选项、来源、收入中心、服务区域或桌台分组的净销售额

toast_payment_summary

支付方式组合、银行卡品牌、小费、退款、处理费

toast_discount_summary

按名称统计的折扣和免单,包含使用次数

toast_void_report

按原因统计的作废订单、账单和商品

toast_labor_summary

工时、估算成本以及人工占净销售额的百分比

toast_cash_report

抽屉记录和存款,与现金支付对账

查询

工具

功能

toast_search_orders

按金额、渠道、服务员或客户/桌台文本查找单个订单

toast_get_order

单个订单的完整信息:行项目、修饰符、折扣、支付

toast_list_config

24 个配置集合中的任意一个——用于发现筛选器 GUID 的方法

toast_get_menu

已发布的菜单结构、价格列表或单个商品的修饰符详情

toast_get_stock

当前库存 / 已售罄(86'd)商品

toast_list_employees

员工名册和职位列表,包含工资

toast_time_entries

单独的打卡/下班记录

toast_list_shifts

排班表

日期

每个报告都使用餐厅所在时区的业务日期,并遵循其配置的结算小时——因此周六凌晨 2 点的销售会计入周五的业务日期,与 Toast 自身报告中的处理方式完全一致。

使用 date_range 选择预设(todayyesterdaythis_weeklast_weeklast_7_dayslast_14_dayslast_30_dayslast_90_daysthis_monthlast_monthmonth_to_dateyear_to_date),或使用 start_date / end_date 指定其他日期。这些接受 2026-08-0120260801todayyesterday 或相对偏移量,如 -7d-2w-3m。未指定时的默认值是昨天


数字的定义方式

这些数字来自原始订单数据,因此可能与 Toast Web 自身报告略有差异,后者会叠加额外的会计规则。每个报告都会在其输出中重申其定义。

指标

定义

毛销售额

非作废、非递延行项目上 preDiscountPrice 的总和。不含税。

折扣

所有已应用的折扣,包括项目级和账单级。

净销售额

行项目 price 的总和,该值已扣除项目账单级折扣。等于毛销售额减去折扣。不含税、小费、自动小费和服务费。

服务费

未标记为小费的服务费。与净销售额分开报告。

自动小费

标记为 gratuity 的服务费。

小费

实际收取的付款上的 tipAmount(作废和被拒绝的付款除外)。

递延收入

礼品卡销售。已收取但非收入的款项——不计入净销售额,单独一行显示。

作废

作废和删除的订单、账单和项目完全不计入销售额,在 toast_void_report 中报告。

一个值得了解的细节。 在 Toast 的数据模型中,行项目的 pricepreDiscountPrice 已经包含其嵌套修饰项的价格。在父项之上累加修饰项会重复计算每次加价。此服务器只累加顶层选项,测试套件会断言修饰项不会被计算两次。

两个假设在适用处均有说明:人工成本按记录时薪的 1.5× 估算加班费(Toast 不报告实际加班费率;倍率是工具参数),以及没有记录时薪的时间条目只计入工时但不计入成本。


速率限制与缓存

Toast 允许总体每秒 20 个请求,ordersBulk 每秒 5 个,menus 每秒 1 个。服务器在每个上限之下运行令牌桶限流器,并以指数退避重试 4295xx 响应,同时遵循 Retry-After

由于月度报告意味着要拉取 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 test

npm 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

故障排查

"Missing required environment variable(s)" — 服务器未找到凭据。该消息会指明要创建的精确 .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 个营业日期的每一笔订单。第二次运行将从缓存提供。

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to query and manage QuickBooks Online data through natural language, including customers, invoices, bills, vendors, accounts, and financial reports.
    7
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides AI assistants with real-time access to Shopify store analytics, sales data, and inventory through ShopifyQL and the Admin GraphQL API. It enables users to query store performance, customer metrics, and marketing insights using natural language.
    13
    MIT

View all related MCP servers

Related MCP Connectors

  • Read-only access to your VortexIQ store data: audits, KPIs, alerts, Brand DNA, reports, Ask VIQ.

  • Read-only bank access for your AI agent. Connects Claude, ChatGPT, Cursor, Gemini, Codex.

  • Connect your AI assistants to Keboola and expose your data, transformations, SQL queries, ...

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/daveed716/toast-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server