ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Klavis QuickBooks MCP Server 实战指南:让 AI Agent 通过 OAuth 安全操作 QuickBooks 会计数据

Klavis QuickBooks MCP Server 实战指南:让 AI Agent 通过 OAuth 安全操作 QuickBooks 会计数据 Klavis QuickBooks MCP Server 实战指南让 AI Agent 通过 OAuth 安全操作 QuickBooks 会计数据【免费下载链接】klavisKlavis AI: MCP integration platforms that let AI agents use tools reliably at any scale项目地址: https://gitcode.com/GitHub_Trending/kl/klavisQuickBooks MCP Server 是 Klavis AI 仓库中基于 Model Context ProtocolMCP实现的 QuickBooks 集成服务器它把 QuickBooks 的账户、发票、客户、付款与供应商管理能力封装成标准化 MCP 工具供各类 AI Agent 直接调用。本文以 mcp_servers/quickbooks/README.md 为主线结合仓库源码完整讲解其快速启动、OAuth 认证接入、34 个业务工具、双传输协议架构与数据映射原理读完即可在生产或沙箱环境将 QuickBooks 接入你的 Agent 工作流。QuickBooks MCP Server 是什么QuickBooks 是企业财务软件其官方 API 采用 OAuth 2.0 认证并依赖 realm公司账本上下文调用门槛较高。本仓库的 QuickBooks MCP Server 通过 MCP 协议将 QuickBooks API 包装成 AI Agent 可直接理解的工具集合核心能力包括Invoice Management创建、读取、更新、删除、发送邮件、作废发票Customer Management管理客户与供应商信息支持启用/停用与多维检索Financial Reporting访问科目表Chart of Accounts与账户余额等会计数据Transaction Processing处理付款与财务交易Tax Operations配合 TaxCodeRef、Taxable 等字段管理税务计算与上报所需信息。服务端基于 Python 的官方mcpSDK 构建依赖版本见 requirements.txtmcp[cli]1.11.0、fastapi、uvicorn、starlette、httpx同时支持SSE与Streamable HTTP两种 MCP 传输方式兼顾传统流式连接与无状态 HTTP 调用场景。30 秒快速启动托管服务与 Docker 自托管两条路径README 提供了两种部署方式分别面向「生产托管」与「自托管」场景。路径一Klavis 托管服务生产推荐零搭建无需自行维护服务器通过 Klavis SDK 直接创建 QuickBooks server 实例pip install klavis # 或 npm install klavisfrom klavis import Klavis klavis Klavis(api_keyyour-free-key) server klavis.mcp_server.create_server_instance(QUICKBOOKS, user123)其中QUICKBOOKS为服务类型标识user123为用户/租户标识。该方式由托管基础设施负责 OAuth 流程客户端只需持有 API Key。路径二Docker 自托管拉取官方镜像并运行docker pull ghcr.io/klavis-ai/quickbooks-mcp-server:latest # 方式 A通过 Klavis AI 处理 OAuth推荐 docker run -p 5000:5000 -e KLAVIS_API_KEY$KLAVIS_API_KEY \ ghcr.io/klavis-ai/quickbooks-mcp-server:latest # 方式 B不带 OAuth 支持直接注入 QuickBooks 访问令牌 docker run -p 5000:5000 -e AUTH_DATA{access_token:your_quickbooks_access_token_here} \ ghcr.io/klavis-ai/quickbooks-mcp-server:latest两种方式都默认监听宿主机5000端口。方式 A 将 OAuth 流程交给 Klavis AI 处理方式 B 则通过AUTH_DATA环境变量直接传入已获取的access_token。注意QuickBooks 强制要求 OAuth 认证因此生产环境务必走方式 A 的完整 OAuth 流程方式 B 仅适合已持有令牌的集成场景。凭据管理从 OAuth 令牌到多租户会话连接 QuickBooks 需要三个关键凭据access_tokenOAuth 访问令牌、realm_idQuickBooks 公司账本 ID、environmentproduction或sandbox。源码 session_manager.py 与 tools/http_client.py 展示了完整的多级凭据注入机制。凭据注入的四个来源按优先级请求参数调用工具时直接在 arguments 中携带qb_access_token、qb_realm_id、qb_environment见 server.pyHTTP 请求头SSE 与 Streamable HTTP 两种传输下均可通过x-auth-data头传递Base64 编码的 JSON由SessionManager.extract_credentials_from_headers解码解析见 session_manager.py例如base64({access_token:...,realm_id:...,environment:production})环境变量QB_ACCESS_TOKEN、QB_REALM_ID、QB_ENVIRONMENT或 README 中展示的AUTH_DATAJSON 字符串默认会话SessionManager在启动时尝试用环境变量创建默认会话若成功则无凭据请求自动回落见 session_manager.py。会话缓存与租户隔离SessionManager以access_token_realm_id_environment拼接作为会话键create_session_key见 session_manager.py对相同凭据复用QuickBooksSession每个会话内部持有独立的httpx.AsyncClient与各业务 Manager。call_tool中若某次请求缺少全部凭据会先尝试从请求头注入的上下文变量qb_credentials_context取值见 server.py实现同一连接内凭据的延续。服务关闭时cleanup()会关闭所有会话并释放连接见 session_manager.py。34 个业务工具全景README 将能力归纳为五大类源码将其落地为34 个 MCP 工具由list_tools汇总注册见 server.py。所有工具名统一使用quickbooks_前缀便于 Agent 识别与路由。科目管理5 个— tools/accounts.py工具说明关键参数quickbooks_create_account创建科目name必填name、typeBank / Accounts Receivable / Expense / Income 等 16 种科目类型quickbooks_get_account按 ID 查询科目idquickbooks_list_accounts列出科目表默认仅活跃科目max_results默认 100、type、active_onlyquickbooks_update_account更新科目自动获取 SyncTokenid、name、description、is_activequickbooks_search_accounts多维检索name部分匹配、classification、currency、创建/更新日期区间、分页发票管理8 个— tools/invoices.pyquickbooks_create_invoice必填customer_id与line_items行项目line item支持sales_item、description_only、discount、subtotal四种类型字段包括amount、quantity、unit_price、discount_rate、tax_code_id等。其余工具覆盖按 ID 查询、分页列表、多条件检索date_from/date_to、min_amount/max_amount、min_balance/max_balance、账单/收货地址过滤、更新、永久删除、邮件发送quickbooks_send_invoice可指定send_to与作废quickbooks_void_invoice金额清零并标记 Voided。更新、删除、作废操作均会先自动拉取当前SyncToken再提交避免并发冲突。客户管理7 个— tools/customers.pyquickbooks_create_customer支持display_name、姓名拆分、company、email、phone、website、账单/收货地址、is_taxable、currency、payment_method_id、tax_code_id以及写时生效的期初余额balanceopen_balance_date。另提供启停用工具quickbooks_activate_customer/quickbooks_deactivate_customer通过翻转Active标志实现见 customers.py和强大的quickbooks_search_customers支持姓名/邮箱/电话部分匹配、地址精确过滤、余额区间过滤。付款管理8 个— tools/payments.pyquickbooks_create_payment、get_payment、list_payments、search_payments、update_payment、delete_payment、send_payment、void_payment覆盖收款记录的完整生命周期与发票工具形成「开票 → 收款 → 对账」闭环。供应商管理7 个— tools/vendors.pyquickbooks_create_vendor、get_vendor、list_vendors、search_vendors、update_vendor、activate_vendor、deactivate_vendor管理与采购、应付账款相关的供应商数据。工具调用统一入口所有工具在call_tool中通过tool_map分发到对应 Manager见 server.py未知工具名会返回Unknown tool文本响应单对象结果以key: value多行文本返回列表结果为空时返回No results found.见 server.py。双传输协议与命令行参数服务端基于 Starlette uvicorn 构建见 server.py同时暴露两个 MCP 端点SSE 端点GET http://localhost:5000/sse配合POST /messages/回传通道Streamable HTTP 端点POST http://localhost:5000/mcp以无状态模式statelessTrue运行适合无长连接场景。命令行参数click CLI参数默认值说明--port5000可由环境变量QB_MCP_SERVER_PORT覆盖HTTP 监听端口--log-levelINFO日志级别DEBUG / INFO / WARNING / ERROR / CRITICAL--json-response关闭启用后 Streamable HTTP 返回 JSON 而非 SSE 流本地直接启动命令python server.py --port 5000 --log-level DEBUG数据模型映射友好的 snake_case 与 QuickBooks API 之间的桥接QuickBooks API 使用驼峰命名如TxnDate、CustomerRef、BillAddr.Line1对 Agent 不够直观。本服务器在每个业务模块中实现了双向转换函数例如发票模块的 mcp_object_to_invoice_dataMCP 入参 → QuickBooks 结构与 invoice_data_to_mcp_object响应 → 简化结构invoice_number→DocNumberdate→TxnDatedue_date→DueDatecustomer_id→CustomerRef.valuecurrency→CurrencyRef.valuebill_email→BillEmail.Addresscustomer_memo→CustomerMemo.value行项目type→DetailTypesales_item→SalesItemLineDetail等地址字段统一映射为BillAddr/ShipAddr的Line1/Line2/City/CountrySubDivisionCode/PostalCode/Country。出参方向则把TotalAmt归一为total、Balance归一为balance_due把嵌套地址折叠为billing_address.street/city/...等易读结构并附带created_at、updated_at时间戳使 Agent 无需了解 QuickBooks 原始 JSON 即可完成业务操作。科目、客户、付款、供应商模块采用同样的映射模式。底层 HTTP 客户端与错误处理tools/http_client.py 基于httpx.AsyncClient实现要点如下环境分流environment为sandbox时请求https://sandbox-quickbooks.api.intuit.com否则请求生产域名https://quickbooks.api.intuit.com见 http_client.pyAPI 版本所有请求自动附加minorversion75参数鉴权头Authorization: Bearer access_tokenContent-Type 为application/jsonURL 模板{base_url}/v3/company/{company_id}/{endpoint}company_id即 realm_id错误封装HTTP 异常统一包装为QuickBooksError保留原始响应状态码与 JSON 体便于定位问题见 errors.py。容器化构建细节Dockerfile 采用python:3.12-slim基础镜像先复制requirements.txt安装依赖以利用 Docker 缓存层再复制server.py、errors.py、session_manager.py及tools/目录暴露5000端口启动命令为python server.py。自托管时可通过环境变量注入AUTH_DATA、QB_ACCESS_TOKEN、QB_REALM_ID、QB_ENVIRONMENT完成配置。快速接入建议开发/联调阶段优先使用sandbox环境QB_ENVIRONMENTsandbox配合 Docker 与AUTH_DATA快速验证工具调用链生产阶段采用托管服务或KLAVIS_API_KEY走完整 OAuth 流程避免在环境变量中长期暴露裸令牌多租户场景利用x-auth-data请求头按连接注入不同租户凭据SessionManager会自动按凭据组合缓存并隔离会话MCP 客户端接入SSE 模式使用/sse端点Streamable HTTP 模式使用/mcp端点按 MCP 规范完成 initialize 握手后即可列出并调用上述 34 个quickbooks_*工具。更多信息可参阅仓库根目录的 CONTRIBUTING.md 与 LICENSEApache 2.0。本文所有源码细节均可在 mcp_servers/quickbooks 目录下复核验证。【免费下载链接】klavisKlavis AI: MCP integration platforms that let AI agents use tools reliably at any scale项目地址: https://gitcode.com/GitHub_Trending/kl/klavis创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表