Odel
Stripe MCP

Stripe MCP

Local
@robinafaruqia1JavaScriptMITUpdated 3 days ago

Read-only MCP server for querying Stripe customers, payments, and invoices.

@devtechtricks/stripe-mcp

A read-only MCP server for querying Stripe — customers, payments, subscriptions, invoices, and refunds.

Use it with any AI or client that supports MCP (Model Context Protocol)—Cursor, Claude Desktop, Claude Code, Windsurf, or other MCP hosts.

Features

  • Read-only by design — no charge, refund, update, or delete tools
  • Test keys only — refuses to start with sk_live_ / rk_live_
  • Single file — just index.js, no build step
  • Works with any MCP client — Cursor, Claude, Windsurf, and others

MCP Configuration

Cursor — one-click install

Add MCP server to Cursor

After install, replace YOUR_STRIPE_TEST_KEY with a Stripe test secret (sk_test_... or rk_test_...) from the Stripe Dashboard. A restricted key with only read scopes is preferred.

Using npx (recommended)

Add to your MCP client config (e.g. Cursor: ~/.cursor/mcp.json or Settings → MCP; Claude: claude_desktop_config.json; etc.):

{
  "mcpServers": {
    "stripe-mcp": {
      "command": "npx",
      "args": ["-y", "@devtechtricks/stripe-mcp"],
      "env": {
        "STRIPE_SECRET_KEY": "sk_test_..."
      }
    }
  }
}

Claude Code:

claude mcp add stripe-mcp --env STRIPE_SECRET_KEY=sk_test_... -- npx -y @devtechtricks/stripe-mcp

From source (development)

git clone https://github.com/robinafaruqia/stripe-mcp.git
cd stripe-mcp
npm install
cp .env.example .env   # then put your sk_test_ / rk_test_ key in .env

Then in your MCP config:

{
  "mcpServers": {
    "stripe-mcp": {
      "command": "node",
      "args": ["/path/to/stripe-mcp/index.js"]
    }
  }
}

index.js loads .env from the package directory when STRIPE_SECRET_KEY is not already set. npm installs do not include .env — MCP clients should pass the key in env.

Available Tools

ToolDescription
list_customersList recent customers. Optional: limit, email.
get_customerGet a customer by ID. Required: customer_id.
list_paymentsList recent payment intents. Optional: limit, customer_id.
get_paymentGet a payment intent by ID. Required: payment_intent_id.
list_subscriptionsList subscriptions. Optional: limit, customer_id, status.
get_subscriptionGet a subscription by ID. Required: subscription_id.
list_invoicesList invoices. Optional: limit, customer_id, status.
list_refundsList refunds. Optional: limit, payment_intent_id.

Example

1. list_customers({ limit: 5 })
2. get_customer({ customer_id: "cus_ABC123" })
3. list_subscriptions({ customer_id: "cus_ABC123" })
4. list_payments({ limit: 10 })

License

MIT