QuickBooks MCP服务器

一个基于Cloudflare Workers和OAuth 2.0认证的QuickBooks Online模型上下文协议服务器,提供55种工具用于管理QuickBooks实体。

  • by LibreChat-AI
  • TypeScript
  • 本地部署
  • 10 星标
  • 更新于
在 GitHub 查看 LibreChat-AI/quickbooks-online-mcp

使用说明

QuickBooks在线MCP服务器

A. 模型上下文协议 QuickBooks Online服务器,基于Cloudflare Workers构建,具有OAuth 2.0身份验证。

提供55个工具,用于通过任何兼容MCP的客户端管理QuickBooks实体(客户、发票、账单、供应商等)。

建筑

  • Cloudflare员工 MCP状态的持久对象运行时
  • 荣誉 用于HTTP路由和OAuth代理
  • McpAgent (从 agents 包)用于MCP传输(SSE+流式HTTP)
  • 纯净 fetch() 调用QuickBooks REST API-不需要Node.js SDK
api/
├── index.ts              # Hono app: OAuth discovery, /register, /authorize, /token, MCP routes
├── QuickBooksMCP.ts      # McpAgent Durable Object with all tools
├── QuickBooksService.ts  # Fetch-based QB API client (generic CRUD + query builder)
└── lib/
    └── qb-auth.ts        # OAuth middleware and token exchange helpers

获取Intuit开发人员证书

Intuit开发者沙盒是 完全免费 --测试不需要QuickBooks订阅。

步骤1:创建免费开发者帐户

  1. 首选 developer.intitu.com 注册(无需信用卡)
  2. 注册后,Intuit会自动创建 沙盒公司 带有样本数据

步骤2:创建应用程序

  1. 登录后,转到 我的中心>应用仪表板
  2. 点击 创建应用程序
  3. 选择 QuickBooks在线和支付
  4. 随便命名(例如“QBO MCP服务器”)
  5. 选择 com.intuit.quickbooks.accounting 范围
  6. 点击 创建应用

步骤3:获取您的客户ID和客户密码

  1. 在您的应用程序中,单击 密钥和OAuth 左侧导航
  2. 确保你在 发展 选项卡(非生产)
  3. 点击 显示凭据
  4. 复制您的 客户端ID 和 客户端密钥

步骤4:添加重定向URI

仍然 密钥和OAuth:

  1. 滚动到 重定向URI
  2. 点击 添加URI
  3. 为您的MCP客户端添加重定向URI(见下表)
  4. 保存
MCP客户端 重定向URI
LibreChat(Docker或本地) http://localhost:3080/api/mcp/quickbooks/oauth/callback
MCP检查器 使用检查器UI中显示的回调URL

设置

1.安装依赖项

npm install

2.配置机密

复制模板并按照上述步骤填写您的凭据:

cp .dev.vars.template .dev.vars
QUICKBOOKS_CLIENT_ID=your_client_id
QUICKBOOKS_CLIENT_SECRET=your_client_secret
QUICKBOOKS_REALM_ID=your_company_id        # Optional if passed via header
QUICKBOOKS_ENVIRONMENT=sandbox              # 'sandbox' or 'production'

3.启动服务器

npx wrangler dev

服务器启动于 http://localhost:3000.

4.验证

# Health check
curl http://localhost:3000/

# OAuth discovery
curl http://localhost:3000/.well-known/oauth-authorization-server

MCP客户端配置

Librechat

添加到您的 librechat.yaml:

mcpServers:
  quickbooks:
    type: "streamable-http"
    url: "http://host.docker.internal:3000/mcp"  # Use localhost:3000 if not using Docker
    requiresOAuth: true
    headers:
      X-QB-Realm-Id: "{{QB_REALM_ID}}"
      X-QB-Environment: "{{QB_ENVIRONMENT}}"
    customUserVars:
      QB_REALM_ID:
        title: "QuickBooks Realm ID"
        description: "Your QuickBooks Company ID (found in Intuit Developer Portal under Sandbox settings)"
      QB_ENVIRONMENT:
        title: "QuickBooks Environment"
        description: "Enter 'sandbox' or 'production' (defaults to sandbox)"

您还必须将服务器的地址添加到 mcpSettings.allowedDomains --LibreChat对任何本地/非公开MCP服务器URL都要求这样:

mcpSettings:
  allowedDomains:
    - "http://localhost:3000"

当LibreChat启动时,它将:

  1. 检测服务器需要OAuth并提示您授权
  2. 将您重定向到Intuit的OAuth页面
  3. 授权后,请您提供 领域ID 和 环境 通过customUserVar提示
  4. 连接并公开所有QuickBooks工具

其他MCP客户端

