96 lines
2.3 KiB
Markdown

# Clover MCP Server
MCP server for [Clover POS](https://www.clover.com/) API integration. Access orders, inventory, customers, payments, and merchant data.
## Setup
```bash
npm install
npm run build
```
## Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `CLOVER_API_KEY` | Yes | OAuth access token or API token |
| `CLOVER_MERCHANT_ID` | Yes | 13-character merchant ID |
| `CLOVER_SANDBOX` | No | Set to `"true"` for sandbox environment |
| `CLOVER_REGION` | No | `"US"` (default), `"EU"`, or `"LA"` |
## API Endpoints
- **Production US/Canada:** `https://api.clover.com`
- **Production Europe:** `https://api.eu.clover.com`
- **Production LATAM:** `https://api.la.clover.com`
- **Sandbox:** `https://apisandbox.dev.clover.com`
## Tools
### Orders
- **list_orders** - List orders with optional filtering by state
- **get_order** - Get order details including line items and payments
- **create_order** - Create new orders (supports atomic orders with line items)
### Inventory
- **list_items** - List products/menu items available for sale
- **get_inventory** - Get stock counts for items
### Customers & Payments
- **list_customers** - List customer database entries
- **list_payments** - List payment transactions
### Merchant
- **get_merchant** - Get merchant account information
## Usage with Claude Desktop
Add to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"clover": {
"command": "node",
"args": ["/path/to/mcp-servers/clover/dist/index.js"],
"env": {
"CLOVER_API_KEY": "your-api-token",
"CLOVER_MERCHANT_ID": "your-merchant-id",
"CLOVER_SANDBOX": "true"
}
}
}
}
```
## Authentication
Clover uses OAuth 2.0. You need either:
1. **Test API Token** - Generate in Clover Developer Dashboard for sandbox testing
2. **OAuth Access Token** - Obtained through OAuth flow for production apps
See [Clover Authentication Docs](https://docs.clover.com/dev/docs/use-oauth) for details.
## Examples
List open orders:
```
list_orders(filter: "state=open", limit: 10)
```
Get order with line items:
```
get_order(order_id: "ABC123", expand: "lineItems,payments")
```
Create an order with items:
```
create_order(
title: "Table 5",
line_items: [
{ item_id: "ITEM123", quantity: 2 },
{ name: "Custom Item", price: 999 }
]
)
```