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:创建免费开发者帐户
- 首选 developer.intitu.com 注册(无需信用卡)
- 注册后,Intuit会自动创建 沙盒公司 带有样本数据
步骤2:创建应用程序
- 登录后,转到 我的中心>应用仪表板
- 点击 创建应用程序
- 选择 QuickBooks在线和支付
- 随便命名(例如“QBO MCP服务器”)
- 选择
com.intuit.quickbooks.accounting范围 - 点击 创建应用
步骤3:获取您的客户ID和客户密码
- 在您的应用程序中,单击 密钥和OAuth 左侧导航
- 确保你在 发展 选项卡(非生产)
- 点击 显示凭据
- 复制您的 客户端ID 和 客户端密钥
步骤4:添加重定向URI
仍然 密钥和OAuth:
- 滚动到 重定向URI
- 点击 添加URI
- 为您的MCP客户端添加重定向URI(见下表)
- 保存
| MCP客户端 | 重定向URI |
|---|---|
| LibreChat(Docker或本地) | http://localhost:3080/api/mcp/quickbooks/oauth/callback |
| MCP检查器 | 使用检查器UI中显示的回调URL |
设置
1.安装依赖项
npm install2.配置机密
复制模板并按照上述步骤填写您的凭据:
cp .dev.vars.template .dev.varsQUICKBOOKS_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-serverMCP客户端配置
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启动时,它将:
- 检测服务器需要OAuth并提示您授权
- 将您重定向到Intuit的OAuth页面
- 授权后,请您提供 领域ID 和 环境 通过customUserVar提示
- 连接并公开所有QuickBooks工具
其他MCP客户端
连接到 /mcp (流式HTTP)或 /sse (SSE):
Authorization: Bearer {access_token}标题(必填)X-QB-Realm-Id: {company_id}header(如果未在env中设置,则为必填项)X-QB-Environment: sandbox|productionheader(可选,默认为沙盒)X-QB-Refresh-Token: {refresh_token}header(可选,在401上启用自动刷新)
查找您的领域ID
领域ID是QuickBooks 公司编号 您想访问的公司。这是 不 与您的应用程序ID或开发者帐户公司ID相同。
常见混淆: Intuit开发人员门户显示多个ID。您的应用程序具有UUID应用程序ID(例如。 5ff5fa24-...)应用程序概述页面显示了开发人员工作区的公司ID。 这两个都不是Realm ID。 领域ID是公司ID 具有实际会计数据的沙盒或生产公司.对于沙盒:
- 首选 developer.intitu.com → 您的应用程序→ 沙盒 标签
- 在您的沙盒公司下 公司编号 是Realm ID(一个类似的数字字符串
9341456502676660)
生产:
- 快捷键 (登录QBO时):
Ctrl+Alt+?(Windows)或Control+Option+?(Mac)--在屏幕上显示公司ID - 设置页面:齿轮图标→ 订阅和计费→ 公司ID位于顶部
- 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..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 使用生产头。
许可证
麻省理工学院
