MCP Directory

How to add QuickBooks Online MCP Server to Windsurf

Intuit's official local MCP server exposing QuickBooks Online accounting data as callable tools. Paste the config into ~/.codeium/windsurf/mcp_config.json and restart Windsurf.

Last updated June 15, 2026 · 280 · stdio · oauth · official

Windsurf config for QuickBooks Online MCP Server

git clone https://github.com/intuit/quickbooks-online-mcp-server && npm install && npm run build && node dist/index.js
{
  "mcpServers": {
    "quickbooks-online-mcp-server": {
      "command": "node",
      "args": [
        "/absolute/path/to/quickbooks-online-mcp-server/dist/index.js"
      ],
      "env": {
        "QUICKBOOKS_REALM_ID": "<your-qbo-realm-id>",
        "QUICKBOOKS_CLIENT_ID": "<your-qbo-client-id>",
        "QUICKBOOKS_ENVIRONMENT": "sandbox",
        "QUICKBOOKS_CLIENT_SECRET": "<your-qbo-client-secret>",
        "QUICKBOOKS_REFRESH_TOKEN": "<your-qbo-refresh-token>"
      }
    }
  }
}

Setup steps

  1. 1Open Windsurf → Cascade → the hammer/MCP icon → Configure (or edit ~/.codeium/windsurf/mcp_config.json).
  2. 2Paste the QuickBooks Online MCP Server config below.
  3. 3Fill in placeholder secrets, then save.
  4. 4Click Refresh in the MCP panel.
  5. 5QuickBooks Online MCP Server's tools become available to Cascade.

Before you start

  • Node.js 18 or higher
  • A QuickBooks (Intuit) Developer account and an app created in the Intuit Developer Portal
  • OAuth 2.0 credentials from the app's Keys & Credentials page: Client ID and Client Secret
  • A Realm ID (QuickBooks company ID) and a refresh token obtained via the included OAuth handshake
  • An MCP-compatible client such as Claude Desktop

What QuickBooks Online MCP Server can do in Windsurf

get_* / search_* (read)

Read and query tools for ~29 entity types including customers, invoices, bills, vendors, accounts, items, and journal entries.

create_* (write)

Create entities such as customers, invoices, bills, vendors, and payments; can be disabled via QUICKBOOKS_DISABLE_WRITE.

update_* (update)

Update supported entities; can be disabled via QUICKBOOKS_DISABLE_UPDATE.

delete_* (delete)

Delete supported entities; can be disabled via QUICKBOOKS_DISABLE_DELETE.

get_balance_sheet

Generates the Balance Sheet financial report.

get_profit_and_loss

Generates the Profit & Loss financial report.

get_cash_flow

Generates the Cash Flow statement.

get_trial_balance

Generates the Trial Balance report.

Security

Connects to live accounting data via OAuth 2.0 refresh tokens; keep client secret and refresh token out of source control and start in the sandbox environment. Write operations can alter real ledgers, so use the write-disable flags or review tool permissions.

QuickBooks Online MCP Server + Windsurf FAQ

Where is the Windsurf config file?

Windsurf reads MCP servers from ~/.codeium/windsurf/mcp_config.json. Paste the QuickBooks Online MCP Server config there under the "mcpServers" key and restart the client.

Is QuickBooks Online MCP Server safe to use with Windsurf?

Connects to live accounting data via OAuth 2.0 refresh tokens; keep client secret and refresh token out of source control and start in the sandbox environment. Write operations can alter real ledgers, so use the write-disable flags or review tool permissions.

Does it support production QuickBooks or only the Sandbox?

As an early-preview release the local server is intended to run against the QuickBooks Sandbox environment. You select the environment in your `.env`, but production support is limited during preview.

How does authentication work?

It uses OAuth 2.0. You create an app in the Intuit Developer Portal, then run `npm run auth` for a browser sign-in that returns a refresh token used together with your Client ID, Client Secret, and Realm ID.

Can I prevent it from modifying my books?

Yes. Set QUICKBOOKS_DISABLE_WRITE, QUICKBOOKS_DISABLE_UPDATE, and QUICKBOOKS_DISABLE_DELETE to disable the create/update/delete tool categories, leaving only read access.

View repo Full QuickBooks Online MCP Server page