Stripe MCP Server
Stripe MCP Server
Servidor MCP (Model Context Protocol) que expone la API de Stripe a Claude. Pensado para desplegarse en Railway en modo solo lectura.
👉 Los pasos de despliegue están en DEPLOY-RAILWAY.md.
Qué hace
Da a Claude 17 herramientas para consultar Stripe: clientes, cobros, pagos, suscripciones, facturas, catálogo, saldo, transacciones, payouts, eventos y disputas — más una herramienta genérica que alcanza cualquier endpoint, otra que resuelve cualquier objeto por su id, y un reporte agregado de ingresos.
Herramienta | Endpoint |
| verifica la key, el modo y los permisos |
| cualquier endpoint, cualquier método |
| resuelve cualquier id ( |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| pagina y suma bruto/comisiones/neto |
Related MCP server: Stripe MCP Server
Variables de entorno
Variable | Requerida | Default | Descripción |
| sí | — | Restricted key ( |
| en Railway |
|
|
| si | — | Secreto que protege el endpoint. Mínimo 32 caracteres |
| no | ver abajo |
|
| no |
| Segunda reja: escrituras con key live |
| no |
| Para apuntar a un mock |
| no | — | Fija el header |
| no | — | Cuenta de Connect ( |
| no |
| Truncado de respuestas |
| no |
| Timeout en segundos |
| no |
| Railway lo inyecta solo |
Las tres rejas de escritura
Stripe mueve dinero real: un POST equivocado reembolsa a un cliente, cancela
una suscripción o borra un registro para siempre. Por eso hay tres candados
independientes, y una escritura tiene que pasar por los tres.
1. STRIPE_READ_ONLY — el default depende del transporte
stdio(local): escrituras permitidas por default. Un solo usuario de confianza en su propia máquina.http(remoto): escrituras bloqueadas por default. Hay que ponerSTRIPE_READ_ONLY=0a propósito para habilitarlas.
Olvidar la variable en un despliegue público lo deja en solo lectura, no abierto.
2. STRIPE_ALLOW_LIVE_WRITES — la reja de modo live
Aunque apagues el read-only, una key live sigue rechazando escrituras hasta
que pongas STRIPE_ALLOW_LIVE_WRITES=1. Las keys de test (sk_test_, rk_test_)
no pasan por esta reja: experimentar contra datos de prueba no debe requerir
ceremonia.
3. confirm=true — la reja por endpoint
Los endpoints destructivos (/v1/refunds, /v1/payouts, /v1/transfers,
cancelaciones de suscripción, borrado de clientes, cierre de disputas) exigen
confirm=true en la llamada, además de todo lo anterior. Una herramienta
disparada por error no llega ahí sola.
Cada rechazo dice cuál de las tres rejas lo detuvo.
Autenticación del endpoint
El protocolo MCP no trae autenticación propia. En modo http, este servidor
exige Authorization: Bearer <MCP_AUTH_TOKEN> en cada request, o el secreto
embebido en la ruta (/s/<secreto>/mcp) para los connectors de Claude.
/healthz es la única ruta pública.
El servidor se niega a arrancar si MCP_AUTH_TOKEN falta o tiene menos de
32 caracteres. Es a propósito: evita publicar un gateway abierto a tu cuenta de
Stripe por descuido.
Correr en local
pip install -r requirements.txt
# stdio (para Claude Desktop)
STRIPE_API_KEY=rk_test_xxx python stripe_mcp.py
# http (como en Railway)
STRIPE_MCP_TRANSPORT=http \
STRIPE_API_KEY=rk_test_xxx \
MCP_AUTH_TOKEN=$(python3 -c "import secrets;print(secrets.token_urlsafe(48))") \
PORT=8000 python stripe_mcp.pyAl arrancar imprime en qué modo quedó:
[stripe-mcp] streamable-http on 0.0.0.0:8000 mode=test read_only=True allow_live_writes=False writes_enabled=FalseNotas sobre la API de Stripe
Cosas que el servidor ya resuelve por ti, y que conviene saber al leer las respuestas:
Stripe no acepta JSON en el body. Todo va
application/x-www-form-urlencodedcon notación de corchetes:metadata[order]=6735,expand[]=customer,items[0][price]=price_1. El servidor traduce dicts y listas anidadas solo.El dinero es un entero en la unidad mínima.
2500conusdes $25.00. Y hay monedas de cero decimales (JPY, KRW, CLP…) donde el entero es el monto — dividir entre 100 ahí sería un error. Las salidas formateadas lo respetan.Test y live son universos separados. Un id creado en test devuelve 404 con una key live y viceversa. Es la causa más común de un 404 con un id correcto.
La paginación es por cursor, no por página. Se toma el último id y se pasa como
starting_after. Cuando hay más, la respuesta incluyenext_page_hintcon el valor exacto.No hay
PATCHniPUT. Stripe usaPOSTtanto para crear como para actualizar. SoloGET,POSTyDELETE.Las listas no filtran por
statusen charges ni payment_intents. Hay que filtrar sobre los registros devueltos o usarstripe_search.stripe_list_subscriptionsomite las canceladas por default. Para preguntas de churn hay que pasarstatus='all'o la respuesta sale mal en silencio.El índice de búsqueda tarda hasta un minuto en ver un objeto recién creado. Para objetos nuevos, buscarlos por id.
Los eventos se guardan solo 30 días. Más atrás hay que ir a los objetos.
No hay endpoint de agregación. Por eso
stripe_revenue_summarypagina y suma del lado del servidor MCP, y avisa concomplete=falsecuando el tope de páginas cortó el conteo — esos totales son parciales y no deben reportarse como finales.Cada
POSTsale con unIdempotency-Key, así que un reintento no cobra dos veces. Stripe los recuerda 24 horas.
Seguridad
Los secretos van en variables de entorno, nunca en el código. El
.gitignorebloquea archivos.env.Usa una restricted key (
rk_...), no la secret key. Se crean en el dashboard cuantas veces quieras y se les dan permisos por recurso. Para este despliegue: todo en Read, nada en Write. Unask_live_da acceso total a la cuenta, incluido mover dinero.Un solo token compartido significa cero trazabilidad por persona. Todo lo que haga cualquiera queda registrado como la misma key.
No hay rate limiting propio. Quien tenga el
MCP_AUTH_TOKENpuede pegarle a Stripe hasta toparse con el límite de Stripe (~100 req/s de lectura en live).Para cortar el acceso de golpe: borra la restricted key en https://dashboard.stripe.com/apikeys — el servidor queda inútil al instante.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables Claude to connect to and interact with SQLite, SQL Server, PostgreSQL, and MySQL databases through natural language. Supports executing queries, managing tables, exporting data, and storing business insights with authentication options including AWS IAM.853MIT
- AlicenseNot gradedqualityCmaintenanceEnables natural language interaction with Stripe accounts to query customers, revenue, invoices, subscriptions, disputes, and issue refunds.591MIT
- AlicenseCqualityDmaintenanceEnables Claude to integrate with Stripe for creating payment links, processing payments, and managing products and customers.1759MIT
- AlicenseNot gradedqualityDmaintenanceEnables integration with Stripe APIs through function calling, supporting operations on customers, products, invoices, subscriptions, and more.10,572MIT
Related MCP Connectors
Read-only bank access for your AI agent. Connects Claude, ChatGPT, Cursor, Gemini, Codex.
Connect your team's living knowledge base — docs, data, issues, CRM — to Claude and ChatGPT.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DanFrModa/Stripe-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server