qbo-mcp
Provides tools for managing QuickBooks Online entities such as customers, vendors, invoices, bills, payments, items, and generating reports like profit and loss, balance sheet, etc.
Click on "Install 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., "@qbo-mcpShow me the profit and loss report for last month"
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.
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 |
| Query chart of accounts with optional WHERE filter |
| Get account by ID | |
| Create a new account | |
| Sparse-update an account | |
Customers |
| Query customers |
| Get customer by ID | |
| Create a new customer | |
| Sparse-update a customer | |
Vendors |
| Query vendors |
| Get vendor by ID | |
| Create a new vendor | |
| Sparse-update a vendor | |
Items |
| Query products/services |
| Get item by ID | |
| Create a new item | |
| Sparse-update an item | |
Invoices |
| Query invoices |
| Get invoice by ID | |
| Create a new invoice | |
| Sparse-update an invoice | |
| Delete/void an invoice | |
Bills |
| Query vendor bills |
| Get bill by ID | |
| Create a new bill | |
| Sparse-update a bill | |
| Delete a bill | |
Payments |
| Query customer payments |
| Get payment by ID | |
| Record a customer payment | |
| Delete a payment | |
Purchases |
| Query purchases/expenses |
| Get purchase by ID | |
| Create a purchase/expense | |
| Delete a purchase | |
Estimates |
| Query estimates/quotes |
| Get estimate by ID | |
| Create a new estimate | |
| Delete an estimate | |
Sales Receipts |
| Query sales receipts |
| Get sales receipt by ID | |
| Create a new sales receipt | |
| Delete a sales receipt | |
Credit Memos |
| Query credit memos |
| Get credit memo by ID | |
| Create a new credit memo | |
Transfers |
| Query account transfers |
| Get transfer by ID | |
| Create a funds transfer | |
Company |
| Get company details |
Reports |
| P&L / Income Statement |
| Balance Sheet | |
| Cash Flow Statement | |
| A/R Aging Summary | |
| A/P Aging Summary | |
| Trial Balance | |
Query |
| Run a custom SQL-style QBO query |
Related MCP server: qb-mcp
Environment Variables
Variable | Required | Description |
| Yes | Company/Realm ID from your QBO URL |
| For refresh | OAuth 2.0 Client ID from Intuit Developer Portal |
| For refresh | OAuth 2.0 Client Secret |
| Yes* | OAuth 2.0 access token (expires every 60 min) |
| Yes* | OAuth 2.0 refresh token (used for auto-renewal) |
| No |
|
| No |
|
| No | HTTP port (default |
*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 SecretUse the OAuth 2.0 Playground in the dev portal to generate an
Access TokenandRefresh TokenYour
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.tomlGo 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 domainLocal Development
npm install
cp .env.example .env # fill in your credentials
npm run build
node dist/index.jsThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Gaaldaco/qbo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server