Skip to main content
Glama
jsyapps

Stripe MCP Server

by jsyapps
README.md
# Stripe MCP Server

A Model Context Protocol (MCP) server that provides Stripe payment integration capabilities to Claude Desktop. This server enables you to create payment links, process payments, manage products and customers directly from Claude.

## Features

### Payment Links
- Create payment links with products and prices
- List and manage existing payment links
- Update payment link settings
- Support for billing address collection and promotion codes

### Payment Processing
- Create and confirm payment intents
- Monitor payment status
- Handle customer payment methods

### Product & Price Management
- Create and manage products
- Set up pricing (one-time or recurring)
- Product catalog management

### Customer Management
- Create and manage customer records
- View customer payment history
- Customer data management

## Setup

### 1. Install Dependencies

```bash
cd stripe_mcp
npm install
```

### 2. Build the Server

```bash
npm run build
```

### 3. Set Up Environment Variables

Create a `.env` file in the stripe_mcp directory:

```env
STRIPE_SECRET_KEY=sk_test_your_stripe_secret_key_here
```

You can get your Stripe secret key from your [Stripe Dashboard](https://dashboard.stripe.com/apikeys).

### 4. Configure Claude Desktop

Add the following to your Claude Desktop MCP configuration file:

**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "stripe": {
      "command": "node",
      "args": [
        "/path/to/your/stripe_mcp/dist/index.js"
      ],
      "env": {
        "STRIPE_SECRET_KEY": "sk_test_your_stripe_secret_key_here"
      }
    }
  }
}
```

Replace `/path/to/your/stripe_mcp/` with the actual path to your stripe_mcp directory.

## Usage Examples

### Create a Payment Link

```javascript
// Create a simple payment link for a $20 service
create_payment_link({
  line_items: [{
    price_data: {
      currency: "usd",
      unit_amount: 2000, // $20.00 in cents
      product_data: {
        name: "Tutoring Session",
        description: "1-hour math tutoring session"
      }
    },
    quantity: 1
  }],
  billing_address_collection: "required",
  allow_promotion_codes: true
})
```

### Create a Payment Intent

```javascript
// Create a payment intent for direct processing
create_payment_intent({
  amount: 5000, // $50.00 in cents
  currency: "usd",
  description: "Monthly subscription payment",
  receipt_email: "customer@example.com"
})
```

### Create a Customer

```javascript
// Create a customer record
create_customer({
  email: "student@example.com",
  name: "John Doe",
  metadata: {
    student_id: "12345"
  }
})
```

## Available Tools

### Payment Links
- `create_payment_link` - Create new payment links
- `list_payment_links` - List existing payment links
- `get_payment_link` - Get payment link details
- `update_payment_link` - Update payment link settings

### Payment Processing
- `create_payment_intent` - Create payment intents
- `confirm_payment_intent` - Confirm payments
- `get_payment_intent` - Get payment details
- `list_payment_intents` - List payment intents

### Products & Prices
- `create_product` - Create products
- `list_products` - List products
- `get_product` - Get product details
- `create_price` - Create prices
- `list_prices` - List prices

### Customer Management
- `create_customer` - Create customers
- `list_customers` - List customers
- `get_customer` - Get customer details
- `get_customer_payments` - Get payment history

## Development

### Run in Development Mode

```bash
npm run dev
```

### Test the Server

After building and configuring, restart Claude Desktop and you should see the Stripe tools available in your conversations.

## Security Notes

- Never expose your Stripe secret keys publicly
- Use test keys during development
- Set up webhooks in production for reliable payment status updates
- Follow Stripe's security best practices

## Support

For issues with this MCP server, please check:
1. Your Stripe API keys are correct
2. The server builds without errors (`npm run build`)
3. Claude Desktop configuration is properly set up
4. Environment variables are loaded correctly

For Stripe API questions, refer to the [Stripe Documentation](https://docs.stripe.com/).

TDQS

C2.9/5.0

Scored across 17 tools

Disambiguation4/5

Tools are clearly divided by resource (payment links, payment intents, products, prices, customers), but there is some potential overlap between payment links and payment intents, and between list_payment_intents and get_customer_payments. Descriptions help distinguish them, but an agent might occasionally misselect.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., create_payment_link, list_prices, get_customer), using lowercase snake_case throughout. This makes the API predictable and easy to navigate.

Tool Count4/5

17 tools is slightly above the ideal range but still appropriate for Stripe's domain, covering payment links, intents, products, prices, and customers. Each tool addresses a distinct need, though a few could be consolidated without loss.

Completeness3/5

Core CRUD operations exist for payment links, products, and customers, but are incomplete: products and customers lack update/delete, prices lack a get endpoint, and payment intents lack cancel/refund capabilities. This creates workflow gaps for managing the full lifecycle.

Maintenance

ActivityInactive
ResponsivenessNo issues