/ Annuaire / Playground / Unla
● Communauté AmoyLab ⚡ Instantané

Unla

par AmoyLab · AmoyLab/Unla

Transformez n'importe quelle API REST en serveur MCP à partir de YAML — aucune modification de code, rechargement à chaud, multi-locataire, SSE + HTTP Streamable.

Unla (AmoyLab) est une passerelle Go légère qui convertit les APIs REST et les services MCP existants en points d'extrémité MCP via la configuration YAML. Interface Web pour la gestion, multi-locataire, pré-authentification OAuth, déploiement Docker-first.

Pourquoi l'utiliser

Fonctionnalités clés

Démo en direct

Aperçu en pratique

unla.replay ▶ prêt
0/0

Installer

Choisissez votre client

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

Ouvrez Claude Desktop → Settings → Developer → Edit Config. Redémarrez après avoir enregistré.

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

Cursor utilise le même schéma mcpServers que Claude Desktop. La config projet l'emporte sur la globale.

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

Cliquez sur l'icône MCP Servers dans la barre latérale Cline, puis "Edit Configuration".

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

Même format que Claude Desktop. Redémarrez Windsurf pour appliquer.

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

Continue utilise un tableau d'objets serveur plutôt qu'une map.

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

Ajoutez dans context_servers. Zed recharge à chaud à la sauvegarde.

claude mcp add unla -- npx -y Unla

Une seule ligne. Vérifiez avec claude mcp list. Supprimez avec claude mcp remove.

Cas d'usage

Usages concrets : Unla

Comment exposer votre API REST interne en tant que MCP sans écrire un serveur

👤 Ingénieurs de plateforme, équipes d'outils internes ⏱ ~30 min intermediate

Quand l'utiliser : Vous disposez d'une API REST d'entreprise et souhaitez que Claude/Cursor l'utilise sans construire un MCP sur mesure.

Prérequis
  • Docker — docker.com/get-started
  • Spécification OpenAPI/Swagger pour l'API (utile mais optionnelle) — La plupart des APIs internes en ont déjà une
Déroulement
  1. Déployer Unla
    docker run -d --name unla -p 8080:80 -p 5234:5234 -p 5235:5235 ghcr.io/amoylab/unla/allinone:latest✓ Copié
    → Interface Web à :8080
  2. Ajouter une définition de serveur YAML
    Dans l'interface, créez un serveur « internal-api » avec les points de terminaison /users (GET) et /orders (GET, POST), mappés à https://api.internal/v1.✓ Copié
    → Les outils s'affichent : get_users, get_orders, create_order
  3. Pointez votre client dessus
    Ajoutez https://gateway.internal/mcp/internal-api à Claude Desktop.✓ Copié
    → Les nouveaux outils s'affichent dans le client

Résultat : Votre API interne utilisable à partir de n'importe quel client MCP en une heure.

Pièges
  • Les fuites d'authentification si vous mappez les en-têtes sensibles sans restriction — Utilisez la pré-authentification OAuth d'Unla pour gater par utilisateur ; ne codez jamais en dur les jetons d'administrateur dans YAML
  • Les points de terminaison d'écriture exposent les appels destructeurs — Marquez les points de terminaison POST/DELETE comme « confirm » pour qu'ils nécessitent une approbation explicite de l'utilisateur
Combiner avec : mcphub

Comment donner à chaque client son propre espace de noms MCP

👤 Équipes SaaS offrant l'accès MCP aux clients ⏱ ~45 min advanced

Quand l'utiliser : Vous exploitez une plateforme et souhaitez l'isolation des outils par locataire.

Déroulement
  1. Créer des locataires dans Unla
    En administration, créez les locataires « acme » et « globex », chacun avec leur propre mappage de clé API.✓ Copié
    → Deux espaces de noms isolés
  2. Itinéraire par locataire
    Les utilisateurs d'Acme visitent /mcp/acme, globex visite /mcp/globex.✓ Copié
    → Les outils affichent les données à portée de locataire

