stripe-mcp
README.md
[](https://www.npmjs.com/package/@devtechtricks/stripe-mcp)
[](https://www.npmjs.com/package/@devtechtricks/stripe-mcp)
[](https://github.com/robinafaruqia/stripe-mcp/blob/main/LICENSE)
[](https://github.com/robinafaruqia/stripe-mcp)
# 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
## Cursor plugin
This repo is an [Agent Plugin](https://open-plugins.com) and a Cursor plugin. [cursor.directory](https://cursor.directory/plugins/new) only detects components committed at the repo root. The files it needs are:
| File | Purpose |
|------|---------|
| `mcp.json` | MCP server entry (`npx -y @devtechtricks/stripe-mcp`) |
| `plugin.json` | Open Plugins manifest |
| `.cursor-plugin/plugin.json` | Cursor listing metadata and the `STRIPE_SECRET_KEY` variable |
After these files are on the default branch of the public GitHub repo, submit `https://github.com/robinafaruqia/stripe-mcp` at [cursor.directory/plugins/new](https://cursor.directory/plugins/new). On install, set `STRIPE_SECRET_KEY` to a Stripe **test** key (`sk_test_...` or `rk_test_...`).
## MCP Configuration
### Cursor — one-click install
[](https://cursor.com/en-US/install-mcp?name=stripe-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBkZXZ0ZWNodHJpY2tzL3N0cmlwZS1tY3AiXSwiZW52Ijp7IlNUUklQRV9TRUNSRVRfS0VZIjoiWU9VUl9TVFJJUEVfVEVTVF9LRVkifX0=)
After install, replace `YOUR_STRIPE_TEST_KEY` with a Stripe **test** secret (`sk_test_...` or `rk_test_...`) from the [Stripe Dashboard](https://dashboard.stripe.com/test/apikeys). 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.):
```json
{
"mcpServers": {
"stripe-mcp": {
"command": "npx",
"args": ["-y", "@devtechtricks/stripe-mcp"],
"env": {
"STRIPE_SECRET_KEY": "sk_test_..."
}
}
}
}
```
Claude Code:
```bash
claude mcp add stripe-mcp --env STRIPE_SECRET_KEY=sk_test_... -- npx -y @devtechtricks/stripe-mcp
```
### From source (development)
```bash
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:
```json
{
"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
| Tool | Description |
|------|-------------|
| `list_customers` | List recent customers. Optional: `limit`, `email`. |
| `get_customer` | Get a customer by ID. Required: `customer_id`. |
| `list_payments` | List recent payment intents. Optional: `limit`, `customer_id`. |
| `get_payment` | Get a payment intent by ID. Required: `payment_intent_id`. |
| `list_subscriptions` | List subscriptions. Optional: `limit`, `customer_id`, `status`. |
| `get_subscription` | Get a subscription by ID. Required: `subscription_id`. |
| `list_invoices` | List invoices. Optional: `limit`, `customer_id`, `status`. |
| `list_refunds` | List 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
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues