LemonSqueezy MCP server for managing your store from AI assistants
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
One click adds this to your local Yaw MCP config so it's available in every Yaw Terminal session. Or install manually below.
MCP server for the LemonSqueezy API. Manage your store, products, customers, subscriptions, discounts, license keys, and more from any MCP-compatible AI assistant.
Requires Node.js 22 or later (engines.node is >=22).
Or one-click install via Smithery:
Smithery prompts for your env vars (API key, optional guardrails) and writes the config into your client for you.
Once configured, you can ask your AI assistant store-management questions in plain English and it routes them through the MCP tools:
Guardrails (refund cap, rate limit, store allowlist) catch the obvious mistakes before they reach LemonSqueezy. See Configuration for the env vars that turn them on.
Set your LemonSqueezy API key as an environment variable:
Get your API key from your LemonSqueezy dashboard.
A multi-stage Dockerfile is included at the repo root. The runtime image is a single bundled file on node:22-alpine running as the non-root node user, with no port exposed (stdio transport).
A matching Containerfile is provided for Podman users. It is generated from Dockerfile via npm run gen:containerfile. release.sh runs npm run check:containerfile in step 1, so a release fails if the two have drifted. This repo has no CI, so nothing checks a pull request for drift: run it yourself after editing Dockerfile.
Add to your MCP config:
Add to claude_desktop_config.json:
ls_get_user β Get the authenticated userls_get_store β Get a store by IDls_list_stores β List all stores (not gated by LEMONSQUEEZY_ALLOWED_STORE_IDS: returns every store the API key can see)ls_get_customer β Get a customer by IDls_list_customers β List customers (filter by store, email)ls_create_customer β Create a customerls_update_customer β Update a customerls_archive_customer β Archive a customerls_get_product β Get a product by IDls_list_products β List products (filter by store)ls_get_variant β Get a variant by IDls_list_variants β List variants (filter by product)ls_get_price β Get a price by IDls_list_prices β List prices (filter by variant)Both annotate every price record with effective_unit_price, the cents actually charged per unit, and effective_unit_price_note, which says where that number came from; unit_price_is_not_charged or unit_price_is_per_package is added where it applies. Read effective_unit_price rather than unit_price, which is vestigial on tiered (volume / graduated) pricing, or a variant's price. The subscription-item reads apply the same annotation to prices embedded via include=price.
ls_get_file β Get a file by IDls_list_files β List files (filter by variant)ls_get_order β Get an order by IDls_list_orders β List orders (filter by store, email)ls_generate_order_invoice β Generate a PDF invoicels_refund_order β Issue a refundls_get_order_item β Get an order item by IDls_list_order_items β List order items (filter by order, product, variant)ls_get_subscription β Get a subscription by IDls_list_subscriptions β List subscriptions (filter by store, status, product, etc.)ls_update_subscription β Update (plan switch, pause, billing anchor, trial)ls_cancel_subscription β Cancel a subscriptionls_get_subscription_invoice β Get a subscription invoice by IDls_list_subscription_invoices β List subscription invoices (filter by store, subscription, status)ls_generate_subscription_invoice β Generate a PDF invoicels_refund_subscription_invoice β Issue a refundls_get_subscription_item β Get a subscription item by IDls_list_subscription_items β List subscription items (filter by subscription, price)ls_update_subscription_item β Update quantityls_get_subscription_item_usage β Get current billing period usagels_get_usage_record β Get a usage record by IDls_list_usage_records β List usage records (filter by subscription item)ls_create_usage_record β Report metered usage (increment or set)ls_get_discount β Get a discount by IDls_list_discounts β List discounts (filter by store)ls_create_discount β Create a discount codels_delete_discount β Delete a discountls_get_discount_redemption β Get a discount redemption by IDls_list_discount_redemptions β List redemptions (filter by discount, order)ls_get_license_key β Get a license key by IDls_list_license_keys β List license keys (filter by store, order, product)ls_update_license_key β Update activation limit, expiry, or disabled statusls_get_license_key_instance β Get a license key activation by IDls_list_license_key_instances β List activations (filter by license key)ls_get_checkout β Get a checkout by IDls_list_checkouts β List checkouts (filter by store, variant)ls_create_checkout β Create a checkout URL (custom pricing, prefill, discounts)ls_get_webhook β Get a webhook by IDls_list_webhooks β List webhooks (filter by store)ls_create_webhook β Create a webhookls_update_webhook β Update a webhookls_delete_webhook β Delete a webhookls_activate_license β Activate a license key (no API key required)ls_validate_license β Validate a license key (no API key required)ls_deactivate_license β Deactivate a license key instance (no API key required). Destructive on every call: rate-limited and audited, with the license key masked in the audit entryls_get_affiliate β Get an affiliate by ID (commission rate, status, earnings)ls_list_affiliates β List affiliates (filter by user email). Not gated by LEMONSQUEEZY_ALLOWED_STORE_IDS: returns affiliates from every store the API key can seeBridge to a separate @yawlabs/lemonsqueezy-webhook-sink process so the agent can reconcile against webhooks that actually fired. Tools are always registered; if LEMONSQUEEZY_SINK_URL / LEMONSQUEEZY_SINK_ADMIN_TOKEN are unset, calls return a clear "not configured" error.
ls_sink_events_list β List webhook events the sink has received (filter by since / type / limit)ls_sink_event_mark_processed β Mark a sink event as processed by your consumer (idempotent)ls_sink_stats β Get total events, unprocessed count, and last-received timestampNo reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/lemonsqueezy-mcp-server-2)<a href="https://allmcps.com/mcp/lemonsqueezy-mcp-server-2"><img src="https://allmcps.com/api/badge/lemonsqueezy-mcp-server-2?style=directory" alt="LemonSqueezy MCP Server on AllMCPs" /></a>