Skip to main content
Glama
NoahMcGraw
by NoahMcGraw

Wave MCP Server

An MCP server for Wave Accounting, providing access to invoicing, customers, products, transactions, bills, estimates, taxes, and financial reporting via Wave's GraphQL API.

Features

54 Tools across 10 categories

Category

Tools

Capabilities

Invoices

10

List, get, create, update, delete, send, approve, mark sent, list/record payments

Customers

6

List, get, create, update, delete, search by name/email

Products

5

List, get, create, update, archive products and services

Accounts

4

List, get, create, update chart of accounts

Transactions

6

List, get, create, update, categorize, list attachments

Bills

6

List, get, create, update, list/record bill payments

Estimates

6

List, get, create, update, send, convert to invoice

Taxes

3

List, get, create sales taxes

Businesses

3

List, get current, get by ID

Reporting

5

P&L, Balance Sheet, Aged Receivables, Tax Summary, Cashflow

17 MCP App Resources

Pre-built UI layout definitions accessible via wave://apps/{name}:

invoice-dashboard, invoice-detail, invoice-builder, customer-detail, customer-grid, product-catalog, chart-of-accounts, transaction-feed, transaction-categorizer, bill-manager, estimate-builder, tax-overview, profit-loss, balance-sheet, cashflow-chart, aging-report, business-overview

Related MCP server: Shopify MCP Server

Prerequisites

  1. A Wave account

  2. An OAuth2 access token from the Wave Developer Portal

Installation

npm install
npm run build

Configuration

# Required
export WAVE_ACCESS_TOKEN=your_oauth2_access_token

# Optional — set a default business ID so you don't have to pass it every call
export WAVE_BUSINESS_ID=your_business_id

Usage

Run directly

WAVE_ACCESS_TOKEN=your_token npm run dev

With Cursor / Claude Desktop

Add to your MCP config:

{
  "mcpServers": {
    "wave": {
      "command": "node",
      "args": ["/path/to/wave-mcp/build/main.js"],
      "env": {
        "WAVE_ACCESS_TOKEN": "your_access_token",
        "WAVE_BUSINESS_ID": "optional_business_id"
      }
    }
  }
}

Examples

// List overdue invoices
wave_list_invoices({ status: "OVERDUE" })

// Create an invoice
wave_create_invoice({
  customerId: "customer_456",
  invoiceDate: "2026-01-15",
  items: [
    { description: "Consulting", quantity: 10, unitPrice: "150.00" }
  ]
})

// Profit & Loss report
wave_profit_and_loss({ startDate: "2026-01-01", endDate: "2026-03-31" })

// Search customers
wave_search_customers({ query: "acme" })

Architecture

src/
├── main.ts                 # Entry point — reads env, starts server
├── server.ts               # MCP server setup, request routing
├── client.ts               # Wave GraphQL API client (gql.waveapps.com)
├── types/index.ts           # TypeScript types for all Wave entities
├── tools/
│   ├── invoices-tools.ts    # 10 invoice tools
│   ├── customers-tools.ts   # 6 customer tools
│   ├── products-tools.ts    # 5 product tools
│   ├── accounts-tools.ts    # 4 account tools
│   ├── transactions-tools.ts # 6 transaction tools
│   ├── bills-tools.ts       # 6 bill tools
│   ├── estimates-tools.ts   # 6 estimate tools
│   ├── taxes-tools.ts       # 3 tax tools
│   ├── businesses-tools.ts  # 3 business tools
│   └── reporting-tools.ts   # 5 reporting tools
└── apps/index.ts            # 17 MCP app resource definitions

All tools use parameterized GraphQL queries against https://gql.waveapps.com/graphql/public. Auth is via OAuth2 Bearer token.

Development

npm run build     # Compile TypeScript
npm run watch     # Watch mode
npx tsc --noEmit  # Type-check without emitting

License

MIT

A
license - permissive license
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

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/NoahMcGraw/wave-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server