MCPPlatform
Conecte sua API REST e obtenha um servidor MCP hospedado com ferramentas geradas, controles de política, aprovações, gerenciamento de credenciais e auditoria completa de chamadas de ferramentas.
Documentação
Documentação para desenvolvedores
Tudo para ir de uma especificação OpenAPI a um servidor MCP ativo e governado — e para chamá-lo a partir de um agente.
Início rápido
A forma mais rápida de ver um servidor MCP governado funcionando é conectar o Claude a um que já esteja ativo — sem cadastro, sem chave de API. Isso usa o Cat Facts, um dos 5 servidores de exemplo públicos em execução na plataforma, e leva menos de 5 minutos.
- No Claude, abra Configurações → Conectores → Adicionar conector personalizado.
- Cole a URL do endpoint MCP (dê o nome que quiser, ex.: "Cat Facts"): https://mcpplatform.dev/mcp/srv\_c7dcf1cd45
- Salve o conector. O Claude chama initialize e tools/list nos bastidores e descobre uma ferramenta, get_cat_fact.
- Peça algo ao Claude que o faça usar a ferramenta: Use o conector Cat Facts para me contar um fato aleatório sobre gatos.
O Claude emite um tools/call e recebe conteúdo real de volta pela mesma conexão 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 } }
O Claude lê esse JSON e responde em português claro com o fato — esse é o ciclo completo: conectar, descobrir ferramentas, chamar, responder.
Zero configuração: srv_c7dcf1cd45 é um dos 5 servidores de exemplo públicos, sem autenticação, ativos na plataforma agora — seguro para conectar diretamente, nada para configurar ou cadastrar.
Prefere ver a requisição/resposta bruta antes de abrir o Claude? Experimente o sandbox ao vivo — ele dispara as mesmas requisições tools/list/tools/call direto do seu navegador, sem necessidade de cadastro.
Pronto para publicar seu próprio servidor MCP governado a partir de uma especificação OpenAPI em vez de um de demonstração? Cadastre-se para criar um tenant e continue em Importar um contrato abaixo.
Conceitos principais
Tenant
Um espaço de trabalho isolado do cliente. Todos os servidores, contratos, ferramentas e auditoria pertencem a exatamente um tenant, aplicado na camada do banco de dados.
Contrato
Uma especificação OpenAPI ou URL base REST que você registra. Cada operação é mapeada para uma ferramenta.
Servidor MCP
Um pacote publicado e versionado de ferramentas, recursos e prompts que um agente instala por URL.
Ponto de decisão de política
O componente em tempo de execução que decide allow, allow_with_confirmation, allow_with_approval ou denied para cada chamada.
Guias de como fazer
Escritos focados em tarefas para as formas mais comuns de colocar uma API nesta plataforma. Cada um é autossuficiente — escolha o que corresponde ao seu ponto de partida:
- O que é MCP e como um servidor MCP é útil? — comece aqui se você é novo no protocolo.
- Como converter OpenAPI para MCP — as regras de mapeamento de especificação para ferramenta e a lógica de classificação de risco por trás delas.
- Como transformar Swagger em um servidor MCP — para um documento Swagger 2.0 mais antigo; sem necessidade de atualizar para OpenAPI 3.x primeiro.
- Transforme uma API REST em um servidor MCP — o passo a passo completo de especificação até endpoint publicado, usando uma API de demonstração pública ao vivo.
- Conecte sua API REST ao Claude — claude.ai, Claude Desktop e Claude Code, tudo a partir de um único servidor publicado.
- Conecte sua API REST ao ChatGPT — a mesma URL de instalação funciona também como conector do ChatGPT.
- Crie um servidor MCP a partir de OpenAPI sem código — o assistente do console ou pedir a um agente para fazer isso por você via o próprio servidor MCP da plataforma.
- Como adicionar MCP a uma API existente — sem mudança de código na sua API; comece com um endpoint e expanda a partir daí.
Importar um contrato
No console, vá para Build → Contracts → Import. Forneça uma URL de especificação ou cole JSON/YAML, escolha um ambiente, e nós validamos. O relatório de validação sinaliza esquemas ausentes e padrões arriscados antes da publicação.
Configurar política
Para cada ferramenta, defina sua classe de risco e escopos necessários. O mapeamento para decisões:
- Somente leitura dentro do escopo → allow
- Financeiro / com efeitos colaterais → allow_with_confirmation
- Destrutivo → allow_with_approval (retido para um humano)
- Escopo ausente ou acima do limite de taxa → denied
Conectar credenciais
Em Secure → Credentials, conecte um provedor OAuth ou armazene um segredo. O runtime faz a intermediação de tokens downstream de curta duração por chamada — o agente nunca vê a chave bruta.
Referência da API
GET /v1/bootstrap
Retorna o conjunto de dados completo com escopo do tenant que o console renderiza — tenants, servidores, ferramentas, contratos, auditoria e documentos de referência. Com escopo do tenant via RLS.
GET /mcp/:serverId/tools/list
Lista as ferramentas de um servidor (nome, descrição, método, caminho, risco, escopos). Apenas descoberta — sem efeitos colaterais, não cobrada.
POST /mcp/:serverId/tools/call
Invoca uma ferramenta. Corpo: { toolName, args, ctx? }. Retorna a decisão de política, a resposta downstream e a linha de auditoria gravada.
POST /mcp/mcp_msg/tools/call { "toolName": "delete_message", "args": { "sid": "SM1" } } → 200 { "result": { "decision": "allow_with_approval",... } }
Runtime e decisões
Cada chamada executa um pipeline fixo: resolver tenant (escopo RLS) → validar escopo → limite de taxa → decisão de política → intermediar credenciais → invocar downstream → anexar auditoria. Uma negação interrompe o fluxo antes de qualquer chamada downstream ser feita.
Segurança e RLS
A aplicação conecta-se ao Postgres como um papel não privilegiado sujeito à Segurança em Nível de Linha. Cada tabela de propriedade do tenant carrega um tenant_id e uma 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));
Como o RLS é aplicado pelo banco de dados, uma consulta que esquece sua cláusula WHERE ainda não consegue ler ou gravar linhas de outro tenant. As migrações são executadas como um papel proprietário separado com BYPASSRLS.
Verifique você mesmo: solicite /v1/bootstrap com um X-Tenant-Id diferente e você verá zero linhas de outros tenants.
Autohospedagem no GCP
A plataforma roda em Cloud SQL para PostgreSQL (armazenamento multitenant), Cloud Run (plano de controle + dados), um balanceador de carga HTTPS global com Cloud Armor e Cloud KMS para o cofre. Veja o runbook completo em doc/gcp-deployment-runbook.md.