QuickBooks财务服务器

一个为财务专业人士设计的QuickBooks在线MCP服务器,支持自然语言查询、自动名称解析和财务报告生成。

  • by Mitch-scm
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Mitch-scm/quickbooks-mcp

使用说明

QuickBooks MCP服务器

QuickBooks Online的MCP服务器,专为在日常工作中使用人工智能助手的簿记员、首席财务官和会计师而构建。

让你的人工智能助手提取损益表、创建日记账分录或调查账户余额——使用简单的语言,而不是API有效载荷。

为什么选择此服务器?

Intuit提供 官方MCP服务器 对于开发人员探索QuickBooks API来说,这是一个坚实的起点。此服务器采用了一种不同的方法:它是为 从事图书制作的金融专业人员.

使用自然语言,而不是内部ID

Intuit的服务器要求每个引用都有QuickBooks内部ID——在创建账单之前,您需要查找供应商的ID。此服务器会自动解析名称:

"Create a bill for PG&E, $450 to Utilities, dated 2025-01-15"
→ Vendor, account, and department names are resolved automatically

内置财务报告

这是唯一一个带有报告工具的QuickBooks MCP服务器。在不离开人工智能对话的情况下,提取损益表、资产负债表或试算表——按月份、部门或类别细分。

默认安全

每个创建和编辑操作默认为 草稿/预览模式。在提交之前,你会确切地看到你的书上会写些什么。无意外日记账分录或错误分类的费用。

一个查询工具,而不是几十个

与其为每种实体类型提供单独的搜索工具,不如使用单个SQL query 该工具适用于所有QuickBooks实体。AI助手自然地编写SQL,QuickBooks会对其进行验证——无需维护字段白名单。

"SELECT * FROM Purchase WHERE TxnDate >= '2025-01-01' AND TxnDate <= '2025-01-31'"

生产就绪凭证管理

将凭据存储在本地供个人使用,或存储在AWS Secrets Manager中供共享环境使用。OAuth令牌会自动刷新并在会话之间持久。

概览

Intuit官方 此服务器
观众 开发人员探索API 记账员、首席财务官、会计师
名称解析 需要内部QB ID 自动解析名称
财务报告 无 损益表、资产负债表、试算表
写安全 立即执行 默认情况下为草稿预览
查询方法 特定于实体的搜索工具 跨所有实体的类似SQL的查询
凭证 本地 .env file 本地文件或AWS机密管理器
分布 从GitHub克隆 npx quickbooks-mcp

先决条件

安装选项

选择适合您用例的设置:

设置 最适合
NPM安装 使用您自己的QuickBooks应用程序快速设置
本地结账 开发、定制
AWS模式 共享/生产环境

选项1:NPM安装

最简单的开始方式。凭据存储在本地计算机上。

1.创建QuickBooks应用程序

  1. 首选 developer.intitu.com 并登录
  2. 创建新应用程序(或选择现有应用程序)
  3. 转到“密钥和凭据”
  4. 注意你的 客户端ID 和 客户端密钥
  5. 在“重定向URI”下,添加: https://developer.intuit.com/v2/OAuth2Playground/RedirectUrl

2.添加到克劳德代码

添加到您的项目 .mcp.json:

{
  "mcpServers": {
    "quickbooks": {
      "command": "npx",
      "args": ["-y", "quickbooks-mcp"]
    }
  }
}

3.配置凭据

创建 ~/.quickbooks-mcp/credentials.json:

{
  "client_id": "your_client_id",
  "client_secret": "your_client_secret"
}

4.身份验证

运行Claude代码后,使用 qbo_authenticate 工具:

  1. 呼叫 qbo_authenticate 没有参数来获取授权URL
  2. 在浏览器中打开URL并授权应用程序
  3. 复制 code 和 realmId 从重定向URL
  4. 呼叫 qbo_authenticate 再次使用授权码和领域ID

您的OAuth令牌将被保存并自动刷新。


选项2:本地结账

用于开发或定制。

1.创建QuickBooks应用程序

按照上述选项1的相同步骤进行操作。

2.克隆和构建

git clone https://github.com/laf-rge/quickbooks-mcp.git
cd quickbooks-mcp
npm install
npm run build

3.添加到克劳德代码

添加到您的项目 .mcp.json:

{
  "mcpServers": {
    "quickbooks": {
      "command": "node",
      "args": ["/path/to/quickbooks-mcp/dist/index.js"]
    }
  }
}

4.配置凭据

创建 ~/.quickbooks-mcp/credentials.json 使用您的客户端凭据(与选项1相同),然后运行 qbo_authenticate 以完成OAuth流程。


选项3:AWS模式

适用于共享或生产环境。将凭据存储在AWS Secrets Manager中。

1.创建AWS资源

在秘密管理器中创建秘密:

aws secretsmanager create-secret \
  --name prod/qbo \
  --secret-string '{
    "client_id": "your_client_id",
    "client_secret": "your_client_secret",
    "access_token": "your_access_token",
    "refresh_token": "your_refresh_token",
    "redirect_url": "https://developer.intuit.com/v2/OAuth2Playground/RedirectUrl"
  }'

将公司ID存储在SSM参数存储中:

aws ssm put-parameter \
  --name /prod/qbo/company_id \
  --value "your_company_id" \
  --type SecureString

2.配置服务器

创建一个 .env quickbooks-mcp目录中的文件:

QBO_CREDENTIAL_MODE=aws
AWS_REGION=us-east-2
QBO_SECRET_NAME=prod/qbo
QBO_COMPANY_ID_PARAM=/prod/qbo/company_id

