MCP Ecommerce

Installation guide

How to install QuickBooks Online MCP Server

In Claude, ChatGPT, Gemini, Microsoft Copilot, Perplexity, Cursor and Claude Code, with what to check before you start and the first prompts to run.

This is a local server. You clone Intuit's repository, build it with `npm`, and your MCP client starts it as a stdio subprocess with `node`. It authenticates to one QuickBooks Online company using the OAuth 2.0 credentials of an app you register on the Intuit Developer Portal, plus a refresh token from a one-time browser handshake. There is no hosted URL to add.

Have a developer who can register Intuit apps and who has access to the target QuickBooks company do the setup. Start with a sandbox company. Writes are enabled by default, so set the three disable flags before connecting any assistant. The listing marks this server as preview, and production needs a public HTTPS OAuth callback for the first authorization.

QuickBooks Online MCP Server setup guide: Intuit's MCP documentation page on github.com, shown in a browser frame (payments MCP server for e-commerce)
QuickBooks Online MCP Server setup guide preview: Intuit’s documentation on github.com, captured Oct 13, 2026. The page may have changed since; the link opens the live version.

Before you start

  • An Intuit Developer Portal account with an app created (Client ID and Client Secret from Keys & Credentials, Development keys for the sandbox)
  • A sandbox company (Sandbox menu in the developer portal) for the first run, and later an admin sign-in to the real QuickBooks company
  • Node.js with npm, and git, to clone, install and build the repository
  • The redirect URI http://localhost:8000/callback added in the app under Settings > Redirect URIs for sandbox. For production, a public HTTPS callback such as an ngrok tunnel
  • The absolute path to the built dist/index.js file on the machine that runs your MCP client
How it runs
Local, runs on your machine
Access
Read and write
Server address
Copy it from the vendor documentation

QuickBooks Online MCP Server in Claude

  1. Complete the shared setup first: register the Intuit app, clone the repository from https://github.com/intuit/quickbooks-online-mcp-server, run npm install and npm run build, copy .env.example to .env and fill in the values.
  2. In .env, set QUICKBOOKS_DISABLE_WRITE=true, QUICKBOOKS_DISABLE_UPDATE=true and QUICKBOOKS_DISABLE_DELETE=true for a read-only setup, and set QUICKBOOKS_ENVIRONMENT=sandbox.
  3. Run npm run auth in the repository. Your browser opens, you sign in to the sandbox company, and the tokens are saved to .env.
  4. Open the Claude Desktop config file through Settings > Developer > Edit Config and add the quickbooks entry from the snippet. Use the absolute path to your dist/index.js. The docs do not describe Claude Desktop setup in detail, so this uses the standard mcpServers format with the docs' command and env values.
  5. Fully quit and restart Claude Desktop, then check that the quickbooks server is listed with read tools only.
  6. Claude.ai on the web cannot start a local stdio server. Use the Claude Desktop app for this server.
claude_desktop_config.json
{
  "mcpServers": {
    "quickbooks": {
      "command": "node",
      "args": [
        "/absolute/path/to/repo/dist/index.js"
      ],
      "env": {
        "QUICKBOOKS_CLIENT_ID": "<YOUR_CLIENT_ID>",
        "QUICKBOOKS_CLIENT_SECRET": "<YOUR_CLIENT_SECRET>",
        "QUICKBOOKS_REFRESH_TOKEN": "<YOUR_REFRESH_TOKEN>",
        "QUICKBOOKS_REALM_ID": "<YOUR_REALM_ID>",
        "QUICKBOOKS_ENVIRONMENT": "sandbox",
        "QUICKBOOKS_DISABLE_WRITE": "true",
        "QUICKBOOKS_DISABLE_UPDATE": "true",
        "QUICKBOOKS_DISABLE_DELETE": "true"
      }
    }
  }
}

QuickBooks Online MCP Server in ChatGPT

  1. The documentation does not cover ChatGPT. This server runs as a local stdio process and has no public URL.
  2. ChatGPT connectors in Developer mode add custom MCP servers by remote URL, so they cannot start node dist/index.js directly.
  3. Do not expose the server publicly just to reach ChatGPT. It holds OAuth credentials for a financial system and the docs describe no remote hosting.
  4. Use a client that can run a local command instead, such as Claude Code, Cursor or Claude Desktop.
  5. If you need ChatGPT access, check the vendor repository for any remote or hosted option before building your own wrapper.

