Skip to main content
Glama
LightningBerk

Wave MCP Server

README.md
# Wave MCP Server

MCP server for Wave invoicing with built-in PDF generation. Pull invoice data from your Wave account and generate branded PDF invoicesโ€”all from Claude or any MCP-compatible AI.

## Features

- ๐Ÿ“‹ **List invoices** from your Wave account
- ๐Ÿ” **Get invoice details** with customer info and line items
- ๐Ÿ‘ฅ **List customers** from Wave
- ๐Ÿ“„ **Generate PDF invoices** with your branding

**No Python required.** Pure TypeScript with PDFKit.

## Quick Start

```bash
git clone https://github.com/YOUR_USERNAME/wave-mcp-server.git
cd wave-mcp-server
npm install
npm run build
cp .env.example .env
# Edit .env with your credentials
```

## Getting Wave API Credentials

1. Go to [developer.waveapps.com](https://developer.waveapps.com)
2. Create a new application
3. Generate a **Full Access** token
4. Copy your Business ID from the dashboard

## Configuration

Edit `.env` with your credentials:

```env
WAVE_API_KEY=your_full_access_token
WAVE_BUSINESS_ID=your_business_id
BUSINESS_NAME=Your Business Name
# See .env.example for all options
```

## Adding Your Logo

Place your logo at `assets/logo.png`. Recommended size: 200x200px or larger, square aspect ratio.

## Claude Desktop Setup

Add to your Claude Desktop config (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "wave": {
      "command": "node",
      "args": ["/path/to/wave-mcp-server/dist/index.js"]
    }
  }
}
```

Or with inline environment variables:

```json
{
  "mcpServers": {
    "wave": {
      "command": "node",
      "args": ["/path/to/wave-mcp-server/dist/index.js"],
      "env": {
        "WAVE_API_KEY": "your_key",
        "WAVE_BUSINESS_ID": "your_id",
        "BUSINESS_NAME": "Your Business Name",
        "LOGO_PATH": "/path/to/assets/logo.png"
      }
    }
  }
}
```

## Environment Variables

| Variable | Required | Description |
| -------- | -------- | ----------- |
| `WAVE_API_KEY` | Yes | Your Wave full-access token |
| `WAVE_BUSINESS_ID` | Yes | Your Wave business ID |
| `BUSINESS_NAME` | No | Business name on invoices |
| `BUSINESS_ADDRESS1` | No | Address line 1 |
| `BUSINESS_ADDRESS2` | No | Address line 2 |
| `BUSINESS_PHONE` | No | Phone number |
| `LOGO_PATH` | No | Path to logo PNG (default: `./assets/logo.png`) |
| `INVOICE_OUTPUT_DIR` | No | Output directory for PDFs (default: `./invoices`) |

## Available Tools

| Tool | Description |
| ---- | ----------- |
| `list_invoices` | List invoices with pagination |
| `get_invoice` | Get full invoice details |
| `list_customers` | List all customers |
| `export_invoice_json` | Export invoice as JSON |
| `generate_invoice_pdf` | Generate branded PDF from Wave invoice |

## Usage Examples

Once configured, ask Claude:

- "List my Wave invoices"
- "Generate a PDF for invoice #1234"
- "Show me the details for my latest invoice"

## License

MIT

TDQS

A3.6/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: list_invoices vs get_invoice separates collection from detail, and export_invoice_json vs generate_invoice_pdf are explicitly different output formats. list_customers is entirely separate from the invoice workflow.

Naming Consistency5/5

All tools follow a consistent lower_snake_case verb_noun pattern, with singular/plural usage matching intent (list_invoices vs get_invoice). The export/generate tools extend the pattern with an output format, which is still predictable.

Tool Count5/5

Five tools is well-scoped for a focused Wave integration covering invoice retrieval, customer listing, and invoice export. Each tool earns its place without redundancy or bloat.

Completeness3/5

The invoice retrieval and export workflow is covered, but the surface has notable gaps such as no create/update/delete for invoices and no customer detail lookup. Agents can perform read-only and export tasks, but cannot complete full invoice management workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues