MCPPlatform

Conecta tu API REST y obtén un servidor MCP alojado con herramientas generadas, controles de políticas, aprobaciones, gestión de credenciales y auditoría completa de llamadas a herramientas.

Documentación

Documentación para desarrolladores

Todo lo necesario para pasar de una especificación OpenAPI a un servidor MCP gobernado y en vivo — y para llamarlo desde un agente.

Inicio rápido

La forma más rápida de ver un servidor MCP gobernado funcionando es conectar Claude a uno que ya esté en vivo — sin registro, sin clave API. Esto utiliza Cat Facts, uno de los 5 servidores de ejemplo públicos que se ejecutan en la plataforma, y toma menos de 5 minutos.

  1. En Claude, abre Configuración → Conectores → Añadir conector personalizado.
  2. Pega la URL del endpoint MCP (nómbralo como quieras, p. ej. "Cat Facts"): https://mcpplatform.dev/mcp/srv\_c7dcf1cd45
  3. Guarda el conector. Claude llama a initialize y tools/list entre bastidores y descubre una herramienta, get_cat_fact.
  4. Pide a Claude algo que le haga usar la herramienta: Usa el conector Cat Facts para contarme un dato curioso aleatorio sobre gatos.

Claude emite un tools/call y recibe contenido real a través de la misma conexión JSON-RPC:

POST /mcp/srv_c7dcf1cd45 { "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "get_cat_fact", "arguments": {} } } → 200 { "result": { "content": [{ "type": "text", "text": "{\"fact\": \"Cats only sweat through their paws...\", \"length\": 65}" }], "isError": false } }

Claude lee ese JSON y te responde en inglés sencillo con el dato — ese es el ciclo completo: conectar, descubrir herramientas, llamar, responder.

Cero configuración: srv_c7dcf1cd45 es uno de los 5 servidores de ejemplo públicos y sin autenticación que están en vivo en la plataforma ahora mismo — seguro para conectarse directamente, nada que configurar o para lo que registrarse.

¿Prefieres ver la solicitud/respuesta cruda antes de abrir Claude? Prueba el sandbox en vivo — dispara las mismas solicitudes tools/list/tools/call directamente desde tu navegador, sin necesidad de registro.

¿Listo para publicar tu propio servidor MCP gobernado a partir de una especificación OpenAPI en lugar de uno de demostración? Regístrate para crear un tenant, y luego continúa en Importar un contrato a continuación.

Conceptos principales

Tenant

Un espacio de trabajo de cliente aislado. Todos los servidores, contratos, herramientas y auditoría pertenecen exactamente a un tenant, aplicado a nivel de base de datos.

Contrato

Una especificación OpenAPI o URL base REST que registras. Cada operación se asigna a una herramienta.

Servidor MCP

Un paquete publicado y versionado de herramientas, recursos y prompts que un agente instala por URL.

Punto de decisión de políticas

El componente en tiempo de ejecución que decide allow, allow_with_confirmation, allow_with_approval o denied para cada llamada.

Guías prácticas

Escritos enfocados en tareas para las formas más comunes en que las personas llevan una API a esta plataforma. Cada una es autónoma — elige la que coincida con tu punto de partida:

Importar un contrato

En la consola ve a Build → Contracts → Import. Proporciona una URL de especificación o pega JSON/YAML, elige un entorno, y lo validamos. El informe de validación señala esquemas faltantes y valores predeterminados riesgosos antes de publicar.

Configurar políticas

Para cada herramienta establece su clase de riesgo y ámbitos requeridos. El mapeo a decisiones:

  • Solo lectura dentro del ámbito → allow
  • Financiero / con efectos secundarios → allow_with_confirmation
  • Destructivo → allow_with_approval (retenido para un humano)
  • Ámbito faltante o límite de tasa excedido → denied

Conectar credenciales

En Secure → Credentials, conecta un proveedor OAuth o almacena un secreto. El tiempo de ejecución gestiona tokens downstream de corta duración por llamada — el agente nunca ve la clave cruda.

Referencia de API

GET /v1/bootstrap

Devuelve el conjunto de datos completo con ámbito de tenant que la consola renderiza — tenants, servidores, herramientas, contratos, auditoría y documentos de referencia. Con ámbito de tenant vía RLS.

GET /mcp/:serverId/tools/list

Lista las herramientas de un servidor (nombre, descripción, método, ruta, riesgo, ámbitos). Solo descubrimiento — sin efectos secundarios, no se factura.

POST /mcp/:serverId/tools/call

Invoca una herramienta. Cuerpo: { toolName, args, ctx? }. Devuelve la decisión de política, la respuesta downstream y la fila de auditoría escrita.

POST /mcp/mcp_msg/tools/call { "toolName": "delete_message", "args": { "sid": "SM1" } } → 200 { "result": { "decision": "allow_with_approval",... } }

Tiempo de ejecución y decisiones

Cada llamada ejecuta un pipeline fijo: resolver tenant (ámbito RLS) → validar ámbito → límite de tasa → decisión de política → gestionar credenciales → invocar downstream → añadir auditoría. Una denegación corta el circuito antes de que se realice cualquier llamada downstream.

Seguridad y RLS

La aplicación se conecta a Postgres como un rol no privilegiado sujeto a Seguridad a Nivel de Fila. Cada tabla propiedad del tenant lleva un tenant_id y una política:

CREATE POLICY tenant_isolation ON tool USING (tenant_id = current_setting('app.tenant_id', true)) WITH CHECK (tenant_id = current_setting('app.tenant_id', true));

Debido a que RLS es aplicada por la base de datos, una consulta que olvida su cláusula WHERE aún no puede leer ni escribir filas de otro tenant. Las migraciones se ejecutan como un rol propietario separado con BYPASSRLS.

Verifícalo tú mismo: solicita /v1/bootstrap con un X-Tenant-Id diferente y verás cero filas de otros tenants.

Autoalojamiento en GCP

La plataforma se ejecuta en Cloud SQL para PostgreSQL (almacén multi-tenant), Cloud Run (plano de control + datos), un balanceador de carga HTTPS global con Cloud Armor y Cloud KMS para la bóveda. Consulta el runbook completo en doc/gcp-deployment-runbook.md.