Saltar al contenido principal

Límite de Solicitudes

El servidor MCP gasta los mismos límites que la API REST, contados por persona en la organización — no por token —, más un límite propio para el protocolo. Generar un token nuevo, o reautorizar el cliente, no reinicia el presupuesto.

PresupuestoQué cuentaLímite (producción)
Protocolo MCPtoda solicitud a / (initialize, tools/list, ping, tools/call)1000/hora por persona en la organización
Lecturas de la APIcada tools/call de una tool readel mismo de la API
Escrituras de la APIcada tools/call de una tool write o destructiveel mismo de la API
Acciones que mueven dinerosend_to_bank, cancel_dispatch, charge, charge_cancelel mismo de la API

Una llamada de tool nunca es más barata que el endpoint que refleja: se cuenta en el presupuesto del protocolo y, de nuevo, en el presupuesto de la API que gastaría la misma llamada REST — con el mismo tamaño de presupuesto de la API, por persona. Un agente que recorre listados en bucle no esquiva el límite que el mismo recorrido pagaría por REST. Hay también un techo por IP, muy por encima de cualquier uso legítimo.

Cuando se alcanza el límite​

En el protocolo, el servidor responde 429 y el mensaje JSON-RPC no llega a procesarse:

HTTP/1.1 429 Too Many Requests
Retry-After: 37
Content-Type: application/json

{ "error": { "code": "RATE_LIMITED", "message": "MCP request rate limit exceeded for this person in this organization." } }

En el presupuesto de la API, la tool devuelve un resultado con error, para que el modelo lo lea y espere:

{ "isError": true, "content": [{ "type": "text",
"text": "{ \"error\": { \"code\": \"RATE_LIMITED\", \"details\": { \"retry_after_seconds\": 37 } } }" }] }

En ambos casos, espera los segundos indicados antes de intentarlo de nuevo.

Gastando menos​

Un agente consume el mismo presupuesto que tu backend — y, en las lecturas, ese presupuesto es pequeño. Tres hábitos resuelven casi todo:

  • Filtra antes de paginar. finance_payables_list { filters: { status: "pending", due_date: { lte: "2026-11-30" } } } cuesta una llamada; traer todo para filtrar en el modelo cuesta decenas.
  • Usa los totales listos. "Cuánto vence este mes" es una llamada a finance_payables_aggregates, no un recorrido de finance_payables_list.
  • Pide solo las columnas que interesan. fields no reduce el número de llamadas, pero reduce mucho el contexto gastado — ver Listado, filtros y campos.