/ 目錄 / 演練場 / Unla
● 社群 AmoyLab ⚡ 即開即用

Unla

作者 AmoyLab · AmoyLab/Unla

從 YAML 將任何 REST API 轉換為 MCP 伺服器 — 零程式碼變更、熱重載、多租戶、SSE + Streamable HTTP。

Unla (AmoyLab) 是一個輕量級 Go 網關,透過 YAML 組態將 REST API 和現有 MCP 服務轉換為 MCP 端點。支援管理用網頁界面、多租戶、OAuth 預認証、Docker 優先的部署方式。

為什麼要用

核心特性

即時演示

實際使用效果

unla.replay ▶ 就緒
0/0

安裝

選擇你的客戶端

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

開啟 Claude Desktop → Settings → Developer → Edit Config。儲存後重啟應用。

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

Cursor 使用與 Claude Desktop 相同的 mcpServers 格式。專案級設定優先於全域。

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

點擊 Cline 側欄中的 MCP Servers 圖示,然後選 "Edit Configuration"。

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

格式與 Claude Desktop 相同。重啟 Windsurf 生效。

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

Continue 使用伺服器物件陣列,而非映射。

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

加入 context_servers。Zed 儲存後熱重載。

claude mcp add unla -- npx -y Unla

一行命令搞定。用 claude mcp list 驗證,claude mcp remove 移除。

使用場景

實戰用法: Unla

如何將你的內部 REST API 暴露為 MCP,而無須撰寫伺服器

👤 平台工程師、內部工具團隊 ⏱ ~30 min intermediate

何時使用: 你有一個公司 REST API,想要 Claude/Cursor 使用它,但不想自訂構建 MCP。

前置條件
  • Docker — docker.com/get-started
  • API 的 OpenAPI/Swagger 規格(有幫助但可選) — 大多數內部 API 都已有一個
步驟
  1. 部署 Unla
    docker run -d --name unla -p 8080:80 -p 5234:5234 -p 5235:5235 ghcr.io/amoylab/unla/allinone:latest✓ 已複製
    → 網頁界面在 :8080
  2. 添加 YAML 伺服器定義
    在網頁界面中,建立一個伺服器 'internal-api',具有端點 /users (GET) 和 /orders (GET, POST),映射到 https://api.internal/v1。✓ 已複製
    → 工具顯示:get_users、get_orders、create_order
  3. 指向你的用戶端
    將 https://gateway.internal/mcp/internal-api 添加到 Claude Desktop。✓ 已複製
    → 新工具出現在用戶端

結果: 你的內部 API 可在一小時內從任何 MCP 用戶端使用。

注意事項
  • 如果無限制地映射敏感標頭,會導致認証洩漏 — 使用 Unla 的 OAuth 預認証來按用戶進行閘控;切勿在 YAML 中硬編碼管理員令牌
  • 寫入端點暴露破壞性呼叫 — 將 POST/DELETE 端點標記為 'confirm',以便它們需要明確的用戶批准
搭配使用: mcphub

如何為每個客戶提供自己的 MCP 命名空間

👤 向客戶提供 MCP 存取的 SaaS 團隊 ⏱ ~45 min advanced

何時使用: 你運行一個平台,並想要按租戶進行工具隔离。

步驟
  1. 在 Unla 中建立租戶
    在管理員界面,建立租戶 'acme' 和 'globex',每個都有自己的 API 金鑰映射。✓ 已複製
    → 兩個隔离的命名空間
  2. 按租戶路由
    Acme 用戶訪問 /mcp/acme,globex 訪問 /mcp/globex。✓ 已複製
    → 工具顯示租戶範圍的資料

結果: 多租戶 MCP,無須運行多個網關。

注意事項
  • 透過共享 YAML 範本進行跨租戶洩漏 — 使用租戶範圍的變數,永遠不要使用跨租戶解析的 $ENV 參考

如何將你現有的 MCP 放在單一認証 URL 後面

👤 具有分散 MCP 部署的團隊 ⏱ ~20 min intermediate

何時使用: 多個 stdio MCP 在不同位置,你想要一個具有 OAuth 的公開 URL。

步驟
  1. 註冊每個下游 MCP
    在 Unla 中,將 github-mcp (stdio) 和 postgres-mcp (HTTP) 添加為代理伺服器。✓ 已複製
    → 兩者都顯示為健康
  2. 啟用 OAuth
    為網關啟用 GitHub OAuth。✓ 已複製
    → 登入流程端到端工作

結果: 一個端點、一次登入、所有你的 MCP。

組合

與其他 MCP 搭配,撬動十倍槓桿

unla + mcphub

使用 Unla 進行 REST-to-MCP 轉換,使用 MCPHub 進行路由/分組

在 MCPHub 中的 'internal' 群組下註冊 Unla 暴露的工具。✓ 已複製
unla + proxy

使用 mcp-proxy 作為最後一哩路 stdio 橋樑,Unla 作為面向公眾的網關

使用 mcp-proxy 將我的本地 stdio MCP 橋接到 HTTP,然後在 Unla 中註冊它。✓ 已複製

工具

此 MCP 暴露的能力

工具輸入參數何時呼叫成本
(gateway) yaml-defined REST tools 如 YAML 中所宣告 無論暴露的 REST 端點做什麼 1 個對上游 API 的請求
(gateway) proxied MCP tools 傳遞式 與下游相同 與下游 MCP 相同

成本與限制

運行它的成本

API 配額
網關層級沒有;上游 API 配額仍然適用
每次呼叫 Token 數
最小化網關開銷
費用
免費 (Apache 2.0)
提示
在網關快取 GET 端點,以避免重複的上游計費。

安全

權限、密鑰、影響範圍

最小權限: OAuth 簽發者組態 + 租戶範圍的 API 金鑰
憑證儲存: 網關組態在磁碟上(透過你的密碼管理員加密);租戶令牌透過資料庫
資料出站: 網關轉發到你組態的任何上游 URL
切勿授予: 不要在沒有認証的情況下將管理員網頁界面公開暴露 不要在 git 中以 YAML 編碼生產令牌

故障排查

常見錯誤與修復

每次呼叫都出現上游 401

網關未轉發認証標頭。在 YAML 中添加授權映射規則。

驗證: curl gateway with -v; check upstream headers
熱重載未選擇我的 YAML 變更

首先在網頁界面的 Lint 標籤中驗證 YAML;熱重載會無聲地拒絕無效組態。

OAuth redirect_uri 不符

在你的 OAuth 提供者中註冊確切的網關 URL。

SSE 在 60 秒後斷線

負載平衡器閒置逾時。提高到 3600 秒或使用 Streamable HTTP。

替代方案

Unla 對比其他方案

替代方案何時用它替代權衡
MCPHub你想要一個具有智慧向量路由的 TypeScript 中樞較少關注 REST-to-MCP 轉換
ToolHive你想要容器化的按 MCP 隔离不是 REST-to-MCP 轉換器

更多

資源

📖 閱讀 GitHub 上的官方 README

🐙 查看未解決的 issue

🔍 瀏覽全部 400+ MCP 伺服器和 Skills