Prototipo · Versión preliminar: todos los servidores del registro oficial, sincronizados cada 30 minutos. Las reseñas y las cuentas llegarán en una etapa posterior.
PopNx MCPServidores MCP para quienes usan IA · explicados con palabras sencillas

QuickBooks Online

de wyre-technologyversión 1.6.4i★ –iSe ejecuta en tu computadora
Nombre en el registroio.github.wyre-technology/qbo-mcp

Instalar

Resumen

Descripción del creador (original en inglés)

MCP server for QuickBooks Online — accounts, customers, invoices, bills, and reports.

Los tres pilares de PopNx MCP

Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.

Qué puedes hacer con él

Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.

  • Conexión: Se ejecuta en tu computadora
  • Transporte: stdio
  • Categoría: Contabilidad, finanzas e impuestos
  • Debes completar: QBO_CLIENT_ID, QBO_CLIENT_SECRET, QBO_REFRESH_TOKEN, QBO_REALM_ID

Instalación

Elige la app de IA que usas y copia la configuración.

Antes de instalar

  • Revisiones básicas: 1 de 1 superadas
  • Se ejecuta en tu computadora con los permisos de tu usuario (archivos, red, apps).
  • Debes completar tú: QBO_CLIENT_ID, QBO_CLIENT_SECRET, QBO_REFRESH_TOKEN, QBO_REALM_ID, QBO_ENVIRONMENT, MCP_TRANSPORT, AUTH_MODE, LOG_LEVEL

Los valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.

Necesitas

¿Qué app usas?

Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.

Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json

{
  "mcpServers": {
    "qbo": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "QBO_CLIENT_ID",
        "-e",
        "QBO_CLIENT_SECRET",
        "-e",
        "QBO_REFRESH_TOKEN",
        "-e",
        "QBO_REALM_ID",
        "-e",
        "QBO_ENVIRONMENT",
        "-e",
        "MCP_TRANSPORT",
        "-e",
        "AUTH_MODE",
        "-e",
        "LOG_LEVEL",
        "ghcr.io/wyre-technology/qbo-mcp:v1.6.4"
      ],
      "env": {
        "QBO_CLIENT_ID": "your-value",
        "QBO_CLIENT_SECRET": "your-value",
        "QBO_REFRESH_TOKEN": "your-value",
        "QBO_REALM_ID": "your-value",
        "QBO_ENVIRONMENT": "your-value",
        "MCP_TRANSPORT": "your-value",
        "AUTH_MODE": "your-value",
        "LOG_LEVEL": "your-value"
      }
    }
  }
}

Ejecuta esto en tu terminal

claude mcp add qbo --env QBO_CLIENT_ID=your-value --env QBO_CLIENT_SECRET=your-value --env QBO_REFRESH_TOKEN=your-value --env QBO_REALM_ID=your-value --env QBO_ENVIRONMENT=your-value --env MCP_TRANSPORT=your-value --env AUTH_MODE=your-value --env LOG_LEVEL=your-value -- docker run -i --rm -e QBO_CLIENT_ID -e QBO_CLIENT_SECRET -e QBO_REFRESH_TOKEN -e QBO_REALM_ID -e QBO_ENVIRONMENT -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-technology/qbo-mcp:v1.6.4

Completa los valores vacíos antes de ejecutarlo.

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

