Wave MCP Server
# 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
Scored across 5 tools
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.
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.
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.
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.