Labsco
MCP SERVER

Laravel QuickBooks MCP

by rajurayhan

Put QuickBooks Online behind your own Laravel app as a remote MCP server — customers, invoices, bills and payments, by name rather than by ID.

Accounting, Invoicing & Bookkeeping
Summary
The agent never has to know a QuickBooks ID.

Name-to-ID resolution is the difference between a tool an assistant can use and one it fumbles: "invoice Acme Ltd" resolves without a search-then-call dance. The multi-tenant design is the other half — realm resolution and silent token refresh run as middleware, so once a user has authorised their company, every tool call carries the right context with zero extra parameters. What you are taking on is a Laravel app to host, which is the price of it being remote rather than local.

What it is

A Composer package for Laravel that exposes QuickBooks Online as an MCP server over HTTP. Because it is remote rather than local stdio, hosted AI clients can reach it, and one Laravel installation can serve several QBO companies.

What you get
  • 50 tools across 11 QuickBooks entities: customers, vendors, invoices, bills, estimates, purchases, employees, items, accounts, journal entries and bill payments
  • Each entity follows the same shape — `create_customer`, `get_customer`, `search_customers`, `update_customer`, `delete_customer`, and the equivalents for bills, estimates and the rest
  • `create_bill_payment` pays one or more open bills; `search_bills` filters by vendor, date range or unpaid status
  • Deletes match QuickBooks semantics: `delete_customer` deactivates (QBO's soft delete) while `delete_bill` removes permanently
  • Name-to-ID resolution means an agent passes human-readable names and the lookup happens for it
  • A full OAuth 2.0 flow lets each of your SaaS users connect their own QBO company, with connections listed and revocable
Requirements

PHP 8.2 or higher and Laravel 11.x or higher, plus laravel/mcp ^1.0 and spinen/laravel-quickbooks-client ^4.0. `composer require rajurayhan/laravel-quickbooks-mcp-server`, publish the config, migrations and routes, and migrate — it creates one table. An Intuit app supplies QUICKBOOKS_CLIENT_ID, QUICKBOOKS_CLIENT_SECRET and QUICKBOOKS_REDIRECT_URI, with the callback registered at /quickbooks/callback. Your User model needs the HasQuickBooksToken trait, and an auth guard that resolves a Bearer token — Passport or Sanctum both work.

Setup effort

One command plus a key — composer require rajurayhan/laravel-quickbooks-mcp-server, then supply credentials