Dodo Payments MCP Server
This server connects AI assistants and other MCP clients to the Dodo Payments API. It uses the streamable HTTP transport at this URL:
https://mcp.dodopayments.com/mcp
Sign in with Dodo Payments
You sign in with your Dodo Payments account through OAuth. You do not need an API key.
The first time that you connect, your client opens the Dodo Payments sign-in page (https://auth.dodopayments.com) in your browser. On the consent page, select:
- The business that the client can use.
- The modes: test mode, live mode, or both.
- The permissions of the client.
Then approve the connection. Start with test mode and read permissions. Approve live mode or write permissions only when you need them.
Connect your client
Claude Code
claude mcp add --transport http dodopayments https://mcp.dodopayments.com/mcp
Then run /mcp in Claude Code and select dodopayments to sign in.
Claude Desktop and Claude.ai
- Open Settings → Connectors.
- Click Add custom connector.
- Enter the URL
https://mcp.dodopayments.com/mcp.
Cursor
Add the server to ~/.cursor/mcp.json:
{
"mcpServers": {
"dodopayments": {
"url": "https://mcp.dodopayments.com/mcp"
}
}
}
ChatGPT
Open Settings → Apps & Connectors and create a connector. Enter https://mcp.dodopayments.com/mcp as the MCP server URL and select OAuth as the authentication. On some plans, custom connectors need developer mode.
Other clients
Use the URL https://mcp.dodopayments.com/mcp in a client that supports remote MCP servers with OAuth. If your client supports only local (stdio) servers, use mcp-remote as a bridge:
{
"mcpServers": {
"dodopayments": {
"command": "npx",
"args": ["-y", "mcp-remote@latest", "https://mcp.dodopayments.com/mcp"]
}
}
}
Test mode and live mode
A connection with one mode always uses that mode. A connection with both modes must send the Dodo-Mode: test or Dodo-Mode: live header with each request. If your client cannot send custom headers, select one mode on the consent page.
Each session keeps one mode. To use the other mode, start a new session with the other header value.
Claude Code:
claude mcp add --transport http dodopayments https://mcp.dodopayments.com/mcp --header "Dodo-Mode: test"
Cursor:
{
"mcpServers": {
"dodopayments": {
"url": "https://mcp.dodopayments.com/mcp",
"headers": { "Dodo-Mode": "test" }
}
}
}
Tools
search_docs: searches the Dodo Payments SDK documentation for methods, parameters, and examples.execute: runs JavaScript code with the Dodo Payments TypeScript SDK. The code definesasync function run(client) { ... }. Theclientis an SDK client for your business, in the mode of the session. The tool returns the value ofrunand theconsole.logoutput.
async function run(client) {
const page = await client.payments.list({ page_size: 10 });
return page.items.map((payment) => ({ id: payment.payment_id, status: payment.status }));
}
Each execute call runs in a new, isolated sandbox. The execute tool can create, change, refund, and delete data in your business. Approve only the permissions that you need.
Manage connections
To see or revoke your connections, open the Dodo Payments dashboard and go to Settings → Connected Apps. A revoked connection stops working. To use the client again, connect again.
Your client never gets an API key. The server does not send your sign-in token to the Dodo Payments API. To call the API, the execute tool exchanges your sign-in token for a short-lived API token in the mode of the session.
Older connections with an API key
Before the Dodo Payments sign-in, this server asked for an API key. Existing connections that use an API key continue to work. The https://mcp.dodopayments.com/sse URL still uses the API-key sign-in. For a new connection, use https://mcp.dodopayments.com/mcp and sign in with your Dodo Payments account.
Troubleshooting
- The client asks for an API key. The client uses the
/sseURL, or it kept an old sign-in. Remove the server from the client. Then add it again with the URLhttps://mcp.dodopayments.com/mcp. - "This connection has access to test mode and live mode. Send the Dodo-Mode header with test or live." Add the
Dodo-Modeheader, or connect again and select one mode. - "This connection has access to test mode only." (or live mode only) The
Dodo-Modeheader names the other mode. Remove the header, or set it to the mode of the connection. - "The session belongs to a different connection." The mode or the connection changed during a session. Start a new session, for example restart the client.
- "Dodo Payments refused this connection" The connection was revoked, or MCP access is off for this mode. Connect again.