QuickBooks Online MCP Server in Gemini

  1. Complete the shared setup first: register the Intuit app, clone the repository, run npm install and npm run build, and fill in .env.
  2. Set the three QUICKBOOKS_DISABLE_* flags to true and run npm run auth against a sandbox company.
  3. The docs do not cover Gemini. For Gemini CLI, open its settings.json and add the entry under mcpServers using the standard command format.
  4. Use node as the command and the absolute path to dist/index.js as the argument. Pass the same env values as in the docs' Claude Code example.
  5. Restart Gemini CLI and list the MCP servers to confirm quickbooks loads. Gemini app extensions are not covered by the docs.
Gemini CLI settings.json
{
  "mcpServers": {
    "quickbooks": {
      "command": "node",
      "args": [
        "/absolute/path/to/repo/dist/index.js"
      ],
      "env": {
        "QUICKBOOKS_CLIENT_ID": "<YOUR_CLIENT_ID>",
        "QUICKBOOKS_CLIENT_SECRET": "<YOUR_CLIENT_SECRET>",
        "QUICKBOOKS_REFRESH_TOKEN": "<YOUR_REFRESH_TOKEN>",
        "QUICKBOOKS_REALM_ID": "<YOUR_REALM_ID>",
        "QUICKBOOKS_ENVIRONMENT": "sandbox",
        "QUICKBOOKS_DISABLE_WRITE": "true",
        "QUICKBOOKS_DISABLE_UPDATE": "true",
        "QUICKBOOKS_DISABLE_DELETE": "true"
      }
    }
  }
}

QuickBooks Online MCP Server in Microsoft Copilot

  1. The documentation does not cover Microsoft Copilot. Copilot Studio adds MCP tools by remote URL, so it cannot run this local stdio server.
  2. For GitHub Copilot in VS Code, finish the shared setup first: Intuit app, npm install, npm run build, .env, the three QUICKBOOKS_DISABLE_* flags set to true, and npm run auth on a sandbox company.
  3. Create or open .vscode/mcp.json in your workspace. VS Code uses a top-level servers object.
  4. Add a quickbooks entry that runs node with the absolute path to dist/index.js, and pass the env values from the docs' example.
  5. Save the file, start the server from the MCP controls in VS Code, and confirm it lists tools in Copilot Chat agent mode.
.vscode/mcp.json
{
  "servers": {
    "quickbooks": {
      "command": "node",
      "args": [
        "/absolute/path/to/repo/dist/index.js"
      ],
      "env": {
        "QUICKBOOKS_CLIENT_ID": "<YOUR_CLIENT_ID>",
        "QUICKBOOKS_CLIENT_SECRET": "<YOUR_CLIENT_SECRET>",
        "QUICKBOOKS_REFRESH_TOKEN": "<YOUR_REFRESH_TOKEN>",
        "QUICKBOOKS_REALM_ID": "<YOUR_REALM_ID>",
        "QUICKBOOKS_ENVIRONMENT": "sandbox",
        "QUICKBOOKS_DISABLE_WRITE": "true",
        "QUICKBOOKS_DISABLE_UPDATE": "true",
        "QUICKBOOKS_DISABLE_DELETE": "true"
      }
    }
  }
}

QuickBooks Online MCP Server in Perplexity

  1. The documentation does not cover Perplexity.
  2. Perplexity desktop app connectors are set up in the app's connector settings. Check whether your version supports adding a local command-based MCP server.
  3. If it does, enter node as the command and the absolute path to your built dist/index.js as the argument. Add the env values from the docs' example, with the three QUICKBOOKS_DISABLE_* flags set to true.
  4. If it only accepts a remote URL, this server cannot be added there because it has no hosted endpoint.
  5. Complete npm run auth against a sandbox company before you try to connect.