{
  "mcpServers": {
    "qbo": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "QBO_CLIENT_ID",
        "-e",
        "QBO_CLIENT_SECRET",
        "-e",
        "QBO_REFRESH_TOKEN",
        "-e",
        "QBO_REALM_ID",
        "-e",
        "QBO_ENVIRONMENT",
        "-e",
        "MCP_TRANSPORT",
        "-e",
        "AUTH_MODE",
        "-e",
        "LOG_LEVEL",
        "ghcr.io/wyre-technology/qbo-mcp:v1.6.4"
      ],
      "env": {
        "QBO_CLIENT_ID": "your-value",
        "QBO_CLIENT_SECRET": "your-value",
        "QBO_REFRESH_TOKEN": "your-value",
        "QBO_REALM_ID": "your-value",
        "QBO_ENVIRONMENT": "your-value",
        "MCP_TRANSPORT": "your-value",
        "AUTH_MODE": "your-value",
        "LOG_LEVEL": "your-value"
      }
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "servers": {
    "qbo": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "QBO_CLIENT_ID",
        "-e",
        "QBO_CLIENT_SECRET",
        "-e",
        "QBO_REFRESH_TOKEN",
        "-e",
        "QBO_REALM_ID",
        "-e",
        "QBO_ENVIRONMENT",
        "-e",
        "MCP_TRANSPORT",
        "-e",
        "AUTH_MODE",
        "-e",
        "LOG_LEVEL",
        "ghcr.io/wyre-technology/qbo-mcp:v1.6.4"
      ],
      "env": {
        "QBO_CLIENT_ID": "your-value",
        "QBO_CLIENT_SECRET": "your-value",
        "QBO_REFRESH_TOKEN": "your-value",
        "QBO_REALM_ID": "your-value",
        "QBO_ENVIRONMENT": "your-value",
        "MCP_TRANSPORT": "your-value",
        "AUTH_MODE": "your-value",
        "LOG_LEVEL": "your-value"
      }
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.

Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.

Valores que debes completar

  • QBO_CLIENT_ID obligatorio env
    QuickBooks Online OAuth2 client ID from the Intuit developer app
  • QBO_CLIENT_SECRET secreto obligatorio env
    QuickBooks Online OAuth2 client secret
  • QBO_REFRESH_TOKEN secreto obligatorio env
    OAuth2 refresh token for the connected QuickBooks company
  • QBO_REALM_ID obligatorio env
    QuickBooks Online company (realm) ID
  • QBO_ENVIRONMENT env
    QuickBooks API environment: 'sandbox' or 'production'
  • MCP_TRANSPORT env
    Transport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.
  • AUTH_MODE env
    Credential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.
  • LOG_LEVEL env
    Log verbosity: debug, info, warn, error

Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.

Qué puede hacer

Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.

Revisiones básicasi

Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 8 nov 2026

  • ✓ Superada

    El creador coincide con el repo

    El nombre en el registro se verificó con la cuenta de GitHub wyre-technology, dueña del repo

  • … Aún sin revisar

    Sigue en mantenimiento

    Todavía no hemos leído este repo en GitHub

  • … Aún sin revisar

    Tiene licencia

    Todavía no hemos leído este repo en GitHub

  • – No aplica

    El endpoint responde

    Este se ejecuta en tu computadora; no hay endpoint en internet

  • – No aplica

    Inicio de sesión con OAuth

    Se ejecuta en tu computadora y usa ajustes locales en su lugar

  • … Aún sin revisar

    Sin instrucciones ocultas en las descripciones de herramientas

    Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet

Comparado con otros en Contabilidad, finanzas e impuestosi

  • Más estrellas que el 0% de los otros 2919 servidores de esta categoría
  • Publicado en el registro más recientemente que el 29% de los otros 2919 servidores de esta categoría
  • Revisiones básicas iguales o mejores que el 100% de los otros 2919 servidores de esta categoría

Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.

Preguntas frecuentes

¿Es seguro QuickBooks Online?

Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.

¿Qué claves o códigos necesita?

Debes completar: QBO_CLIENT_ID, QBO_CLIENT_SECRET, QBO_REFRESH_TOKEN, QBO_REALM_ID

¿Se ejecuta en mi computadora o en la nube?

Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).

¿Sigue en mantenimiento?

El repo de GitHub cambió por última vez –, y la última versión (1.6.4) llegó al registro hace 3 meses.

¿Qué apps pueden usarlo?

Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Docker en tu computadora.

¿Qué puedo usar en su lugar?

En la misma categoría: Finance Toolkit, SolidInvoice, Korea Tax Calculator

Alternativas

Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.

Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi

Finance Toolkit

de JerBouma

500+ transparent financial methods calculated from raw statements, not third-party endpoints.

