/ Diretório / Playground / Unla
● Comunidade AmoyLab ⚡ Instantâneo

Unla

por AmoyLab · AmoyLab/Unla

Transforme qualquer API REST em um servidor MCP via YAML — sem mudanças de código, hot reload, multi-tenant, SSE + HTTP Streamable.

Unla (AmoyLab) é um gateway Go leve que converte APIs REST e serviços MCP existentes em endpoints MCP via configuração YAML. Interface web para gerenciamento, multi-tenant, pré-autenticação OAuth, implantação Docker-first.

Por que usar

Principais recursos

Demo ao vivo

Como fica na prática

unla.replay ▶ pronto
0/0

Instalar

Escolha seu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "unla": {
      "command": "npx",
      "args": [
        "-y",
        "Unla"
      ],
      "_inferred": true
    }
  }
}

Abra Claude Desktop → Settings → Developer → Edit Config. Reinicie após salvar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "unla": {
      "command": "npx",
      "args": [
        "-y",
        "Unla"
      ],
      "_inferred": true
    }
  }
}

Cursor usa o mesmo esquema mcpServers que o Claude Desktop. Config de projeto vence a global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "unla": {
      "command": "npx",
      "args": [
        "-y",
        "Unla"
      ],
      "_inferred": true
    }
  }
}

Clique no ícone MCP Servers na barra lateral do Cline, depois "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "unla": {
      "command": "npx",
      "args": [
        "-y",
        "Unla"
      ],
      "_inferred": true
    }
  }
}

Mesmo formato do Claude Desktop. Reinicie o Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "unla",
      "command": "npx",
      "args": [
        "-y",
        "Unla"
      ]
    }
  ]
}

O Continue usa um array de objetos de servidor em vez de um map.

~/.config/zed/settings.json
{
  "context_servers": {
    "unla": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "Unla"
        ]
      }
    }
  }
}

Adicione em context_servers. Zed recarrega automaticamente ao salvar.

claude mcp add unla -- npx -y Unla

Uma linha só. Verifique com claude mcp list. Remova com claude mcp remove.

Casos de uso

Usos do mundo real: Unla

Como expor sua API REST interna como MCP sem escrever um servidor

👤 Engenheiros de plataforma, times de ferramentas internas ⏱ ~30 min intermediate

Quando usar: Você tem uma API REST corporativa e quer que Claude/Cursor a utilize sem construir um MCP customizado.

Pré-requisitos
  • Docker — docker.com/get-started
  • Especificação OpenAPI/Swagger para a API (útil mas opcional) — A maioria das APIs internas já possuem uma
Fluxo
  1. Implante Unla
    docker run -d --name unla -p 8080:80 -p 5234:5234 -p 5235:5235 ghcr.io/amoylab/unla/allinone:latest✓ Copiado
    → Interface web em :8080
  2. Adicione uma definição de servidor YAML
    Na interface, crie um servidor 'internal-api' com endpoints /users (GET) e /orders (GET, POST), mapeados para https://api.internal/v1.✓ Copiado
    → Ferramentas aparecem: get_users, get_orders, create_order
  3. Aponte seu cliente para ele
    Adicione https://gateway.internal/mcp/internal-api ao Claude Desktop.✓ Copiado
    → Novas ferramentas aparecem no cliente

Resultado: Sua API interna utilizável a partir de qualquer cliente MCP em uma hora.

Armadilhas
  • Vazamento de autenticação se você mapear cabeçalhos sensíveis sem restrição — Use a pré-autenticação OAuth da Unla para gating por usuário; nunca hardcode tokens de admin em YAML
  • Endpoints de escrita expõem chamadas destrutivas — Marque endpoints POST/DELETE como 'confirm' para que exijam aprovação explícita do usuário
Combine com: mcphub

Como dar a cada cliente seu próprio namespace MCP

👤 Times SaaS oferecendo acesso MCP aos clientes ⏱ ~45 min advanced

Quando usar: Você gerencia uma plataforma e deseja isolamento de ferramentas por tenant.