连接到 /mcp (流式HTTP)或 /sse (SSE):

  • Authorization: Bearer {access_token} 标题(必填)
  • X-QB-Realm-Id: {company_id} header(如果未在env中设置,则为必填项)
  • X-QB-Environment: sandbox|production header(可选,默认为沙盒)
  • X-QB-Refresh-Token: {refresh_token} header(可选,在401上启用自动刷新)

查找您的领域ID

领域ID是QuickBooks 公司编号 您想访问的公司。这是 不 与您的应用程序ID或开发者帐户公司ID相同。

常见混淆: Intuit开发人员门户显示多个ID。您的应用程序具有UUID应用程序ID(例如。 5ff5fa24-...)应用程序概述页面显示了开发人员工作区的公司ID。 这两个都不是Realm ID。 领域ID是公司ID 具有实际会计数据的沙盒或生产公司.

对于沙盒:

  1. 首选 developer.intitu.com → 您的应用程序→ 沙盒 标签
  2. 在您的沙盒公司下 公司编号 是Realm ID(一个类似的数字字符串 9341456502676660)

生产:

  1. 快捷键 (登录QBO时): Ctrl+Alt+? (Windows)或 Control+Option+? (Mac)--在屏幕上显示公司ID
  2. 设置页面:齿轮图标→ 订阅和计费→ 公司ID位于顶部
  3. OAuth回调:Intuit包括 realmId 作为重定向URL中的查询参数

可用工具(55)

对所有11种QuickBooks实体类型进行完整的CRUD+搜索:

实体 创建 读取/获取 更新 删除 搜索
客户 create_customer get_customer update_customer delete_customer search_customers
发票 create_invoice read_invoice update_invoice delete_invoice search_invoices
账户 create_account get_account update_account delete_account search_accounts
物品 create_item read_item update_item delete_item search_items
估计 create_estimate get_estimate update_estimate delete_estimate search_estimates
比尔 create_bill get_bill update_bill delete_bill search_bills
供应商 create_vendor get_vendor update_vendor delete_vendor search_vendors
员工 create_employee get_employee update_employee delete_employee search_employees
日记 create_journal_entry get_journal_entry update_journal_entry delete_journal_entry search_journal_entries
缴费服务 create_bill_payment get_bill_payment update_bill_payment delete_bill_payment search_bill_payments
购买 create_purchase get_purchase update_purchase delete_purchase search_purchases

注: 删除客户、供应商、员工、账户和项目执行 停用 (Active: false)因为QuickBooks不支持对这些实体进行硬删除。发票上的删除操作 无效.删除票据、暂估、日记账分录、票据付款和采购执行硬删除。

工具架构

所有创建工具都有 类型化Zod模式 与QuickBooks API规范相匹配-强制执行必需字段,可选字段记录有说明。这为LLM发送内容提供了明确的指导。例如, create_bill 需要 VendorRef 和 Line 适当的物品 AccountBasedExpenseLineDetail 或 ItemBasedExpenseLineDetail 筑巢。

所有更新工具 自动获取当前实体 得到 SyncToken 以及必填字段,因此调用者只需提供 Id 以及他们想要更改的字段。

所有删除工具只需要实体 id — SyncToken 自动提取。

搜索工具

所有搜索工具都接受带运算符的结构化条件:

{
  "criteria": [
    { "field": "DisplayName", "value": "Acme", "operator": "LIKE" },
    { "field": "Balance", "value": 0, "operator": ">" }
  ],
  "limit": 10,
  "asc": "DisplayName"
}

支持的操作员: =, <, >, <=, >=, LIKE, IN

部署

部署到Cloudflare Workers:

# Set your Cloudflare account ID (find it in the Cloudflare dashboard)
export CLOUDFLARE_ACCOUNT_ID=your_account_id

# Login to Cloudflare
npx wrangler login

# Set secrets (each prompts for the value)
npx wrangler secret put QUICKBOOKS_CLIENT_ID
npx wrangler secret put QUICKBOOKS_CLIENT_SECRET
npx wrangler secret put QUICKBOOKS_REALM_ID        # Optional if passed via header
npx wrangler secret put QUICKBOOKS_ENVIRONMENT      # 'sandbox' or 'production'

# Deploy
npx wrangler deploy

部署输出您的worker URL(例如。 https://quickbooks-online-mcp-server.<subdomain>.workers.dev).更新您的MCP客户端配置以指向此URL。

沙盒vs生产

沙箱 生产
API基本URL sandbox-quickbooks.api.intuit.com quickbooks.api.intuit.com
数据 Intuit的样本数据 真实的公司数据
付费 免费(仅限开发人员帐户) 需要QBO订阅(简单入门+)
应用程序审查 不需要 Intuit要求
OAuth密钥 来自开发门户的开发密钥 生产密钥(应用程序批准后)

沙盒是默认设置。集 QUICKBOOKS_ENVIRONMENT=production 或通过 X-QB-Environment: production 使用生产头。

许可证

麻省理工学院