Résultat : MCP multi-locataire sans exécuter plusieurs passerelles.

Pièges
  • Fuite entre locataires via les modèles YAML partagés — Utilisez des variables à portée de locataire, jamais de références $ENV qui se résolvent entre locataires

Comment mettre vos MCPs existants derrière une seule URL authentifiée

👤 Équipes avec des déploiements MCP dispersés ⏱ ~20 min intermediate

Quand l'utiliser : Plusieurs MCPs stdio à différents endroits et vous voulez une seule URL publique avec OAuth.

Déroulement
  1. Enregistrer chaque MCP en aval
    Dans Unla, ajoutez github-mcp (stdio) et postgres-mcp (HTTP) en tant que serveurs proxiés.✓ Copié
    → Les deux s'affichent comme sains
  2. Activer OAuth
    Activez GitHub OAuth pour la passerelle.✓ Copié
    → Le flux de connexion fonctionne bout en bout

Résultat : Un point de terminaison, une connexion, tous vos MCPs.

Combinaisons

Associez-le à d'autres MCPs pour un effet X10

unla + mcphub

Utilisez Unla pour la conversion REST vers MCP et MCPHub pour le routage/regroupement

Enregistrez les outils exposés d'Unla dans MCPHub sous le groupe « internal ».✓ Copié
unla + proxy

Utilisez mcp-proxy comme pont stdio de dernière mile et Unla comme passerelle publique

Reliez mon MCP stdio local à HTTP avec mcp-proxy, puis enregistrez-le dans Unla.✓ Copié

Outils

Ce que ce MCP expose

OutilEntréesQuand appelerCoût
(passerelle) outils REST définis par YAML Tel que déclaré dans YAML Quoi que fasse le point de terminaison REST exposé 1 requête vers l'API en amont
(passerelle) outils MCP proxiés Pass-through Identique en aval Identique à MCP en aval

Coût et limites

Coût d'exécution

Quota d'API
Aucun au niveau de la passerelle ; les quotas d'API en amont s'appliquent toujours
Tokens par appel
Surcharge de passerelle minimale
Monétaire
Gratuit (Apache 2.0)
Astuce
Mettez en cache les points de terminaison GET au niveau de la passerelle pour éviter la double facturation en amont.

Sécurité

Permissions, secrets, portée

Portées minimales : Configuration d'émetteur OAuth + clés API à portée de locataire
Stockage des identifiants : Configuration de passerelle sur disque (chiffrer via votre gestionnaire de secrets) ; jetons de locataire via DB
Sortie de données : La passerelle transfère vers toutes les URL en amont que vous configurez
Ne jamais accorder : Ne pas exposer l'interface d'administration publiquement sans authentification Ne codez pas en dur les jetons de production dans YAML dans git

Dépannage

Erreurs courantes et correctifs

Erreur 401 en amont à chaque appel

La passerelle ne transfère pas l'en-tête d'authentification. Ajoutez une règle de mappage d'autorisation dans YAML.

Vérifier : curl gateway with -v; check upstream headers
Le rechargement à chaud n'a pas récupéré mon changement YAML

Validez d'abord YAML dans l'onglet Lint de l'interface ; le rechargement à chaud rejette les configurations invalides en silence.

Discordance OAuth redirect_uri

Enregistrez l'URL exacte de la passerelle dans votre fournisseur OAuth.

SSE se déconnecte après 60s

Délai d'expiration inactif de l'équilibreur de charge. Augmentez à 3600s ou utilisez HTTP Streamable.

Alternatives

Unla vs autres

AlternativeQuand l'utiliserCompromis
MCPHubVous voulez un hub TypeScript avec routage vectoriel intelligentMoins d'accent sur la conversion REST vers MCP
ToolHiveVous voulez une isolation MCP containerisée par MCPPas un convertisseur REST vers MCP

Plus

Ressources

📖 Lire le README officiel sur GitHub

🐙 Voir les issues ouvertes

🔍 Parcourir les 400+ serveurs MCP et Skills