A Model Context Protocol (MCP) server that integrates Claude with Wave Accounting to automate expense tracking and income transaction creation.
- πΈ Expense Creation from Receipts: Automatically extract and create expenses from receipt text
- π° Income Transaction Creation: Create income transactions from payment data
- π’ Multi-Business Support: Manage multiple Wave businesses seamlessly
- π Vendor & Customer Search: Find existing vendors and customers
- π Account Management: List and categorize transactions with proper accounts
- π Real-time Integration: Direct connection to Wave's GraphQL API
- Python 3.8 or higher
- Wave Business account with API access
- Claude Desktop application
- Wave OAuth2 access token
- Clone the repository:
git clone https://github.com/yourusername/wave_mcp.git
cd wave_mcp- Activate python venv, install dependencies:
python -m venv venv
source ./venv/bin/activate
pip install -r requirements.txt- Create a
.envfile:
WAVE_ACCESS_TOKEN=your_wave_oauth2_access_token_here- Log in to your Wave account
- Navigate to Settings β API Access (only available in Wave Business account)
- Create a new OAuth2 application
- Generate an OAuth2 Bearer access token with appropriate permissions
Note: Wave API access may require approval. Check Wave's current developer program status.
Note2: If you want to test without Wave Business account, login to waveapps.com and grab the Bearer token from the webpage's GraphQL requests. It works the same, for a limited time.
Add the server to your Claude Desktop configuration:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"wave-accounting": {
"command": "/absolute/path/to/wave_mcp/venv/bin/python",
"args": ["/absolute/path/to/wave_mcp/mcp_server.py"],
"env": {
"WAVE_ACCESS_TOKEN": "your_wave_oauth2_access_token_here",
"WAVE_BUSINESS_ID": "Your Wave business ID (optional, Claude will ask for it if not configured)"
}
}
}
}Restart Claude Desktop after saving the configuration.
Note: You can find business id (36-char UUID) in your waveapp webpage URL.
I have a receipt from Office Depot for $45.99 dated March 15, 2024.
It's for office supplies - printer paper and pens.
Received payment of $1,500 from ABC Company on March 20, 2024
for consulting services invoice #1234.
Show me my expense accounts in Wave.
List my Wave businesses and set the active one.
create_expense_from_receipt: Create expenses from receipt textsearch_vendor: Search for existing vendorsget_expense_accounts: List available expense accounts
create_income_from_payment: Create income transactionssearch_customer: Search for existing customersget_income_accounts: List available income accounts
set_business: Set the active businesslist_businesses: List all available businesses
debug_accounts: List all accounts with types and subtypes for troubleshooting
- Vendors and customers must be created manually in Wave's web interface
- The API supports searching existing vendors/customers but not creating new ones
- Transactions can be created without vendors/customers and linked later
- Wave API doesn't support attaching receipt images/PDFs
- Maximum 2 simultaneous API requests (Wave rate limiting)
- OAuth2 tokens may expire and need refreshing
# Currently no test suite - testing via Claude Desktop integration
python mcp_server.pywave_mcp/
βββ mcp_server.py # Main MCP server implementation
βββ requirements.txt # Python dependencies
βββ README.md # This file
βββ LICENSE # MIT License
βββ CLAUDE.md # Claude-specific instructions
βββ .env # Your API credentials (not tracked)
βββ docs/
βββ wave_api_reference.md # Wave API documentation
- Verify your
WAVE_ACCESS_TOKENis set correctly - Check that the token has valid permissions
- Use the
list_businessestool to see available businesses - Set the active business with
set_business
- Ensure the path in
claude_desktop_config.jsonis absolute - Verify Python and all dependencies are installed
- Restart Claude Desktop
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- Built for use with Claude Desktop
- Integrates with Wave Accounting
- Uses the Model Context Protocol
- Never commit your
.envfile or API keys - Use environment variables for all sensitive data
- Regularly rotate your API tokens
- Follow Wave's security best practices