qbo-mcp
An MCP server for QuickBooks Online that enables managing customers, vendors, invoices, bills, payments, items, and more, along with financial reports, directly from Claude.
README
qbo-mcp
A Model Context Protocol (MCP) server for the QuickBooks Online Accounting API. Manage customers, vendors, invoices, bills, payments, items, reports, and more — all from Claude.
Supports both stdio (Claude Desktop) and HTTP/SSE (Railway / remote clients).
Tools (48 total)
| Category | Tool | Description |
|---|---|---|
| Accounts | list_accounts |
Query chart of accounts with optional WHERE filter |
get_account |
Get account by ID | |
create_account |
Create a new account | |
update_account |
Sparse-update an account | |
| Customers | list_customers |
Query customers |
get_customer |
Get customer by ID | |
create_customer |
Create a new customer | |
update_customer |
Sparse-update a customer | |
| Vendors | list_vendors |
Query vendors |
get_vendor |
Get vendor by ID | |
create_vendor |
Create a new vendor | |
update_vendor |
Sparse-update a vendor | |
| Items | list_items |
Query products/services |
get_item |
Get item by ID | |
create_item |
Create a new item | |
update_item |
Sparse-update an item | |
| Invoices | list_invoices |
Query invoices |
get_invoice |
Get invoice by ID | |
create_invoice |
Create a new invoice | |
update_invoice |
Sparse-update an invoice | |
delete_invoice |
Delete/void an invoice | |
| Bills | list_bills |
Query vendor bills |
get_bill |
Get bill by ID | |
create_bill |
Create a new bill | |
update_bill |
Sparse-update a bill | |
delete_bill |
Delete a bill | |
| Payments | list_payments |
Query customer payments |
get_payment |
Get payment by ID | |
create_payment |
Record a customer payment | |
delete_payment |
Delete a payment | |
| Purchases | list_purchases |
Query purchases/expenses |
get_purchase |
Get purchase by ID | |
create_purchase |
Create a purchase/expense | |
delete_purchase |
Delete a purchase | |
| Estimates | list_estimates |
Query estimates/quotes |
get_estimate |
Get estimate by ID | |
create_estimate |
Create a new estimate | |
delete_estimate |
Delete an estimate | |
| Sales Receipts | list_sales_receipts |
Query sales receipts |
get_sales_receipt |
Get sales receipt by ID | |
create_sales_receipt |
Create a new sales receipt | |
delete_sales_receipt |
Delete a sales receipt | |
| Credit Memos | list_credit_memos |
Query credit memos |
get_credit_memo |
Get credit memo by ID | |
create_credit_memo |
Create a new credit memo | |
| Transfers | list_transfers |
Query account transfers |
get_transfer |
Get transfer by ID | |
create_transfer |
Create a funds transfer | |
| Company | get_company_info |
Get company details |
| Reports | get_profit_and_loss_report |
P&L / Income Statement |
get_balance_sheet_report |
Balance Sheet | |
get_cash_flow_report |
Cash Flow Statement | |
get_accounts_receivable_aging_report |
A/R Aging Summary | |
get_accounts_payable_aging_report |
A/P Aging Summary | |
get_trial_balance_report |
Trial Balance | |
| Query | query_qbo |
Run a custom SQL-style QBO query |
Environment Variables
| Variable | Required | Description |
|---|---|---|
QBO_REALM_ID |
Yes | Company/Realm ID from your QBO URL |
QBO_CLIENT_ID |
For refresh | OAuth 2.0 Client ID from Intuit Developer Portal |
QBO_CLIENT_SECRET |
For refresh | OAuth 2.0 Client Secret |
QBO_ACCESS_TOKEN |
Yes* | OAuth 2.0 access token (expires every 60 min) |
QBO_REFRESH_TOKEN |
Yes* | OAuth 2.0 refresh token (used for auto-renewal) |
QBO_ENVIRONMENT |
No | sandbox (default) or production |
TRANSPORT |
No | http (default) or stdio |
PORT |
No | HTTP port (default 3000) |
*Either QBO_ACCESS_TOKEN or QBO_REFRESH_TOKEN is required. For production, provide the refresh token plus client credentials for automatic token renewal.
Getting credentials
- Go to developer.intuit.com and create an app
- Under Keys & credentials, copy your
Client IDandClient Secret - Use the OAuth 2.0 Playground in the dev portal to generate an
Access TokenandRefresh Token - Your
Realm IDis in the QBO URL:qbo.intuit.com/app/homepage?...realmId=XXXXXXXXXX
Claude Desktop Configuration
Remote (Railway)
{
"mcpServers": {
"quickbooks": {
"url": "https://your-app.up.railway.app/sse"
}
}
}
Local (stdio)
{
"mcpServers": {
"quickbooks": {
"command": "node",
"args": ["/absolute/path/to/qbo-mcp/dist/index.js"],
"env": {
"TRANSPORT": "stdio",
"QBO_REALM_ID": "your-realm-id",
"QBO_ACCESS_TOKEN": "your-access-token",
"QBO_REFRESH_TOKEN": "your-refresh-token",
"QBO_CLIENT_ID": "your-client-id",
"QBO_CLIENT_SECRET": "your-client-secret",
"QBO_ENVIRONMENT": "sandbox"
}
}
}
}
Deploy to Railway
Option A — GitHub deployer (recommended)
- Push this repo to GitHub
- In Railway: New Project → Deploy from GitHub repo → select this repo
- Railway auto-detects the Dockerfile and
railway.toml - Go to Variables and set:
QBO_REALM_IDQBO_ACCESS_TOKENQBO_REFRESH_TOKENQBO_CLIENT_IDQBO_CLIENT_SECRETQBO_ENVIRONMENT→production(when ready)
- Go to Settings → Networking → Generate Domain
- Connect Claude to
https://your-app.up.railway.app/sse
Option B — Railway CLI
railway login
railway init
railway up
railway domain
Local Development
npm install
cp .env.example .env # fill in your credentials
npm run build
node dist/index.js
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.