QuickBooks Online MCP Server in Cursor

  1. Complete the shared setup first: register the Intuit app, clone the repository, run npm install and npm run build, and fill in .env.
  2. Set the three QUICKBOOKS_DISABLE_* flags to true and run npm run auth against a sandbox company.
  3. Open Cursor's MCP settings (Settings > MCP) or edit ~/.cursor/mcp.json for all projects, or .cursor/mcp.json in one project. The docs do not cover Cursor, so this uses the standard mcpServers format.
  4. Add the quickbooks entry from the snippet with the absolute path to dist/index.js.
  5. Reload Cursor and check that the server shows as enabled with its read tools.
mcp.json
{
  "mcpServers": {
    "quickbooks": {
      "command": "node",
      "args": [
        "/absolute/path/to/repo/dist/index.js"
      ],
      "env": {
        "QUICKBOOKS_CLIENT_ID": "<YOUR_CLIENT_ID>",
        "QUICKBOOKS_CLIENT_SECRET": "<YOUR_CLIENT_SECRET>",
        "QUICKBOOKS_REFRESH_TOKEN": "<YOUR_REFRESH_TOKEN>",
        "QUICKBOOKS_REALM_ID": "<YOUR_REALM_ID>",
        "QUICKBOOKS_ENVIRONMENT": "sandbox",
        "QUICKBOOKS_DISABLE_WRITE": "true",
        "QUICKBOOKS_DISABLE_UPDATE": "true",
        "QUICKBOOKS_DISABLE_DELETE": "true"
      }
    }
  }
}

QuickBooks Online MCP Server in Claude Code

  1. Clone the repository from https://github.com/intuit/quickbooks-online-mcp-server, then run npm install and npm run build.
  2. Copy .env.example to .env and fill in QUICKBOOKS_CLIENT_ID, QUICKBOOKS_CLIENT_SECRET, QUICKBOOKS_ENVIRONMENT=sandbox, QUICKBOOKS_REFRESH_TOKEN and QUICKBOOKS_REALM_ID.
  3. Set QUICKBOOKS_DISABLE_WRITE=true, QUICKBOOKS_DISABLE_UPDATE=true and QUICKBOOKS_DISABLE_DELETE=true in .env. The server resolves .env relative to the compiled module, so it picks these up when started this way.
  4. Run npm run auth. Your browser opens, you sign in to the sandbox company, and the tokens are saved to .env.
  5. Register the server with the command in the snippet, using the absolute path to dist/index.js. The docs' own example is an mcpServers JSON block with an env section, which also works.
  6. Run claude mcp list in the terminal, or /mcp inside Claude Code, to confirm quickbooks is connected.
Terminal
claude mcp add quickbooks -- node /absolute/path/to/repo/dist/index.js

Check that it works

Start with questions that only read data. If these answer from your real account, the connection is good.

  • Get the company info for the connected QuickBooks company.
  • Run a profit and loss report for last month and summarize income and expenses.
  • Search for the five most recent invoices and list customer, date and total. Do not change anything.

Troubleshooting

+The OAuth handshake fails or my production redirect URI is rejected. What now?

Intuit rejects `http://localhost` redirect URIs in production. The docs suggest an ngrok tunnel (`ngrok http 8000`) or a small public callback handler. The registered URI must match exactly in protocol, host, port and path. For sandbox, register `http://localhost:8000/callback` and run `npm run auth` again.

+The server starts but credentials look missing, or it refuses to start. Why?

The server resolves `.env` relative to the compiled module, not your shell directory, so use current `main`. If you set `QUICKBOOKS_TOKEN_STORE_PATH`, it must be absolute and set in the host process env, not in `.env`. When it is set, the package's own `.env` is not read at all.

+I cannot see create, update or delete tools. Is something broken?

Probably not. `QUICKBOOKS_DISABLE_WRITE`, `QUICKBOOKS_DISABLE_UPDATE` and `QUICKBOOKS_DISABLE_DELETE` set to `true` stop `create_*`, `update_*` and `delete_*` tools from being registered. Read tools (`get_*`, `search_*`) always stay. Only enable writes for supervised tasks, on a sandbox company first, then restart the client.

Written Oct 13, 2026 from the vendor documentation. Exact menus, addresses and commands change; the official documentation is the source of truth.