@crosspay/mcp-server
v1.0.0
Published
Model Context Protocol server for the Crosspay Universal Billing API. Lets AI agents check cross-platform customer entitlements, list customers, and manage subscriptions across Apple App Store, Google Play, Stripe, and GoCardless.
Readme
Crosspay MCP Server
A Model Context Protocol server for Crosspay - the cross-store subscription & payment platform. It lets AI agents (Claude Desktop, Cursor, Claude Code, or any MCP client) check cross-platform customer entitlements and manage subscriptions across Apple App Store, Google Play, Stripe, and GoCardless through one interface.
Runs in a trusted backend/agent environment, authenticated with a Crosspay app API key.
📚 Docs: https://crosspay.dev/docs/getting-started/ai/mcp
Quick start
Add it to your MCP client (Claude Desktop, Cursor, Claude Code):
{
"mcpServers": {
"crosspay": {
"command": "npx",
"args": ["-y", "@crosspay/mcp-server"],
"env": {
"CROSSPAY_API_KEY": "your_private_key",
"CROSSPAY_MANAGEMENT_API_KEY": "your_management_key"
}
}
}
}Set whichever keys you need - see Tools and Environment. Create keys in the Crosspay dashboard: your API Keys -> Create New API Key -> Management.
Tools
Backend tools - need a private key (CROSSPAY_API_KEY):
| Tool | What it does | Destructive |
|------|--------------|-------------|
| crosspay_check_customer_entitlements | Single source of truth: does this customer have active premium access on any store? Returns subscriptions + one-time purchases. | no |
| crosspay_list_customers | Cursor-paginated list of customers with status and entitlements. | no |
| crosspay_cancel_stripe_subscription | Cancel a customer's Stripe subscription for an entitlement. | yes |
| crosspay_cancel_gocardless_subscription | Cancel a customer's GoCardless subscription for an entitlement. | yes |
Management tools - need a management key (CROSSPAY_MANAGEMENT_API_KEY):
| Tool | What it does |
|------|--------------|
| crosspay_list_apps / crosspay_create_app | Discover / create apps in an org. |
| crosspay_list_entitlements / crosspay_create_entitlement | Manage access tiers. |
| crosspay_list_products | List store products linked to an entitlement. |
| crosspay_get_store_config | See which stores are connected (no secrets returned). |
| crosspay_store_connection_guide | Explain how to connect a store: dashboard location, webhook URLs, which fields are secret. |
The two key kinds are independent - set the private key, the management key, or both.
Security
Store secrets never pass through this server. Store credentials (Stripe/GoCardless keys, Google Play service-account JSON, Apple keys) are entered only in the Crosspay dashboard. The server has no tool that accepts a store secret, and the Crosspay API rejects store-credential writes from API keys. The MCP server and the Crosspay skills only guide you to the dashboard.
Keep your keys in a secrets manager or environment variable - never in client code or a public repo. Keys are revocable any time from the dashboard.
Environment
| Var | Required | Default | Notes |
|-----|----------|---------|-------|
| CROSSPAY_API_KEY | one of these two | - | Private app key → backend tools. |
| CROSSPAY_MANAGEMENT_API_KEY | one of these two | - | Management app key → management + store-guide tools. |
| CROSSPAY_BASE_URL | no | https://api.crosspay.dev | Crosspay API origin. |
| CROSSPAY_DASHBOARD_URL | no | https://app.crosspay.dev | Used only by the store-connection guide. |
| TRANSPORT | no | stdio | http for a remote streamable-HTTP server. |
| PORT | no | 3000 | Only when TRANSPORT=http. |
Example prompts
- "Does [email protected] still have premium access?"
- "List the first 20 sandbox customers and tell me who's on an active subscription."
- "Cancel [email protected]'s Stripe subscription for the
Pro Monthlyentitlement." - "How do I connect Stripe to my Acme app?"
Build from source
npm install
npm run build
npm start # run via stdio
npx @modelcontextprotocol/inspector node dist/index.js # interactive tool testingLicense
MIT
