Rebrand to MCPEngage + deep Wave customization
- Fix all MCPEngine → MCPEngage references - Add Wave-specific Power Moves (5 small business accounting use cases) - Correct tool count (8 GraphQL tools) with accurate descriptions - Add GraphQL-specific documentation & API patterns - Document Wave OAuth + GraphQL API token authentication - Link to official Wave GraphQL API docs - Update .env.example with WAVE_API_TOKEN format - Add GraphQL troubleshooting & pagination notes
This commit is contained in:
parent
8f64fc613b
commit
c22ba91ed0
@ -1,2 +1,3 @@
|
|||||||
# Wave API Credentials
|
# Wave GraphQL API Token
|
||||||
WAVE_API_KEY=your-api-key-here
|
# Get yours from: https://developer.waveapps.com
|
||||||
|
WAVE_API_TOKEN=gql_your_token_here
|
||||||
|
|||||||
193
README.md
193
README.md
@ -4,34 +4,61 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 🚀 Wave MCP Server — 2026 Complete Version
|
# 📊 Wave MCP Server — AI-Native Small Business Accounting
|
||||||
|
|
||||||
## 💡 What This Unlocks
|
## 💡 What This Unlocks
|
||||||
|
|
||||||
**This MCP server gives AI direct access to your entire Wave workspace.** Instead of clicking through interfaces, you just *tell* it what you need.
|
**Free accounting software meets AI superpowers.** This MCP server connects Claude to Wave's GraphQL API, giving you natural language control over invoices, customers, expenses, and financial data—no manual data entry required.
|
||||||
|
|
||||||
### 🎯 Wave-Native Power Moves
|
### 🎯 Wave-Native Power Moves
|
||||||
|
|
||||||
The AI can directly control your Wave account with natural language:
|
Real small business workflows you can automate instantly:
|
||||||
|
|
||||||
- **Smart automation** — Complex workflows in plain English
|
1. **Bulk invoice generation for service businesses**
|
||||||
- **Data intelligence** — Query, analyze, and export your Wave data
|
*"For business ID abc123, create invoices for all customers who had transactions last month—use standard 30-day terms, group by customer, calculate totals automatically."*
|
||||||
- **Rapid operations** — Bulk actions that would take hours manually
|
→ Generate 50 invoices in one prompt vs. hours of manual entry.
|
||||||
- **Cross-platform integration** — Combine Wave with other tools seamlessly
|
|
||||||
|
2. **Customer database cleanup**
|
||||||
|
*"List all customers with incomplete addresses, cross-reference with recent invoices, update missing postal codes and phone numbers from invoice metadata."*
|
||||||
|
→ Clean CRM hygiene without tedious manual updates.
|
||||||
|
|
||||||
|
3. **Expense categorization workflow**
|
||||||
|
*"Pull all uncategorized transactions from my checking account, match merchants to expense categories using my historical patterns, create expense records with proper accounting codes."*
|
||||||
|
→ Automated bookkeeping that used to require a dedicated bookkeeper.
|
||||||
|
|
||||||
|
4. **Multi-business revenue dashboard**
|
||||||
|
*"Query all my Wave businesses, show total invoiced vs. paid for each in the last quarter, flag businesses with overdue invoices > $500."*
|
||||||
|
→ Cross-business intelligence from Wave's multi-business support.
|
||||||
|
|
||||||
|
5. **Cash flow forecasting**
|
||||||
|
*"Analyze invoice payment patterns for the past 6 months, calculate average days to payment per customer, project cash inflows for next 30 days based on outstanding invoices."*
|
||||||
|
→ Data-driven forecasting without spreadsheets.
|
||||||
|
|
||||||
### 🔗 The Real Power: Combining Tools
|
### 🔗 The Real Power: Combining Tools
|
||||||
|
|
||||||
AI can chain multiple Wave operations together:
|
Claude orchestrates multi-step Wave workflows:
|
||||||
|
|
||||||
- Query data → Filter results → Generate reports
|
- `list_businesses` → `list_invoices` (per business) → `create_invoice` (for unbilled work)
|
||||||
- Search records → Update fields → Notify team
|
- `list_customers` → filter duplicates → `create_customer` (with cleaned data)
|
||||||
- Analyze metrics → Create tasks → Schedule follow-ups
|
- `list_transactions` → categorize → `create_expense` (with proper accounting codes)
|
||||||
|
- `list_accounts` → map to categories → generate financial reports
|
||||||
|
|
||||||
## 📦 What's Inside
|
## 📦 What's Inside
|
||||||
|
|
||||||
**69 API tools** covering the entire Wave platform (Accounting).
|
**8 GraphQL tools** covering Wave's core accounting operations:
|
||||||
|
|
||||||
All with proper error handling, automatic authentication, and TypeScript types.
|
| Tool | Purpose |
|
||||||
|
|------|---------|
|
||||||
|
| `list_businesses` | Query all businesses in your Wave account |
|
||||||
|
| `list_invoices` | Browse invoices with pagination & filtering by business |
|
||||||
|
| `create_invoice` | Generate invoices with line items, terms, customer details |
|
||||||
|
| `list_customers` | Access customer directory per business |
|
||||||
|
| `create_customer` | Add new customers with contact & billing info |
|
||||||
|
| `list_accounts` | View chart of accounts (assets, liabilities, income, expenses) |
|
||||||
|
| `list_transactions` | Query transaction history with date ranges |
|
||||||
|
| `create_expense` | Record expenses with proper accounting codes & line items |
|
||||||
|
|
||||||
|
All powered by Wave's **GraphQL API** with proper error handling, automatic pagination, and TypeScript types.
|
||||||
|
|
||||||
## 🚀 Quick Start
|
## 🚀 Quick Start
|
||||||
|
|
||||||
@ -45,12 +72,15 @@ All with proper error handling, automatic authentication, and TypeScript types.
|
|||||||
npm run build
|
npm run build
|
||||||
```
|
```
|
||||||
|
|
||||||
2. **Get your Wave API credentials** (see Authentication section below)
|
2. **Get your Wave API token:**
|
||||||
|
- Go to [Wave Developer Portal](https://developer.waveapps.com/hc/en-us/articles/360019762711)
|
||||||
|
- Create an app or use "Manage Your Applications"
|
||||||
|
- Generate an **API token** for your account
|
||||||
|
- Copy the token (starts with `gql_...`)
|
||||||
|
|
||||||
3. **Configure Claude Desktop:**
|
3. **Configure Claude Desktop:**
|
||||||
|
|
||||||
On macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
On macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
||||||
|
|
||||||
On Windows: `%APPDATA%\Claude\claude_desktop_config.json`
|
On Windows: `%APPDATA%\Claude\claude_desktop_config.json`
|
||||||
|
|
||||||
```json
|
```json
|
||||||
@ -58,67 +88,89 @@ All with proper error handling, automatic authentication, and TypeScript types.
|
|||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
"wave": {
|
"wave": {
|
||||||
"command": "node",
|
"command": "node",
|
||||||
"args": ["/ABSOLUTE/PATH/TO/wave-mcp/dist/index.js"],
|
"args": ["/ABSOLUTE/PATH/TO/wave-mcp-2026-complete/dist/index.js"],
|
||||||
"env": {
|
"env": {
|
||||||
"WAVE_API_KEY": "your-api-key-here"
|
"WAVE_API_TOKEN": "gql_your_token_here"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
4. **Restart Claude Desktop**
|
4. **Restart Claude Desktop**
|
||||||
|
Look for the 🔌 icon showing Wave tools are connected.
|
||||||
|
|
||||||
### Option 2: Deploy to Railway
|
### Option 2: Docker
|
||||||
|
|
||||||
[](https://railway.app/template/wave-mcp)
|
|
||||||
|
|
||||||
1. Click the button above
|
|
||||||
2. Set your Wave API credentials in Railway dashboard
|
|
||||||
3. Use the Railway URL as your MCP server endpoint
|
|
||||||
|
|
||||||
### Option 3: Docker
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker build -t wave-mcp .
|
docker build -t wave-mcp .
|
||||||
docker run -p 3000:3000 \
|
docker run \
|
||||||
-e WAVE_API_KEY=your-key \
|
-e WAVE_API_TOKEN=gql_your_token_here \
|
||||||
wave-mcp
|
wave-mcp
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🔐 Authentication
|
## 🔐 Authentication
|
||||||
|
|
||||||
See the official [Wave API documentation](https://docs.wave.com) for authentication details.
|
Wave uses **OAuth 2.0 + API Tokens** for GraphQL API access:
|
||||||
|
|
||||||
The MCP server handles token refresh automatically.
|
1. **Register your application** at [Wave Developer Portal](https://developer.waveapps.com)
|
||||||
|
2. **Generate an API token** (or OAuth credentials for production apps)
|
||||||
|
3. **Use the token** in environment variable `WAVE_API_TOKEN`
|
||||||
|
|
||||||
|
**Token format:** Starts with `gql_` followed by alphanumeric string.
|
||||||
|
|
||||||
|
**Scopes required:**
|
||||||
|
- `business:read` — View business details
|
||||||
|
- `invoice:read`, `invoice:write` — Manage invoices
|
||||||
|
- `customer:read`, `customer:write` — Manage customers
|
||||||
|
- `transaction:read`, `transaction:write` — Access transactions & expenses
|
||||||
|
|
||||||
|
**Token security:** Tokens don't expire but can be revoked in your Wave settings. Store securely and never commit to version control.
|
||||||
|
|
||||||
## 🎯 Example Prompts
|
## 🎯 Example Prompts
|
||||||
|
|
||||||
Once connected to Claude, you can use natural language. Examples:
|
Once connected to Claude, use natural language for Wave accounting:
|
||||||
|
|
||||||
- *"Show me recent activity in Wave"*
|
### Multi-Business Operations
|
||||||
- *"Create a new record with these details..."*
|
- *"Show me all my Wave businesses with their currencies and whether they're personal or business accounts."*
|
||||||
- *"Export all data from last month"*
|
- *"For my business 'Acme Consulting', list all open invoices sorted by due date."*
|
||||||
- *"Update the status of X to Y"*
|
|
||||||
- *"Generate a report of..."*
|
### Invoice Management
|
||||||
|
- *"Create an invoice for business ID QnVz...X12 for customer ID Q3Vz...abc with 3 line items: Strategy Session $500, Implementation $2000, Support Plan $300/month. Due in 15 days."*
|
||||||
|
- *"List all invoices for my Toronto business from the past 30 days and show me which ones haven't been paid."*
|
||||||
|
- *"Generate a summary of all overdue invoices across all my businesses."*
|
||||||
|
|
||||||
|
### Customer Operations
|
||||||
|
- *"Add a new customer to my main business: 'Global Tech Inc', email: billing@globaltech.com, address in New York NY, currency USD."*
|
||||||
|
- *"Show me all customers who have been invoiced in the last 6 months but have incomplete contact information."*
|
||||||
|
|
||||||
|
### Financial Tracking
|
||||||
|
- *"List all expense accounts in my chart of accounts and group by type (assets, liabilities, income, expenses)."*
|
||||||
|
- *"Show me all transactions in my checking account from January 2024 and calculate the net cash flow."*
|
||||||
|
- *"Create an expense record for $127.50 from 'Office Supplies' account on 2024-01-15 with description 'Printer paper and toner'."*
|
||||||
|
|
||||||
|
### Analysis & Intelligence
|
||||||
|
- *"Which customers have the longest average payment times? Show data from the past year."*
|
||||||
|
- *"Calculate total revenue per business for Q1 2024 and compare to Q4 2023."*
|
||||||
|
- *"Find all invoices that are 30+ days past due and draft reminder emails for each customer."*
|
||||||
|
|
||||||
## 🛠️ Development
|
## 🛠️ Development
|
||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
- Node.js 18+
|
- Node.js 18+
|
||||||
- npm or yarn
|
- npm or yarn
|
||||||
- Wave account with API access
|
- Wave account (free) with API access enabled
|
||||||
|
|
||||||
### Setup
|
### Local Setup
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/BusyBee3333/Wave-MCP-2026-Complete.git
|
git clone https://github.com/BusyBee3333/Wave-MCP-2026-Complete.git
|
||||||
cd wave-mcp-2026-complete
|
cd wave-mcp-2026-complete
|
||||||
npm install
|
npm install
|
||||||
cp .env.example .env
|
cp .env.example .env
|
||||||
# Edit .env with your Wave credentials
|
# Edit .env with your Wave API token
|
||||||
npm run build
|
npm run build
|
||||||
npm start
|
npm run dev
|
||||||
```
|
```
|
||||||
|
|
||||||
### Testing
|
### Testing
|
||||||
@ -129,44 +181,69 @@ npm run test:watch # Watch mode
|
|||||||
npm run test:coverage # Coverage report
|
npm run test:coverage # Coverage report
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### GraphQL Playground
|
||||||
|
|
||||||
|
Wave provides a [GraphQL explorer](https://developer.waveapps.com/hc/en-us/articles/360019968212-API-Explorer) for testing queries.
|
||||||
|
|
||||||
## 🐛 Troubleshooting
|
## 🐛 Troubleshooting
|
||||||
|
|
||||||
### "Authentication failed"
|
### "Authentication failed" / GraphQL errors
|
||||||
- Verify your API credentials are correct
|
- **Token format:** Ensure token starts with `gql_` (not OAuth bearer tokens)
|
||||||
- Check that your API key hasn't been revoked
|
- **Token validity:** Check token hasn't been revoked in Wave settings
|
||||||
- Ensure you have the necessary permissions
|
- **Scopes:** Verify your app has required permissions for the operations you're trying
|
||||||
|
|
||||||
|
### "Business not found" / Empty results
|
||||||
|
- **Get business IDs:** Run `list_businesses` first to get valid business IDs
|
||||||
|
- **Wave uses GraphQL IDs:** IDs are base64-encoded strings like `QnVzaW5lc3M6YWJjMTIz`
|
||||||
|
- **Multiple businesses:** If you have multiple businesses, specify which one in each query
|
||||||
|
|
||||||
### "Tools not appearing in Claude"
|
### "Tools not appearing in Claude"
|
||||||
- Restart Claude Desktop after updating config
|
- **Restart required:** Always restart Claude Desktop after config changes
|
||||||
- Check that the path in `claude_desktop_config.json` is absolute
|
- **Absolute paths:** Use full paths in config (no `~/` shortcuts)
|
||||||
- Verify the build completed successfully (`dist/index.js` exists)
|
- **Build check:** Verify `dist/index.js` exists after running `npm run build`
|
||||||
|
|
||||||
|
### GraphQL-specific issues
|
||||||
|
- **Pagination:** Wave uses cursor-based pagination; use `pageInfo` to navigate results
|
||||||
|
- **Nested queries:** Some operations require nested GraphQL selections (handled by this MCP server)
|
||||||
|
- **Rate limiting:** Wave has rate limits; the MCP server will throw errors if exceeded
|
||||||
|
|
||||||
## 📖 Resources
|
## 📖 Resources
|
||||||
|
|
||||||
- [Wave API Documentation](https://docs.wave.com)
|
- **[Wave GraphQL API Docs](https://developer.waveapps.com/hc/en-us/articles/360019968212)** — Official API reference
|
||||||
- [MCP Protocol Specification](https://modelcontextprotocol.io/)
|
- **[Wave API Getting Started](https://developer.waveapps.com/hc/en-us/articles/360019762711)** — Authentication & setup
|
||||||
- [Claude Desktop Documentation](https://claude.ai/desktop)
|
- **[GraphQL Schema Explorer](https://developer.waveapps.com/hc/en-us/articles/360020154331)** — Browse available queries & mutations
|
||||||
|
- **[Wave Changelog](https://developer.waveapps.com/hc/en-us/sections/360003012132-Changelog)** — API updates & deprecations
|
||||||
|
- **[MCP Protocol Specification](https://modelcontextprotocol.io/)** — How MCP servers work
|
||||||
|
- **[Claude Desktop Documentation](https://claude.ai/desktop)** — Desktop app setup
|
||||||
|
|
||||||
## 🤝 Contributing
|
## 🤝 Contributing
|
||||||
|
|
||||||
Contributions are welcome! Please:
|
Contributions welcome! To add features:
|
||||||
|
|
||||||
1. Fork the repo
|
1. Fork the repo
|
||||||
2. Create a feature branch (`git checkout -b feature/amazing-tool`)
|
2. Create a feature branch (`git checkout -b feature/payment-tracking`)
|
||||||
3. Commit your changes (`git commit -m 'Add amazing tool'`)
|
3. Commit your changes (`git commit -m 'Add payment tracking tools'`)
|
||||||
4. Push to the branch (`git push origin feature/amazing-tool`)
|
4. Push to the branch (`git push origin feature/payment-tracking`)
|
||||||
5. Open a Pull Request
|
5. Open a Pull Request
|
||||||
|
|
||||||
|
**Ideas for contributions:**
|
||||||
|
- Support for Wave's products/services catalog
|
||||||
|
- Sales tax calculation helpers
|
||||||
|
- Receipt image uploads via GraphQL mutations
|
||||||
|
- Recurring invoice templates
|
||||||
|
- Financial report generation (P&L, balance sheet)
|
||||||
|
- Multi-currency conversion helpers
|
||||||
|
|
||||||
## 📄 License
|
## 📄 License
|
||||||
|
|
||||||
MIT License - see [LICENSE](LICENSE) for details
|
MIT License - see [LICENSE](LICENSE) for details
|
||||||
|
|
||||||
## 🙏 Credits
|
## 🙏 Credits
|
||||||
|
|
||||||
Built by [MCPEngine](https://mcpengage.com) — AI infrastructure for business software.
|
Built by [MCPEngage](https://mcpengage.com) — AI infrastructure for business software.
|
||||||
|
|
||||||
Want more MCP servers? Check out our [full catalog](https://mcpengage.com) covering 30+ business platforms.
|
Want more MCP servers? Check out our [full catalog](https://mcpengage.com) covering 30+ business platforms.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Questions?** Open an issue or join our [Discord community](https://discord.gg/mcpengine).
|
**Questions?** Open an issue or join our [Discord community](https://discord.gg/mcpengage).
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
"description": "MCP server for Wave API - 2026 Complete Version",
|
"description": "MCP server for Wave API - 2026 Complete Version",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"author": "MCPEngine <hello@mcpengage.com>",
|
"author": "MCPEngage <hello@mcpengage.com>",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user