/ الدليل / الملعب / Unla
● مجتمع AmoyLab ⚡ فوري

Unla

بواسطة AmoyLab · AmoyLab/Unla

حوّل أي REST API إلى خادم MCP من YAML — بدون تغييرات في الكود، إعادة تحميل فورية، دعم متعدد المستأجرين، SSE + Streamable HTTP.

Unla (AmoyLab) هو بوابة Go خفيفة الوزن تحوّل REST APIs والخدمات MCP الموجودة إلى نقاط نهاية MCP عبر ملفات YAML. واجهة ويب للإدارة، دعم متعدد المستأجرين، مصادقة 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 نفس مخطط mcpServers مثل Claude Desktop. إعدادات المشروع أولى من الإعدادات العامة.

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

انقر على أيقونة MCP Servers في شريط Cline الجانبي، ثم "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 الداخلية الخاصة بك كـ MCP بدون كتابة خادم

👤 مهندسو المنصات، فرق الأدوات الداخلية ⏱ ~30 min intermediate

متى تستخدمه: لديك واجهة REST للشركة وتريد أن يستخدمها Claude/Cursor بدون بناء خادم MCP مخصص.

المتطلبات الأساسية
  • Docker — docker.com/get-started
  • مواصفات OpenAPI/Swagger للواجهة (مفيدة لكن اختيارية) — معظم واجهات REST الداخلية لديها واحدة بالفعل
الخطوات
  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.✓ تم النسخ
    → تظهر أدوات جديدة في العميل

النتيجة: واجهة REST الداخلية قابلة للاستخدام من أي عميل MCP في غضون ساعة.

المزالق
  • تسرب المصادقة إذا رسمت رؤوساً حساسة بدون قيود — استخدم مصادقة OAuth المسبقة من Unla لحماية كل مستخدم؛ لا تشفّر رموز المسؤول في YAML
  • نقاط نهاية الكتابة تكشف استدعاءات مدمّرة — علّم نقاط نهاية POST/DELETE كـ 'confirm' بحيث تتطلب موافقة المستخدم الصريحة
اجمعها مع: mcphub

كيفية إعطاء كل عميل مساحة اسم MCP خاصة به

👤 فرق SaaS التي تقدم وصول MCP للعملاء ⏱ ~45 min advanced

متى تستخدمه: تدير منصة وتريد عزل الأدوات حسب المستأجر.

الخطوات
  1. إنشاء مستأجرين في Unla
    في لوحة المسؤول، أنشئ مستأجرين 'acme' و 'globex'، لكل منهما خريطة مفتاح API خاصة به.✓ تم النسخ
    → مساحتا اسم معزولتان
  2. توجيه حسب المستأجر
    يصل مستخدمو Acme إلى /mcp/acme، و globex إلى /mcp/globex.✓ تم النسخ
    → تظهر الأدوات بيانات بنطاق المستأجر

النتيجة: MCP متعدد المستأجرين بدون تشغيل بوابات متعددة.

المزالق
  • تسرب بين المستأجرين عبر قوالب YAML مشتركة — استخدم متغيرات بنطاق المستأجر، لا تستخدم مراجع $ENV التي تُحل عبر المستأجرين

كيفية وضع MCPs الموجودة لديك خلف عنوان URL موثّق واحد

👤 فرق لديها نشرات MCP متفرقة ⏱ ~20 min intermediate

متى تستخدمه: عدة MCPs stdio في أماكن مختلفة وتريد عنوان URL عام واحد مع OAuth.

الخطوات
  1. تسجيل كل MCP مصب
    في Unla، أضف github-mcp (stdio) و postgres-mcp (HTTP) كخوادم مُقابلة بالبروكسي.✓ تم النسخ
    → كلاهما يظهر كصحي
  2. تفعيل OAuth
    قم بتشغيل GitHub OAuth للبوابة.✓ تم النسخ
    → تدفق تسجيل الدخول يعمل من البداية إلى النهاية

النتيجة: نقطة نهاية واحدة، تسجيل دخول واحد، جميع MCPs الخاصة بك.

التركيبات

اجمعها مع خوادم MCP أخرى لتحقيق نتائج x10

unla + mcphub

استخدم Unla لتحويل REST إلى MCP و MCPHub للتوجيه والتجميع

سجّل الأدوات المكشوفة بواسطة Unla في MCPHub تحت مجموعة 'internal'.✓ تم النسخ
unla + proxy

استخدم mcp-proxy كجسر stdio نهائي و Unla كبوابة موجهة للجمهور

ربط MCP stdio المحلي الخاص بي بـ HTTP باستخدام mcp-proxy، ثم سجّله في Unla.✓ تم النسخ

الأدوات

ما يوفره هذا الـ MCP

الأداةالمدخلاتمتى تستدعيهاالتكلفة
(gateway) أدوات REST المعرّفة بـ YAML حسب التصريح في YAML أياً ما كانت وظيفة نقطة نهاية REST المكشوفة طلب واحد إلى واجهة المصب
(gateway) أدوات MCP المُقابلة بالبروكسي مرور عبر نفس المصب نفس MCP المصب

التكلفة والحدود

تكلفة التشغيل

حصة API
لا توجد حصة على مستوى البوابة؛ حصص واجهة المصب لا تزال سارية المفعول
الرموز لكل استدعاء
حمل عمل بوابة دنيوي
التكلفة المالية
مجاني (Apache 2.0)
نصيحة
احفظ نقاط نهاية GET على مستوى البوابة لتجنب فواتير مصب مكررة.

الأمان

الصلاحيات والأسرار ونطاق الأثر

الحد الأدنى من الصلاحيات: إعداد مصدر OAuth + مفاتيح API بنطاق المستأجر
تخزين بيانات الاعتماد: إعداد البوابة على القرص (تشفير عبر مدير السر الخاص بك)؛ رموز المستأجر عبر قاعدة البيانات
نقل البيانات الخارجي: البوابة تحوّل إلى أي عناوين URL مصب تقررها
لا تمنح أبدًا: لا تكشف واجهة المسؤول علناً بدون مصادقة لا تشفّر رموز الإنتاج في YAML في git

استكشاف الأخطاء

الأخطاء الشائعة وحلولها

401 من المصب على كل استدعاء

البوابة لا تحوّل رأس المصادقة. أضف قاعدة تعيين التصريح في YAML.

تحقق: curl gateway with -v; check upstream headers
الإعادة الفورية لم تلتقط تغيير YAML الخاص بي

تحقق من YAML أولاً في علامة Lint من واجهة المستخدم؛ الإعادة الفورية ترفض الإعدادات غير الصالحة بصمت.

عدم تطابق redirect_uri من OAuth

سجّل عنوان URL بوابة محدد في موفر OAuth الخاص بك.

قطع SSE بعد 60 ثانية

انتهاء المهلة الزمنية للخمول في موازن الحمل. رفعها إلى 3600 ثانية أو استخدم Streamable HTTP.

البدائل

Unla مقابل البدائل

البديلمتى تستخدمهاالمقايضة
MCPHubتريد مركز TypeScript مع توجيه متجه ذكيتركيز أقل على تحويل REST إلى MCP
ToolHiveتريد عزل MCP في حاوياتليس محول REST إلى MCP

المزيد

الموارد

📖 اقرأ ملف README الرسمي على GitHub

🐙 تصفح القضايا المفتوحة

🔍 تصفح أكثر من 400 خادم MCP و Skills