Wave MCP服务器
Wave Accounting的完整模型上下文协议(MCP)服务器,提供对发票、客户、产品、交易、账单、估算、税务和财务报告的全面访问。
特性
🔧 45+工具 跨越10个类别:
发票(10个工具)
- 列出、获取、创建、更新、删除发票
- 通过电子邮件发送发票
- 批准并标记已发送的发票
- 列出并记录发票付款
客户(6工具)
- 列出、获取、创建、更新、删除客户
- 按姓名或电子邮件搜索客户
产品(5个工具)
- 列出、获取、创建、更新、存档产品和服务
- 按出售/购买状态筛选
账户(4个工具)
- 列出、获取、创建、更新会计科目表
- 按账户类型筛选(资产、负债、权益、收入、支出)
交易(6种工具)
- 列出、获取、创建、更新交易
- 按账户对交易进行分类
- 列出交易附件
账单(7个工具)
- 列出、获取、创建、更新账单(应付账款)
- 列出并记录账单付款
估算(6种工具)
- 列出、获取、创建、更新、发送估算
- 将估算转换为发票
税费(3个工具)
- 列出、获取、创建销售税
企业(3种工具)
- 列出企业
- 获取当前或特定的业务详细信息
报告(5个工具)
- 损益表
- 资产负债表
- 账龄应收账款(应收账龄)
- 税务摘要
- 现金流量表
📱 17个MCP应用程序 -预构建的UI工作流程:
- 发票仪表板 -发票概述及状态细分
- 发票明细 -包含付款和操作的详细发票视图
- 发票生成器 -创建/编辑包含行项目的发票
- 客户详细信息 -带有发票历史记录的客户资料
- 客户网格 -可搜索的客户网格
- 产品目录 -产品/服务管理
- 会计科目表 -帐户树视图
- 交易馈送 -实时交易流
- 事务分类器 -批量交易分类
- 票据管理人 -跟踪和支付账单
- 估算生成器 -创建和管理报价
- 税务概述 -税务配置和汇总
- 利润损失 -可视化损益报告
- 平衡表 -资产负债表报告
- 现金流图 -现金流瀑布图
- 老化报告 -账龄应收账款报告
- 业务概述 -具有快速操作的业务仪表板
安装
cd servers/wave
npm install
npm run build配置
先决条件
- Wave帐户:您需要一个Wave帐户 waveaps.com
- API访问令牌:从获取OAuth2访问令牌 Wave开发者门户
环境变量
# Required
WAVE_ACCESS_TOKEN=your_oauth2_access_token
# Optional - set a default business ID
WAVE_BUSINESS_ID=your_business_id用法
作为MCP服务器
运行服务器:
WAVE_ACCESS_TOKEN=your_token npm run dev使用克劳德桌面
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"wave": {
"command": "node",
"args": ["/path/to/mcpengine-repo/servers/wave/build/main.js"],
"env": {
"WAVE_ACCESS_TOKEN": "your_access_token",
"WAVE_BUSINESS_ID": "optional_business_id"
}
}
}
}使用NPX
npx @mcpengine/wave-server工具示例
列出发票
// List all invoices
wave_list_invoices({ businessId: "business_123" })
// Filter by status
wave_list_invoices({
businessId: "business_123",
status: "OVERDUE"
})
// Filter by customer
wave_list_invoices({
businessId: "business_123",
customerId: "customer_456"
})创建发票
wave_create_invoice({
businessId: "business_123",
customerId: "customer_456",
invoiceDate: "2025-01-15",
dueDate: "2025-02-15",
title: "January Services",
items: [
{
description: "Consulting Services",
quantity: 10,
unitPrice: "150.00",
taxIds: ["tax_789"]
},
{
productId: "product_101",
description: "Software License",
quantity: 1,
unitPrice: "500.00"
}
]
})创建客户
wave_create_customer({
businessId: "business_123",
name: "Acme Corporation",
email: "billing@acme.com",
addressLine1: "123 Main Street",
city: "San Francisco",
provinceCode: "CA",
countryCode: "US",
postalCode: "94105"
})生成报告
// Profit & Loss
wave_profit_and_loss({
businessId: "business_123",
startDate: "2025-01-01",
endDate: "2025-01-31"
})
// Balance Sheet
wave_balance_sheet({
businessId: "business_123",
asOfDate: "2025-01-31"
})
// Aged Receivables
wave_aged_receivables({
businessId: "business_123",
asOfDate: "2025-01-31"
})API体系结构
基于GraphQL
Wave使用GraphQL API,而不是REST。服务器处理:
- 认证:OAuth2承载令牌
- 错误处理:GraphQL错误解析和网络错误检测
- 类型安全:所有Wave实体的完整TypeScript类型
- 分页:大型结果集的自动页面处理
客户端实施
// client.ts
import { GraphQLClient } from 'graphql-request';
const client = new GraphQLClient('https://gql.waveapps.com/graphql/public', {
headers: {
Authorization: `Bearer ${accessToken}`
}
});工具组织
src/tools/
├── invoices-tools.ts # 10 tools for invoice management
├── customers-tools.ts # 6 tools for customer management
├── products-tools.ts # 5 tools for product/service catalog
├── accounts-tools.ts # 4 tools for chart of accounts
├── transactions-tools.ts # 6 tools for transaction management
├── bills-tools.ts # 7 tools for bills payable
├── estimates-tools.ts # 6 tools for estimates/quotes
├── taxes-tools.ts # 3 tools for sales tax management
├── businesses-tools.ts # 3 tools for business info
└── reporting-tools.ts # 5 tools for financial reports类型系统
所有Wave实体的完整TypeScript类型:
// types/index.ts
export interface Invoice {
id: string;
invoiceNumber: string;
customer: Customer;
status: 'DRAFT' | 'SENT' | 'VIEWED' | 'PAID' | 'PARTIAL' | 'OVERDUE' | 'APPROVED';
items: InvoiceItem[];
total: Money;
amountDue: Money;
amountPaid: Money;
// ... full type definitions
}错误处理
服务器提供全面的错误处理:
try {
const invoice = await wave_get_invoice({ invoiceId: "inv_123" });
} catch (error) {
// GraphQL errors
if (error.graphQLErrors) {
console.error('GraphQL errors:', error.graphQLErrors);
}
// Network errors
if (error.networkError) {
console.error('Network error:', error.networkError);
}
// HTTP status codes
if (error.statusCode) {
console.error('HTTP status:', error.statusCode);
}
}MCP应用程序
应用程序可通过以下资源访问:
// List all apps
const apps = await readResource({ uri: "wave://apps" });
// Load specific app
const invoiceDashboard = await readResource({
uri: "wave://apps/invoice-dashboard"
});每个应用程序包括:
- 显示名称和描述
- 默认工具 装载
- 布局配置 用于UI渲染
- 工作流程步骤 (适用于流程驱动的应用程序)
发展
构建
npm run build观看模式
npm run watch类型检查
npx tsc --noEmit许可证
麻省理工学院
链接
贡献
欢迎投稿!请看主 MCPEngine存储库 作为指导方针。
支持
对于问题或疑问:
- Wave API问题: Wave开发人员支持
- MCP服务器问题:
