Skip to main content
Glama
hahahamid

Razorpay MCP Server

by hahahamid
README.md
# rzp-mcp

An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that exposes the Razorpay API as tools for Claude and other LLM clients. Interact with your Razorpay account using natural language.

```
"Check if payment pay_xyz went through"
"List my last 10 orders from this month"
"Issue a ₹200 partial refund on payment pay_abc"
"What was settled to my account last week?"
```

## Tools

| Tool | Description |
|------|-------------|
| `razorpay_fetch_payment` | Fetch full payment details by ID |
| `razorpay_payment_status` | Quick status check — status, amount, captured, method |
| `razorpay_capture_payment` | Capture an authorized payment |
| `razorpay_create_order` | Create a new order |
| `razorpay_fetch_order` | Fetch an order by ID |
| `razorpay_list_orders` | List orders with date/status filters |
| `razorpay_issue_refund` | Issue a full or partial refund |
| `razorpay_fetch_refund` | Check refund status |
| `razorpay_fetch_settlement` | Fetch a settlement by ID |
| `razorpay_list_settlements` | List settlements with date filters |

## Setup

### 1. Get your Razorpay API keys

Go to [Razorpay Dashboard → Settings → API Keys](https://dashboard.razorpay.com/app/keys) and generate a key pair.

Use **test mode** keys (`rzp_test_...`) while getting started.

### 2. Configure Claude Desktop

Add this to your Claude Desktop config file:

**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "razorpay": {
      "command": "npx",
      "args": ["-y", "rzp-mcp"],
      "env": {
        "RAZORPAY_KEY_ID": "rzp_test_xxxxxxxxxxxx",
        "RAZORPAY_KEY_SECRET": "your_secret_here"
      }
    }
  }
}
```

Restart Claude Desktop. You should see the Razorpay tools available.

## Running as HTTP server

For remote/web clients, run in HTTP mode:

```bash
RAZORPAY_KEY_ID=rzp_test_xxx RAZORPAY_KEY_SECRET=yyy npx rzp-mcp http
```

This starts:
- **Streamable HTTP** at `http://localhost:3000/mcp` (MCP spec 2025-11-25)
- **Legacy SSE** at `http://localhost:3000/sse` (backwards-compatible)

Set `PORT` env var to change the port (default: 3000).

## Auth

Credentials are passed exclusively via environment variables — never as tool arguments.

```
RAZORPAY_KEY_ID=rzp_live_xxxxxxxxxxxx
RAZORPAY_KEY_SECRET=your_secret_here
```

The server validates credentials at startup and exits with a clear error message if they are missing.

## Amount units

Razorpay uses the **smallest currency unit** for all amounts:
- **INR:** paise (₹500.00 = `50000`)
- **USD:** cents ($10.00 = `1000`)

All tool descriptions explicitly document this to prevent mistakes.

## Development

```bash
git clone https://github.com/hahahamid/razorpay-mcp
cd razorpay-mcp
npm install
npm test        # run unit tests
npm run build   # build to dist/
```

## License

MIT