Fluxo
  1. Crie tenants em Unla
    Em admin, crie tenants 'acme' e 'globex', cada um com seu próprio mapeamento de chave de API.✓ Copiado
    → Dois namespaces isolados
  2. Roteie por tenant
    Usuários Acme acessam /mcp/acme, globex acessa /mcp/globex.✓ Copiado
    → Ferramentas mostram dados com escopo de tenant

Resultado: MCP multi-tenant sem executar múltiplos gateways.

Armadilhas
  • Vazamento entre tenants via templates YAML compartilhados — Use variáveis com escopo de tenant, nunca referências $ENV que resolvam entre tenants

Como colocar seus MCPs existentes por trás de uma única URL autenticada

👤 Times com implantações MCP dispersas ⏱ ~20 min intermediate

Quando usar: Múltiplos MCPs stdio em diferentes locais e você deseja uma única URL pública com OAuth.

Fluxo
  1. Registre cada MCP downstream
    Em Unla, adicione github-mcp (stdio) e postgres-mcp (HTTP) como servidores proxificados.✓ Copiado
    → Ambos aparecem como saudáveis
  2. Ative OAuth
    Ative GitHub OAuth para o gateway.✓ Copiado
    → Fluxo de login funciona ponta a ponta

Resultado: Um endpoint, um login, todos os seus MCPs.

Combinações

Combine com outros MCPs para 10× de alavancagem

unla + mcphub

Use Unla para conversão REST-to-MCP e MCPHub para roteamento/agrupamento

Registre ferramentas expostas pela Unla em MCPHub sob o grupo 'internal'.✓ Copiado
unla + proxy

Use mcp-proxy como um bridge stdio last-mile e Unla como gateway público

Faça a bridge do meu MCP stdio local para HTTP com mcp-proxy, depois registre-o em Unla.✓ Copiado

Ferramentas

O que este MCP expõe

FerramentaEntradasQuando chamarCusto
(gateway) yaml-defined REST tools Conforme declarado em YAML O que quer que o endpoint REST exposto faça 1 requisição para API upstream
(gateway) proxied MCP tools Pass-through Mesmo que downstream Mesmo que downstream MCP

Custo e limites

O que custa rodar

Cota de API
Nenhuma no nível do gateway; cotas de API upstream ainda se aplicam
Tokens por chamada
Overhead mínimo do gateway
Monetário
Gratuito (Apache 2.0)
Dica
Faça cache de endpoints GET no gateway para evitar cobrança duplicada upstream.

Segurança

Permissões, segredos, alcance

Escopos mínimos: Configuração do emissor OAuth + chaves de API com escopo de tenant
Armazenamento de credenciais: Configuração do gateway em disco (criptografe via seu gerenciador de segredos); tokens de tenant via BD
Saída de dados: O gateway encaminha para quaisquer URLs upstream que você configure
Nunca conceda: Não exponha a interface de admin publicamente sem autenticação Não codifique tokens de produção em YAML em git

Solução de problemas

Erros comuns e correções

Upstream 401 em cada chamada

O gateway não está encaminhando o cabeçalho auth. Adicione uma regra de mapeamento de Autorização em YAML.

Verificar: curl gateway with -v; check upstream headers
Hot reload não pegou minha mudança YAML

Valide YAML na aba Lint da interface primeiro; hot reload rejeita configs inválidas silenciosamente.

Incompatibilidade de redirect_uri OAuth

Registre a URL exata do gateway no seu provedor OAuth.

SSE desconecta após 60s

Timeout ocioso do load balancer. Aumente para 3600s ou use HTTP Streamable.

Alternativas

Unla vs. outros

AlternativaQuando usarTroca
MCPHubVocê deseja um hub TypeScript com roteamento inteligente de vetorMenos foco em conversão REST-to-MCP
ToolHiveVocê deseja isolamento por MCP containerizadoNão é um conversor REST-to-MCP

Mais

Recursos

📖 Leia o README oficial no GitHub

🐙 Ver issues abertas

🔍 Ver todos os 400+ servidores MCP e Skills