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.
- En Claude, abre Configuración → Conectores → Añadir conector personalizado.
- Pega la URL del endpoint MCP (nómbralo como quieras, p. ej. "Cat Facts"): https://mcpplatform.dev/mcp/srv\_c7dcf1cd45
- Guarda el conector. Claude llama a initialize y tools/list entre bastidores y descubre una herramienta, get_cat_fact.
- 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:
- ¿Qué es MCP y cómo es útil un servidor MCP? — comienza aquí si eres nuevo en el protocolo.
- Cómo convertir OpenAPI a MCP — las reglas de mapeo de especificación a herramienta, y la lógica de clasificación de riesgo detrás de ellas.
- Cómo convertir Swagger en un servidor MCP — para un documento Swagger 2.0 más antiguo; no se necesita actualizar a OpenAPI 3.x primero.
- Convierte una API REST en un servidor MCP — el recorrido completo de especificación a endpoint publicado, usando una API de demostración pública en vivo.
- Conecta tu API REST a Claude — claude.ai, Claude Desktop y Claude Code, todo desde un servidor publicado.
- Conecta tu API REST a ChatGPT — la misma URL de instalación funciona también como conector de ChatGPT.
- Crea un servidor MCP desde OpenAPI sin código — el asistente de consola, o pidiendo a un agente que lo haga por ti a través del propio servidor MCP de la plataforma.
- Cómo añadir MCP a una API existente — sin cambios de código en tu API; comienza con un endpoint y expande desde ahí.
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.