Server data from the Official MCP Registry
Clover POS for a single merchant: sales, inventory, orders, customers (reads + safe writes).
Clover POS for a single merchant: sales, inventory, orders, customers (reads + safe writes).
This MCP server for Clover POS is well-architected with proper authentication, clear permission scoping, and deliberate design choices to prevent dangerous operations (no refunds, voids, payment capture). The codebase demonstrates good security practices including input validation, output shaping to strip sensitive data, and optimistic locking on writes. Permissions appropriately match the server's purpose of read/write access to Clover merchant data. Supply chain analysis found 6 known vulnerabilities in dependencies (1 critical, 3 high severity). Package verification found 1 issue.
5 files analyzed · 11 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: CLOVER_MERCHANT_ID
Environment variable: CLOVER_ACCESS_TOKEN
Environment variable: CLOVER_REGION
Environment variable: CLOVER_SANDBOX
Environment variable: CLOVER_AUTH_MODE
Environment variable: CLOVER_REFRESH_TOKEN
Environment variable: CLOVER_OAUTH_CLIENT_ID
Environment variable: CLOVER_OAUTH_CLIENT_SECRET
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-sbolivarlol-clover-mcp": {
"env": {
"CLOVER_REGION": "your-clover-region-here",
"CLOVER_SANDBOX": "your-clover-sandbox-here",
"CLOVER_AUTH_MODE": "your-clover-auth-mode-here",
"CLOVER_MERCHANT_ID": "your-clover-merchant-id-here",
"CLOVER_ACCESS_TOKEN": "your-clover-access-token-here",
"CLOVER_REFRESH_TOKEN": "your-clover-refresh-token-here",
"CLOVER_OAUTH_CLIENT_ID": "your-clover-oauth-client-id-here",
"CLOVER_OAUTH_CLIENT_SECRET": "your-clover-oauth-client-secret-here"
},
"args": [
"clover-mcp"
],
"command": "uvx"
}
}
}From the project's GitHub README.
MCP server for the Clover POS REST API — gives AI assistants (Claude, Cursor, etc.) read and safe-write access to a Clover merchant's sales, inventory, orders, and customers.
Status: v1 candidate — 14 tools, both auth modes, 152 tests. Single-merchant, local (stdio). See docs/endpoints.md for the sandbox-verified endpoint contracts.
⚠️ Independent project — not affiliated with, endorsed by, or sponsored by Clover Network, LLC or Fiserv, Inc. "Clover" is a trademark of its respective owner and is used here only nominatively to describe interoperability. Provided as is, without warranty — see Legal & disclaimer.
What it cannot do (by design): process refunds, capture payments, void charges, delete records. Those stay in the Clover dashboard. Employee/shift reporting and a multi-merchant hosted mode are planned (v1.1 / v2).
| Tool | Kind | Notes |
|---|---|---|
get_merchant_info | read | name, currency, timezone, country |
get_sales_summary | read | aggregated window (see Sales summary semantics) |
list_payments | read | SUCCESS payments in a window |
list_orders / get_order / list_open_orders | read | order history + detail |
list_items / get_item / list_low_stock_items | read | inventory + stock |
search_customers / get_customer | read | cards never returned |
create_customer | write | additive; idempotency dup-check + dry_run |
set_item_price_cents | write | optimistic-lock pre-check, bounds, dry_run |
set_item_stock_quantity | write | absolute (not delta), pre-check, dry_run |
Every tool carries MCP behaviour annotations (readOnlyHint / destructiveHint / idempotentHint) so clients can parallelize reads and prompt before writes.
uvx clover-mcp # coming soon after PyPI publish
Or from source:
git clone https://github.com/SBolivarLoL/clover-mcp-server
cd clover-mcp-server
uv pip install -e .
Copy .env.example to .env and fill in your values:
cp .env.example .env
Required:
| Variable | Description |
|---|---|
CLOVER_MERCHANT_ID | Your Clover merchant ID |
CLOVER_ACCESS_TOKEN | Your Clover API access token |
Optional:
| Variable | Default | Description |
|---|---|---|
CLOVER_REGION | na | na, eu, or la |
CLOVER_SANDBOX | false | true to use the Clover sandbox |
CLOVER_AUTH_MODE | token | token or oauth_refresh |
token — paste a static access token. Works for sandbox and single-merchant production use. If the token expires, regenerate it in the Clover Developer Dashboard.oauth_refresh — supply a refresh token + OAuth client credentials; the server auto-refreshes on expiry and persists the new token pair to CLOVER_TOKEN_STORE (default: ~/.config/clover-mcp/tokens.json, mode 0600). Clover refresh tokens are single-use, so the rotated pair is written back after each refresh.Use a least-privilege token. Grant only the permission scopes the tools you actually use require (see the table below). A read-only deployment needs no
*_Wscopes at all. Don't reuse a production token in sandbox or vice versa.
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"clover": {
"command": "uvx",
"args": ["clover-mcp"],
"env": {
"CLOVER_MERCHANT_ID": "your_merchant_id",
"CLOVER_ACCESS_TOKEN": "your_token",
"CLOVER_REGION": "na"
}
}
}
}
Add to .cursor/mcp.json in your project (or ~/.cursor/mcp.json globally):
{
"mcpServers": {
"clover": {
"command": "uvx",
"args": ["clover-mcp"],
"env": {
"CLOVER_MERCHANT_ID": "your_merchant_id",
"CLOVER_ACCESS_TOKEN": "your_token"
}
}
}
}
Your token must have the following Clover permission scopes:
| Permission | Used by |
|---|---|
MERCHANT_R | get_merchant_info |
ORDERS_R | list_orders, get_order, list_open_orders, get_sales_summary |
PAYMENTS_R | list_payments, get_sales_summary |
INVENTORY_R | list_items, get_item, list_low_stock_items |
INVENTORY_W | set_item_price_cents, set_item_stock_quantity |
CUSTOMERS_R | search_customers, get_customer |
CUSTOMERS_W | create_customer |
Read scopes (*_R) are probed at startup; the server reports any missing ones and exits. Write scopes (*_W) are not probed (a probe would mutate data) — a missing write scope surfaces as a 403 the first time you call that tool. Permission changes on a Clover app require the merchant to reinstall the app.
get_sales_summary makes the accounting explicit so the LLM can explain it:
result=SUCCESS payment amounts. FAIL/AUTH/uncaptured PRE_AUTH are excluded.void_count, refund_count, refund_amount) — never silently netted into payment_count.service_charges_collected — requires ORDERS_R.note flags the window when any are present.uv pip install -e ".[dev]"
pytest
ruff check src/
mypy src/clover_mcp/
See SECURITY.md for the vulnerability disclosure policy.
This is not legal advice. The notes below describe the project's intent and the operator's responsibilities.
MIT — see LICENSE.
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.