QuickBooks Online MCP
Provides tools for interacting with QuickBooks Online, enabling reading invoices, looking up customers and items, and creating invoices.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@QuickBooks Online MCPCreate invoice for ACME Corp for 10 hours consulting"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
QuickBooks Online MCP
A FastMCP server that exposes QuickBooks Online operations (read invoices, look up customers/items, and create invoices) over streamable HTTP with static bearer-token auth.
What's here
src/qbo_mcp/config.py— typed env-var settings.src/qbo_mcp/token_store.py— Upstash Redis REST persistence for the OAuth token bundle.src/qbo_mcp/qbo_client.py— async QBO API client (generic transport) with auto-refresh, refresh-token rotation, retry-on-401, rate-limit + Fault handling, and the id/date/escape validators.src/qbo_mcp/service.py—QBOService, the business layer that builds validated/escaped queries and invoice payloads on top of the client.src/qbo_mcp/server.py— root FastMCP server (bearer auth +/health) thatmounts the per-entity tool sub-servers insrc/qbo_mcp/tools/.scripts/bootstrap_oauth.py— one-time OAuth flow.scripts/smoke_test.py— verifies tokens + connectivity.
Related MCP server: QuickBooks Online MCP Server
Tools
Tool | Purpose |
| Find active customers by partial display name → |
| List active catalog items (Service/NonInventory/Inventory) → |
| A customer's invoices (status |
| Full detail of one invoice by its human-facing document number, with a deep link. |
| Create an invoice; each line's |
Workflow the docstrings teach the LLM: search_customers → list_items →
confirm lines with the user → create_invoice.
Prerequisites
Python 3.12
1. Create an Intuit developer app
Sign in at https://developer.intuit.com and create a new app under "QuickBooks Online and Payments".
Enable the
com.intuit.quickbooks.accountingscope.Under Keys & OAuth, copy the Client ID and Client Secret (use the Development keys for the sandbox).
Add this redirect URI:
http://localhost:8000/callback.
2. Create an Upstash Redis database
Sign in at https://console.upstash.com and create a Redis database.
From the database's REST section, copy the REST URL and REST Token.
3. Configure environment
cp .env.example .env
# Fill in INTUIT_CLIENT_ID, INTUIT_CLIENT_SECRET, UPSTASH_REDIS_REST_URL,
# UPSTASH_REDIS_REST_TOKEN, MCP_BEARER_TOKEN.
# Leave QBO_REALM_ID blank — the bootstrap step prints it.4. Install dependencies
uv sync5. Authorize against QBO
uv run python scripts/bootstrap_oauth.pyA browser tab opens for Intuit consent. When it completes, the script prints something like:
realmId=9341454... — set QBO_REALM_ID=9341454... in .envPaste that value into .env.
6. Smoke test
uv run python scripts/smoke_test.pyExpected output: Company: <your sandbox company name>.
7. Run the MCP server
uv run python -m qbo_mcp.server # serves on 0.0.0.0:$PORT (default 8080)MCP endpoint:
http://localhost:8080/mcp(streamable HTTP), authenticated withAuthorization: Bearer <MCP_BEARER_TOKEN>.Unauthenticated
GET /healthreturnsok(for health checks).
Connect from Claude Code:
claude mcp add --transport http qbo http://localhost:8080/mcp \
--header "Authorization: Bearer <MCP_BEARER_TOKEN>"Or inspect it with the MCP Inspector
(npx @modelcontextprotocol/inspector) → Transport "Streamable HTTP" → URL
http://localhost:8080/mcp → header Authorization: Bearer <MCP_BEARER_TOKEN>.
Docker / Render deployment
The server ships as a container (self-hosted as a Docker image on Render). The image is a
multi-stage uv build on python:3.12-slim, runs as a non-root user, and bakes in no
config — every secret/setting is supplied at runtime via env vars (the same ones listed in
.env.example). It honors $PORT (Render injects it; defaults to 8080) and serves the
unauthenticated GET /health route for Render's health probe.
Build the image:
docker build -t quickbooks-online-mcp .Run locally with Docker Compose, mirroring the Render runtime — config comes from a local env file (never committed):
docker compose up --build # bearer mode (reads .env)
ENV_FILE=.env.oauth docker compose up --build # oauth mode
PORT=9090 docker compose up --build # custom port, as Render injects $PORTThen GET /health and the /mcp endpoint are served on $PORT exactly as the uv run
path above (e.g. curl localhost:8080/health → ok; connect an MCP client to
http://localhost:8080/mcp).
CI builds and publishes the image to GitHub Container Registry at
ghcr.io/ashcir/quickbooks-online-mcp (tagged :latest plus a sha-<commit> tag). On
Render, deploy from that image and enter the runtime env vars (auth mode + QBO/Upstash
credentials) as encrypted dashboard settings — no .env* is part of the image.
Tests
uv run pytest -qProject layout
src/qbo_mcp/ # config, token_store, qbo_client, service, server
src/qbo_mcp/tools/ # per-entity FastMCP sub-servers mounted by server.py
scripts/ # bootstrap + smoke test
tests/ # pytest suite (mocked httpx)This server cannot be deployed
Maintenance
Related MCP Connectors
QuickBooks MCP Pack — query customers, invoices, and accounts via QuickBooks Online API.
QuickBooks Online in Claude and ChatGPT: 221 tools, full ledger, multi-company, Canada + US, FR/EN.
Connect Claude or Cursor to books, invoices, bills, payroll, and sealed closes.
Bookkeeping for owner-operated businesses. Query transactions, invoices, and reports.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables interaction with QuickBooks Online through OAuth authentication. Supports CRUD operations for financial entities like customers, invoices, bills, estimates, and accounting records through natural language.1-
- AlicenseAqualityDmaintenanceEnables AI assistants to query and manage QuickBooks Online data through natural language, including customers, invoices, bills, vendors, accounts, and financial reports.7MIT
- AlicenseNot gradedqualityDmaintenanceConnects AI assistants to QuickBooks Online, enabling management of invoices, customers, expenses, and reports through natural language.MIT
- AlicenseAqualityAmaintenanceEnables financial professionals to interact with QuickBooks Online using natural language for reports, journal entries, bills, expenses, and more.36185 npm13MIT