Spree Commerce developer docs for AI agents
Spree Commerce docs for AI coding agents: build headless B2B and marketplace ecommerce on its APIs.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Clover POS for a single merchant: sales, inventory, orders, customers (reads + safe writes).
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
CLOVER_MERCHANT_ID, CLOVER_ACCESS_TOKEN, CLOVER_REGION, CLOVER_SANDBOX, CLOVER_AUTH_MODE, CLOVER_REFRESH_TOKEN, CLOVER_OAUTH_CLIENT_ID, CLOVER_OAUTH_CLIENT_SECRETค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"clover": {
"command": "uvx",
"args": [
"clover-mcp"
],
"env": {
"CLOVER_MERCHANT_ID": "ใส่ค่าของคุณ",
"CLOVER_ACCESS_TOKEN": "ใส่ค่าของคุณ",
"CLOVER_REGION": "ใส่ค่าของคุณ",
"CLOVER_SANDBOX": "ใส่ค่าของคุณ",
"CLOVER_AUTH_MODE": "ใส่ค่าของคุณ",
"CLOVER_REFRESH_TOKEN": "ใส่ค่าของคุณ",
"CLOVER_OAUTH_CLIENT_ID": "ใส่ค่าของคุณ",
"CLOVER_OAUTH_CLIENT_SECRET": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add clover --env CLOVER_MERCHANT_ID='ใส่ค่าของคุณ' --env CLOVER_ACCESS_TOKEN='ใส่ค่าของคุณ' --env CLOVER_REGION='ใส่ค่าของคุณ' --env CLOVER_SANDBOX='ใส่ค่าของคุณ' --env CLOVER_AUTH_MODE='ใส่ค่าของคุณ' --env CLOVER_REFRESH_TOKEN='ใส่ค่าของคุณ' --env CLOVER_OAUTH_CLIENT_ID='ใส่ค่าของคุณ' --env CLOVER_OAUTH_CLIENT_SECRET='ใส่ค่าของคุณ' -- uvx clover-mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"clover": {
"command": "uvx",
"args": [
"clover-mcp"
],
"env": {
"CLOVER_MERCHANT_ID": "ใส่ค่าของคุณ",
"CLOVER_ACCESS_TOKEN": "ใส่ค่าของคุณ",
"CLOVER_REGION": "ใส่ค่าของคุณ",
"CLOVER_SANDBOX": "ใส่ค่าของคุณ",
"CLOVER_AUTH_MODE": "ใส่ค่าของคุณ",
"CLOVER_REFRESH_TOKEN": "ใส่ค่าของคุณ",
"CLOVER_OAUTH_CLIENT_ID": "ใส่ค่าของคุณ",
"CLOVER_OAUTH_CLIENT_SECRET": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"clover": {
"type": "stdio",
"command": "uvx",
"args": [
"clover-mcp"
],
"env": {
"CLOVER_MERCHANT_ID": "ใส่ค่าของคุณ",
"CLOVER_ACCESS_TOKEN": "ใส่ค่าของคุณ",
"CLOVER_REGION": "ใส่ค่าของคุณ",
"CLOVER_SANDBOX": "ใส่ค่าของคุณ",
"CLOVER_AUTH_MODE": "ใส่ค่าของคุณ",
"CLOVER_REFRESH_TOKEN": "ใส่ค่าของคุณ",
"CLOVER_OAUTH_CLIENT_ID": "ใส่ค่าของคุณ",
"CLOVER_OAUTH_CLIENT_SECRET": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
CLOVER_REGION envCLOVER_SANDBOX envCLOVER_AUTH_MODE envCLOVER_OAUTH_CLIENT_ID envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
ดูจากแบบการต่อของ server ตัวนี้ และเอกสารของผู้ทำโปรแกรมแต่ละตัว ตรวจเมื่อ 10 พ.ย. 2569
ติดตั้งบนเครื่องได้ใน
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 11 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub SBolivarLoL ซึ่งเป็นเจ้าของ repo
มีการแก้โค้ดล่าสุด เดือนที่แล้ว
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
ถาม แชร์เคล็ดลับ หรือแจ้งว่าใช้ไม่ได้ เรียงตามที่คนกดว่ามีประโยชน์
ยังไม่มีใครโพสต์ ถามหรือแชร์เป็นคนแรกได้เลย
ข้อความในส่วนนี้เขียนโดยผู้ใช้ ไม่ใช่ทีม PopNx
ยังไม่มีรีวิว
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 2 จาก 2 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: CLOVER_MERCHANT_ID, CLOVER_ACCESS_TOKEN, CLOVER_REFRESH_TOKEN, CLOVER_OAUTH_CLIENT_SECRET
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด เดือนที่แล้ว และส่งรุ่นล่าสุด (0.7.0) เข้า registry 4 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Spree Commerce developer docs for AI agents, Stripe MCP, Sessy — Amazon SES observability
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
Spree Commerce docs for AI coding agents: build headless B2B and marketplace ecommerce on its APIs.
server ทางการของ Stripe ให้ AI ดูและจัดการลูกค้า สินค้า การชำระเงิน และใบแจ้งหนี้ ต่อผ่านคลาวด์ของ Stripe และล็อกอินแบบ OAuth
Read-only Amazon SES observability: search events, inspect bounces, pull delivery stats.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
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: v0.7.0 released; working tree (unreleased) — 56 tools, 6 prompts, both auth modes, 399 tests. Runs locally (stdio, single merchant) or remotely over HTTP with OAuth, single- or multi-tenant (see docs/DEPLOY.md). Endpoint contracts are sandbox-verified in docs/endpoints.md.
⚠️ 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.
| Tool | Kind | Notes |
|---|---|---|
get_merchant_info / get_merchant_properties | read | profile + POS config (banking fields never returned) |
get_sales_summary | read | aggregated window (see Sales summary semantics) |
get_sales_by_employee / get_tips_by_employee / get_sales_by_hour | read | employee attribution, tip-out, and merchant-local daypart reporting (PAYMENTS_R; employee names are best-effort) |
list_payments / list_refunds / list_credits / list_tenders | read | payments, refunds, credits, tender types |
list_orders / get_order / list_open_orders / list_order_types | read | order history + detail |
list_items / get_item / list_low_stock_items | read | inventory + stock; get_item(include=[...]) opts in to modifier_groups/tax_rates/categories/tags association detail |
list_categories / list_modifiers / list_taxes / list_item_groups / list_attributes / list_tags / list_discounts | read | catalog structure |
list_tip_suggestions / get_default_service_charge | read | tip presets + service-charge config |
list_devices / list_opening_hours / list_cash_events | read | terminals, hours, cash-drawer log |
get_top_items | read | best-sellers by units in a window |
list_employees / get_employee / list_shifts / list_active_shifts / list_roles | read | PINs never returned (EMPLOYEES_R) |
search_customers / get_customer | read | cards never returned |
whoami | read | multi-tenant identity diagnostic (no secrets) |
summarize_sales / inventory_reorder_suggestions / detect_sales_anomalies / suggest_item_categories / draft_customer_message | AI | reason via your client's model; read-only suggestions |
create_customer / update_customer | write | dup-check + dry_run; update confirms via elicitation |
create_item / create_category / create_order / add_line_item | write | guarded: dry_run + confirm before writing |
set_item_price_cents / set_item_stock_quantity / update_item_name | write | optimistic-lock pre-check, bounds, dry_run |
apply_order_discount | write | exactly one of percentage / amount_cents / catalogue_discount_id; negates positive amount_cents to Clover's required negative wire value; catalogue path resolves name+value client-side; dry_run preview includes a client-computed line-item subtotal |
create_modifier_group / create_modifier / create_tag | write | dup-guard (group/tag) or parent pre-check (modifier); guarded: dry_run + confirm before writing |
Every tool carries MCP behaviour annotations (readOnlyHint / destructiveHint / idempotentHint) so clients can parallelize reads and prompt before writes.
Published on PyPI — no clone needed:
uvx clover-mcp # run directly (recommended)
pip install clover-mcp # then launch with: clover-mcp
From source (for development):
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 |
CLOVER_READ_ONLY | false | Refuse every write before making a Clover request |
CLOVER_WRITE_LIMIT_COUNT | 10 | Maximum writes per safety window; 0 disables, negative values are rejected |
CLOVER_WRITE_LIMIT_WINDOW_S | 300 | Positive write-safety window in seconds |
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. Run scripts/get_sandbox_token.py to obtain tokens — it writes them straight to the store, so you only set CLOVER_AUTH_MODE, CLOVER_OAUTH_CLIENT_ID, CLOVER_OAUTH_CLIENT_SECRET, and CLOVER_MERCHANT_ID in .env (no token values needed). Pasting CLOVER_ACCESS_TOKEN / CLOVER_REFRESH_TOKEN into .env still works as an alternative.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 |
PAYMENTS_R | list_payments, list_refunds, list_credits, get_sales_summary, get_sales_by_employee, get_tips_by_employee, get_sales_by_hour |
ORDERS_R | …also get_top_items |
INVENTORY_R | list_items, get_item, list_low_stock_items, list_categories, list_modifiers, list_taxes, list_discounts, list_item_groups, list_attributes, list_tags |
INVENTORY_W | set_item_price_cents, set_item_stock_quantity, create_item, create_category, update_item_name, create_modifier_group, create_modifier, create_tag |
ORDERS_W | create_order, add_line_item, apply_order_discount |
CUSTOMERS_R | search_customers, get_customer |
CUSTOMERS_W | create_customer, update_customer |
EMPLOYEES_R | list_employees, get_employee, list_shifts, list_active_shifts, list_roles (optional) |
MERCHANT_R | …also list_devices, list_tenders, list_order_types, list_opening_hours, list_cash_events, list_tip_suggestions, get_default_service_charge |
Read scopes (*_R) are probed at startup; the server warns about any missing ones (it no longer exits — a hosted server must still start) and the affected tools return a 403 when called. EMPLOYEES_R is optional. 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.
By default this runs locally over stdio for a single merchant. To run it remotely:
server.py:mcp, enable the platform's built-in auth, and set single-merchant Clover env vars. The platform handles OAuth, HTTPS, and transport — no IdP setup, and do not set CLOVER_TRANSPORT/CLOVER_AUTH_* (that path needs an IdP and will fail).server.py:create_server, which makes clover-mcp an OAuth 2.1 resource server (validates your IdP's JWTs, publishes Protected Resource Metadata per RFC 9728, routes by token claim) and refuses to start without an IdP so it can't run open.Full setup for both in [docs/DEPLOY.md](docs/DEPLOY.md). How SSO/SAML, SCIM, audit, and multi-tenant authorization fit: [docs/enterprise-identity.md](docs/enterprise-identity.md).
get_sales_summary makes the accounting explicit so the LLM can explain it:
result=SUCCESS payment amounts. FAIL/AUTH/uncaptured PRE_AUTH are excluded./refunds endpoint (Clover refunds are separate objects with a positive amount, not negative payments). Voids are counted from voided payments. Both are reported separately (refund_count/refund_amount, void_count) — never netted into payment_count. net_sales = gross_sales - refund_amount.gross_sales via payment totals.note flags the window when any are present.uv pip install -e ".[dev]"
pytest ruff check src/ tests/ scripts/ ruff format --check src/ tests/ scripts/ mypy src/clover_mcp/
Correctness eval + latency/load benchmark against a sandbox: uv run python scripts/benchmark.py — methodology, results, and failure analysis in docs/eval.md.
Architecture (diagrams + module map): docs/ARCHITECTURE.md. Run a 5-minute demo: uv run python scripts/demo.py (or the