wave-mcp

NoahMcGraw/wave-mcp
0 starsCommunity

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

Provides 54 tools across 10 categories for Wave Accounting, enabling invoicing, customer management, products, transactions, bills, estimates, taxes, businesses, and financial reporting through Wave's GraphQL API.

README.md

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

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

Related MCP servers

Browse all →