Computadora o nube★ 5496MITActualizado ayer
Instalar

SolidInvoice

de SolidInvoice

Create and send invoices and quotes, manage clients, and track payments in SolidInvoice.

Se ejecuta en la nube★ 981MITActualizado hace 9 días
Instalar

Korean tax calculation and tax-audit judgment MCP: 96 tools with statutory citations.

Se ejecuta en tu computadora★ 97MITActualizado anteayer
Instalar

README del creador

Abrir el README

Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.

QuickBooks Online MCP Server

Model Context Protocol (MCP) server for the QuickBooks Online Accounting API. Exposes 130+ tools across 22 QBO entities plus 10 financial reports for Claude and other MCP-compatible clients.

Features

  • Interactive invoice card (MCP Apps, SEP-1865): qbo_invoices_get renders as a read-only interactive card in MCP Apps hosts (Claude Desktop/web) — customer, status, dates, line items, totals — neutral by default, brandable via window.__BRAND__ injection or MCP_BRAND_* env vars. Non-App hosts see the same JSON payload (plus a _card field).

One-Click Deployment

Note on registry auth: This server depends only on public npm packages, so the Cloudflare and DigitalOcean cloud builders install its dependencies anonymously — no token is required for one-click deploy. (If a future release adds a private @wyre-ai/* dependency, you would supply a GitHub PAT with read:packages as a build variable — NODE_AUTH_TOKEN for Cloudflare Workers, a build-time GITHUB_TOKEN secret for DigitalOcean.)

Installing the published package: The released package is published to the GitHub Packages npm registry, which requires authentication on every install (even for public packages). To install it, authenticate npm to npm.pkg.github.com with a GitHub PAT that has read:packages:

`bash

export NODE_AUTH_TOKEN=$(gh auth token)

npm install @wyre-ai/qbo-mcp

`

Quick Start

Prerequisites
  • Node.js >= 20
  • QuickBooks Online OAuth2 app credentials (requires an Intuit developer account)
Install and Build
npm install

npm run build

Run (stdio mode)
QBO_ACCESS_TOKEN=your-access-token QBO_REALM_ID=your-realm-id npm start
Run (HTTP mode)

HTTP refuses to start until CONDUIT_S2S_SECRET is set. The listener defaults to 127.0.0.1:8080.

CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \

MCP_TRANSPORT=http \ QBO_ACCESS_TOKEN=your-access-token \ QBO_REALM_ID=your-realm-id \ npm start

Local HTTP without a secret is development-only. It binds 127.0.0.1 only and logs a warning. A non-loopback MCP_HTTP_HOST is ignored and the override is logged:

MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 \

QBO_ACCESS_TOKEN=your-access-token \ QBO_REALM_ID=your-realm-id \ npm start

Docker

The image listens on 0.0.0.0 inside the container (MCP_HTTP_HOST) and defaults to AUTH_MODE=gateway. Publish the port on loopback and pass a real S2S secret. In gateway mode the access token and realm id arrive on each request as X-Qbo-Access-Token and X-Qbo-Realm-Id; they are not read from the environment.

# Generate the secret first: openssl rand -hex 32

docker build -t qbo-mcp . docker run \ -e CONDUIT_S2S_SECRET \ -p 127.0.0.1:8080:8080 \ qbo-mcp

Compose refuses to start when CONDUIT_S2S_SECRET is unset, defaults AUTH_MODE to gateway, does not inject QBO_ACCESS_TOKEN or QBO_REALM_ID, and publishes 127.0.0.1:8080:8080:

CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" docker compose up

Single-tenant HTTP (AUTH_MODE=env) still requires the S2S secret, then uses QBO_ACCESS_TOKEN and QBO_REALM_ID:

docker run \

-e CONDUIT_S2S_SECRET \ -e AUTH_MODE=env \ -e QBO_ACCESS_TOKEN=your-access-token \ -e QBO_REALM_ID=your-realm-id \ -p 127.0.0.1:8080:8080 \ qbo-mcp

Environment Variables

VariableRequiredDefaultDescription
QBO_ACCESS_TOKENFor stdio and AUTH_MODE=env—QuickBooks Online OAuth2 access token. The Compose gateway service does not load this variable.
QBO_REALM_IDFor stdio and AUTH_MODE=env—QuickBooks Online company (realm) ID. The Compose gateway service does not load this variable.
QBO_ENVNoproductionAPI environment: production or sandbox
QBO_CREDENTIALS_FILENo—Path to a dotenv-format file re-read on every request; its QBO_ACCESS_TOKEN / QBO_REALM_ID / QBO_ENV override the environment variables (see Token rotation). Not used by the gateway Compose service.
MCP_TRANSPORTNostdioTransport type: stdio or http
MCP_HTTP_PORTNo8080HTTP server port
MCP_HTTP_HOSTNo127.0.0.1Bind address when MCP_TRANSPORT=http. A configured CONDUIT_S2S_SECRET honors this value. The container image sets 0.0.0.0. Without a secret, MCP_ALLOW_INSECURE_DEV=1 binds 127.0.0.1 only.
AUTH_MODENoenv (image and Compose: gateway)gateway or env. Gateway mode requires X-Qbo-Access-Token and X-Qbo-Realm-Id on each /mcp request and never falls back to QBO_*. env uses those variables only after S2S auth succeeds.
CONDUIT_S2S_SECRETYes for HTTP—Service-to-service secret. Generate with openssl rand -hex 32. The HTTP server logs an error and exits non-zero when this is empty or a known placeholder (changeme, your-s2s-secret, secret, placeholder, and similar public examples). Compose will not start without it. Never commit a real value. The value is never logged.
MCP_ALLOW_INSECURE_DEVNo—Set to exactly 1 only for local development to start HTTP without CONDUIT_S2S_SECRET. The process logs a warning, does not enforce X-Gateway-S2S, and forces the listener onto 127.0.0.1 even if MCP_HTTP_HOST is a wider address. A known placeholder secret is still refused.
MCP_BRAND_NAMENo—Brand name shown on the MCP Apps invoice card (card is neutral when unset)
MCP_BRAND_LOGO_URLNo—Logo URL for the invoice card
MCP_BRAND_PRIMARY_COLORNo#2563ebInvoice card primary color
MCP_BRAND_ACCENT_COLORNo#e5e7ebInvoice card accent color
MCP_BRAND_BGNo#ffffffInvoice card background color
MCP_BRAND_TEXTNo#333333Invoice card text color

Authentication

The server does not handle the OAuth flow — it consumes a pre-obtained access token. Two modes:

env mode (process default). Token comes from QBO_ACCESS_TOKEN (or from the file named by QBO_CREDENTIALS_FILE, which wins when both are set). Single tenant. The Docker image and Compose file default to gateway mode instead.

gateway mode. Token comes from per-request HTTP headers, isolated through AsyncLocalStorage so concurrent requests never share credentials. Set AUTH_MODE=gateway and send X-Qbo-Access-Token and X-Qbo-Realm-Id. A request missing either header gets HTTP 401 and does not fall back to QBO_ACCESS_TOKEN / QBO_REALM_ID in the process environment.

HeaderRequiredDescription
X-Qbo-Access-TokenYesOAuth2 access token
X-Qbo-Realm-IdYesCompany (realm) ID
X-Qbo-EnvironmentNoproduction or sandbox (defaults to production)

/health stays unauthenticated and does not read credentials. The stdio transport does not use CONDUIT_S2S_SECRET.

HTTP authentication

With MCP_TRANSPORT=http and CONDUIT_S2S_SECRET set, every /mcp request must include X-Gateway-S2S. The check is verifyS2sHeader in src/s2s-verify.ts: the header value is t= ,v1= , where the hex is HMAC-SHA256 of the literal string t= keyed with CONDUIT_S2S_SECRET (64 lowercase hex characters). The timestamp must be within 300 seconds of the server clock. A missing or invalid header returns HTTP 401 before vendor credentials are read.

TS=$(date +%s)

SIG=$(printf 't=%s' "$TS" | openssl dgst -sha256 -hmac "$CONDUIT_S2S_SECRET" -hex | awk '{print $NF}') curl -sS http://127.0.0.1:8080/mcp \ -H 'Content-Type: application/json' \ -H 'Accept: application/json, text/event-stream' \ -H "X-Gateway-S2S: t=${TS},v1=${SIG}" \ -H "X-Qbo-Access-Token: $QBO_ACCESS_TOKEN" \ -H "X-Qbo-Realm-Id: $QBO_REALM_ID" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

In AUTH_MODE=gateway, those X-Qbo-* headers are the only credential source for the request. With AUTH_MODE=env, the signed request uses QBO_ACCESS_TOKEN and QBO_REALM_ID from the environment when the headers are absent.

When QBO rejects the access token, the server returns an MCP error whose text begins with the literal prefix QBO_UNAUTHORIZED:. The intended contract is that the gateway detects this prefix, refreshes the OAuth token, and retries the request.

Token rotation (env mode)

QBO access tokens expire after ~60 minutes, so env-mode deployments typically rotate them with a cron job. A rotated token in a Docker `env_file` never reaches a running container: Docker injects env_file only at container *creation*, so docker restart keeps the old environment and the refresh loop silently becomes a no-op until calls start failing with QBO_UNAUTHORIZED / Token revoked (#63).

Set QBO_CREDENTIALS_FILE to skip environment reinjection entirely. The server re-reads the file on every request, so a rotation takes effect immediately — no restart or recreate at all:

# Single-tenant HTTP. This is separate from the gateway Compose service,

which does not set QBO_* credentials.

services: qbo-mcp: image: ghcr.io/wyre-ai/qbo-mcp ports:

  • "127.0.0.1:8080:8080" environment: MCP_TRANSPORT: http AUTH_MODE: env MCP_HTTP_HOST: 0.0.0.0 CONDUIT_S2S_SECRET: ${CONDUIT_S2S_SECRET:?set CONDUIT_S2S_SECRET} QBO_CREDENTIALS_FILE: /secrets/qbo.env volumes:
  • ./secrets:/secrets:ro # mount the DIRECTORY, not the file

Your refresh job then just rewrites ./secrets/qbo.env (dotenv format: QBO_ACCESS_TOKEN=..., optionally QBO_REALM_ID=... and QBO_ENV=...) and is done — drop the docker restart from the script. Mount the containing directory rather than the file itself: tools like sed -i replace the file's inode, and a single-file bind mount would keep pointing at the old one. If the file is missing or unreadable, tool calls fail loudly instead of silently falling back to a stale environment token.

If you'd rather keep plain env_file injection, the rotation script must recreate the container — docker compose up -d --force-recreate — a docker restart is never enough.

Sandbox Testing

Set QBO_ENV=sandbox (env mode) or X-Qbo-Environment: sandbox (gateway mode) to target Intuit's sandbox API at https://sandbox-quickbooks.api.intuit.com instead of production. Unrecognized values fail loudly (no silent fallback to production).

Available Tools

Tools are organized by domain. Call qbo_navigate with a domain name (e.g. customers, vendors, bills) to discover the tools in that domain. All tools are always callable — navigation is a discovery aid, not a prerequisite.

Entities (config-driven, 122 tools across 22 entities)

Each entity exposes some subset of list, get, create, update, void, search. Transactional entities support startDate/endDate filtering on the list operation. Updates are sparse and require the current SyncToken from a prior get. Void is exposed only where the QBO Accounting API supports it (Invoice uses ?operation=void; Payment uses ?operation=update&include=void). Customer has no void or delete — set Active to false on update to deactivate.

Sales workflow

  • qbo_customers_* — list, get, create, update, search (no void; deactivate with Active: false)
  • qbo_invoices_* — list (Paid/Unpaid/Overdue status filter), get, create, update, void, send
  • qbo_estimates_*

Solo se muestra el principio; lee el resto en el repo

Pregunta a PopNx