备注:由于a 已知的克劳德代码错误,环境变量来自 .mcp.json 不能可靠地传递给MCP服务器。这 .env 需要文件解决方法。

3.添加到克劳德代码

{
  "mcpServers": {
    "quickbooks": {
      "command": "node",
      "args": ["/path/to/quickbooks-mcp/dist/index.js"]
    }
  }
}

4.IAM权限

服务器需要以下AWS权限:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue",
        "secretsmanager:PutSecretValue"
      ],
      "Resource": "arn:aws:secretsmanager:*:*:secret:prod/qbo*"
    },
    {
      "Effect": "Allow",
      "Action": ["ssm:GetParameter"],
      "Resource": "arn:aws:ssm:*:*:parameter/prod/qbo/*"
    }
  ]
}

内联输出模式

默认情况下,大型响应(报告、查询结果)将写入 /tmp 文件,服务器返回文件路径。这在终端环境中适用于Claude Code,但会中断 克劳德桌面版 和 插件环境 模型无法从中读取 /tmp.

集 QBO_INLINE_OUTPUT=true 以内联方式返回所有响应。

选项A——通过 .env 文件 (建议本地结账):

创建一个 .env quickbooks-mcp目录中的文件:

QBO_INLINE_OUTPUT=true

选项B——通过 .mcp.json env块 (建议NPM安装):

{
  "mcpServers": {
    "quickbooks": {
      "command": "npx",
      "args": ["-y", "quickbooks-mcp"],
      "env": {
        "QBO_CREDENTIAL_MODE": "local",
        "QBO_CREDENTIAL_FILE": "~/.quickbooks-mcp/credentials.json",
        "QBO_INLINE_OUTPUT": "true"
      }
    }
  }
}

备注:由于a 已知的克劳德代码错误,环境变量来自 .mcp.json 在某些配置中不能可靠地传递给MCP服务器。如果选项B不起作用,请使用 .env 文件解决方法。


环境变量

变量 默认值 描述
QBO_CREDENTIAL_MODE local 凭证存储: local 或 aws
QBO_CLIENT_ID - QuickBooks应用程序客户端ID(本地模式)
QBO_CLIENT_SECRET - QuickBooks应用程序客户端密码(本地模式)
QBO_CREDENTIAL_FILE ~/.quickbooks-mcp/credentials.json 自定义凭据文件路径
QBO_INLINE_OUTPUT false 内联返回响应,而不是写入 /tmp 文件夹。在使用Claude Desktop或插件环境时,如果模型无法访问基于文件的输出,则需要此项。
QBO_SANDBOX false 使用QuickBooks沙盒环境
AWS_REGION us-east-2 AWS区域(AWS模式)
QBO_SECRET_NAME prod/qbo 秘密管理器秘密名称(aws模式)
QBO_COMPANY_ID_PARAM /prod/qbo/company_id SSM参数路径(aws模式)

可用工具

工具 说明
设置
qbo_authenticate 设置OAuth凭据(仅限本地模式)
get_company_info 获取关联公司信息
查询和报告
query 对任何QuickBooks实体运行类似SQL的查询
list_accounts 带过滤的科目表列表
get_profit_loss 损益表(按月、部门、类别等)
get_balance_sheet 资产负债表报告
get_trial_balance 试算平衡报告
get_profit_loss_detail 详细的损益表,包括每笔交易(日期、收款人、金额、备忘录)
get_transaction_list 所有交易的简单列表——可按部门、账户、类型过滤。涵盖损益表和资产负债表
get_general_ledger_detail 按账户组织的交易级详细信息——可按部门过滤。涵盖损益表和资产负债表
query_account_transactions 影响特定账户的所有交易
account_period_summary 账户的期间摘要(期初/期末余额、借记、贷记、计数)
日记账分录
create_journal_entry 创建日记账分录(验证借记=贷记)
get_journal_entry 按ID获取日记条目
edit_journal_entry 修改现有日记账分录
账单
create_bill 创建供应商账单
get_bill 按ID取账单
edit_bill 修改现有账单
开支
create_expense 创建支出(现金、支票或信用卡)
get_expense 按ID提取费用
edit_expense 修改现有费用
销售收据
create_sales_receipt 创建带有物料行的销售收据
get_sales_receipt 按ID获取销售收据
edit_sales_receipt 修改现有销售收据
发票
create_invoice 创建包含项目行的发票(客户要求)
get_invoice 按ID获取发票
edit_invoice 修改现有发票
存款
create_deposit 创建银行存款
get_deposit 按ID提取存款
edit_deposit 修改现有存款
供应商信用
create_vendor_credit 创建供应商信用
get_vendor_credit 按ID获取供应商信用
edit_vendor_credit 修改现有供应商信用
删除
delete_entity 删除任何交易记录(日记账分录、账单、发票、存款、销售收据、费用、供应商信用)

令牌刷新

服务器会在每次请求时自动刷新OAuth令牌,并将其持久化回您的凭据存储(本地文件或AWS Secrets Manager)。


发展

npm run dev      # Run in development mode
npm run build    # Build
npm run typecheck # Type check

故障排除

“未配置QuickBooks凭据”

跑 qbo_authenticate 用于设置OAuth凭据的工具(仅限本地模式)。

“授权码已过期”

授权码仅在几分钟内有效。再次启动OAuth流程。

令牌刷新失败

  • 检查您的刷新令牌是否未过期(约100天)
  • 验证您的客户端凭据是否正确
  • 尝试重新验证 qbo_authenticate

AWS凭据错误

  • 确保 .env 文件具有 QBO_CREDENTIAL_MODE=aws
  • 检查您的AWS凭据和权限
  • 验证密钥和参数名称是否与您的配置匹配