تطبيق OAuth 2.1 لخوادم MCP باستخدام Scalekit: دليل برمجي خطوة بخطوة

يقدم هذا الدليل الشامل شرحًا تفصيليًا لكيفية تطبيق بروتوكول OAuth 2.1 على خوادم MCP (Model Context Protocol) خطوة بخطوة. سنقوم ببناء خادم بسيط لتحليل مشاعر البيانات المالية وتأمينه باستخدام Scalekit، وهي أداة تسهل عملية إعداد OAuth وتسريعها. مع Scalekit، كل ما نحتاجه هو تعيين عنوان URL لنقطة نهاية البيانات الوصفية (metadata endpoint) لعملاء MCP لاكتشاف الخادم، وإضافة وسيط (middleware) للتصريح (authorization) من أجل مصادقة آمنة تعتمد على الرموز (tokens). يتولى Scalekit جميع عمليات OAuth 2.1 المعقدة خلف الكواليس، لذلك لن تحتاج إلى تنفيذ أو إدارة توليد الرموز، أو تجديدها، أو التحقق من صحتها يدويًا. بمجرد اكتمال هذا الإعداد، سيكون خادم MCP الخاص بك جاهزًا للتعامل مع الطلبات الموثقة بسلاسة.

المتطلبات الأساسية:

1. واجهة برمجة تطبيقات Alpha Vantage:

لاستخراج مشاعر أخبار الأسهم، سنستخدم واجهة برمجة تطبيقات Alpha Vantage. للحصول على مفتاح API مجاني:

  • قم بزيارة منصة Alpha Vantage باستخدام هذا الرابط [أضف الرابط هنا].
  • أدخل بريدك الإلكتروني والتفاصيل المطلوبة.
  • ستتلقى مفتاح API الخاص بك – انسخه واحفظه بشكل آمن، حيث ستحتاج إليه لمصادقة طلباتك.

2. Node.js:

لتشغيل MCP Inspector لاختبار تطبيقنا، نحتاج إلى تثبيت Node.js.

  • قم بتنزيل أحدث إصدار من Node.js من nodejs.org.
  • قم بتشغيل برنامج التثبيت.
  • احتفظ بالإعدادات الافتراضية وأكمل التثبيت.

3. التبعيات في Python:

استخدم الأمر التالي لتثبيت التبعيات اللازمة:

pip install fastapi fastmcp mcp scalekit-sdk-python

إعداد Scalekit:

1. إنشاء حساب Scalekit:

  • انتقل إلى scalekit.com وقم بالتسجيل.
  • يقدم Scalekit طبقة مجانية، لذا لا داعي للقلق بشأن الفوترة.
  • بمجرد تسجيل الدخول، انقر فوق “تفعيل المصادقة الكاملة”.

2. إعداد الأذونات:

  • افتح لوحة الأذونات.
  • ضمن قسم “الأذونات”، انقر فوق “إضافة إذن”.
  • استخدم القيم التالية:
    • اسم الإذن: news:read
    • الوصف: استخدام Alpha Vantage للحصول على مشاعر الأسهم.

ملاحظة: تُستخدم أذونات Scalekit لتحديد وإدارة نطاقات التحكم في الميزات أو الموارد التي يمكن لتطبيقك الوصول إليها. على سبيل المثال، يسمح الإذن news:read لخادم MCP الخاص بك بالوصول إلى بيانات مشاعر الأسهم من Alpha Vantage، بينما يمكن إنشاء أذونات أخرى للتحكم في ميزات أو واجهات برمجة تطبيقات إضافية ضمن تطبيقك.

3. إضافة خادم MCP الخاص بك:

  • انتقل إلى قسم “خوادم MCP” وانقر فوق “إضافة خادم MCP”.
  • املأ الحقول المطلوبة:
    • اسم الخادم: أي اسم تفضله.
    • معرف المورد: معرف فريد لخادم MCP الخاص بك. يتم تضمين هذه القيمة في مطالبة aud (audience) لرموز الوصول، مما يساعد الخادم على التحقق من صحة الطلبات. للاختبار المحلي، قم بتعيينه على:
http://localhost:10000/mcp/

(عند استخدام FastMCP، يتم إضافة مسار /mcp تلقائيًا إلى نقطة النهاية. تأكد من تضمين الشرطة المائلة العكسية في النهاية لتجنب مشاكل التكوين).

  • قم بتعيين النطاق إلى الإذن الذي قمت بإنشائه للتو: news:read.

بمجرد إنشاء الخادم، سيقوم Scalekit بتوليد بياناتك الوصفية. تأكد من تدوين معرف خادم MCP (الموجود بجانب اسم الخادم، مثل res_88056357768398086)، حيث ستحتاج إليه لاحقًا.

4. مثال على بيانات وصفية للمورد:

ستبدو بياناتك الوصفية مشابهة لما يلي (ولكنها فريدة لحسابك):

  • عنوان URL لنقطة نهاية البيانات الوصفية: /.well-known/oauth-protected-resource/mcp

  • بيانات وصفية للمورد (JSON):

{
  "authorization_servers": [
    "https://zapp.scalekit.dev/resources/res_88056357768398086"
  ],
  "bearer_methods_supported": [
    "header"
  ],
  "resource": "http://localhost:10000/mcp/",
  "resource_documentation": "http://localhost:10000/mcp/docs",
  "scopes_supported": [
    "news:read"
  ]
}

5. الحصول على بيانات اعتماد API:

  • انتقل إلى الإعدادات → بيانات اعتماد API.
  • انسخ معرف العميل وعنوان URL للبيئة.
  • انقر فوق “توليد سر جديد” لإنشاء مفتاحك السري.
  • قم بتخزين هذه القيم بشكل آمن – سنحتاج إليها لاحقًا للتكوين.

ملف .env:

سنقوم الآن بإنشاء ملف .env مع المتغيرات التالية:

ALPHA_VANTAGE_API_KEY=<YOUR_ALPHA_VANTAGE_API_KEY>
METADATA_JSON_RESPONSE=<YOUR_METADATA_JSON_RESPONSE>
SCALEKIT_ENVIRONMENT_URL=<YOUR_SCALEKIT_ENVIRONMENT_URL>
SCALEKIT_CLIENT_ID=<YOUR_SCALEKIT_CLIENT_ID>
SCALEKIT_CLIENT_SECRET=<YOUR_SCALEKIT_CLIENT_SECRET>
SCALEKIT_RESOURCE_METADATA_URL=<YOUR_SCALEKIT_RESOURCE_METADATA_URL>
SCALEKIT_AUTHORIZATION_SERVERS=<YOUR_SCALEKIT_AUTHORIZATION_SERVERS>
SCALEKIT_AUDIENCE_NAME=<YOUR_SCALEKIT_AUDIENCE_NAME>
SCALEKIT_RESOUCE_NAME=<YOUR_SCALEKIT_RESOURCE_NAME>
SCALEKIT_RESOUCE_DOCS_URL=<YOUR_SCALEKIT_RESOURCE_DOCS_URL>

(شرح المتغيرات موجود في المقال الأصلي)

ملف التكوين (config.py):

سنقوم أولاً بإنشاء ملف تكوين لتحميل جميع متغيرات البيئة التي سيتم استخدامها لاحقًا.

(أضف هنا كود config.py)

منطق مشاعر الأسهم (finance.py):

(أضف هنا كود finance.py)

وسيط المصادقة (auth.py):

(أضف هنا كود auth.py)

خادم MCP (server.py):

(أضف هنا كود server.py)

تشغيل الخادم:

لتشغيل الخادم، قم بتنفيذ python server.py، والذي سيبدأ التطبيق على localhost:10000. لاختبار الإعداد، افتح محطة طرفية أخرى وقم بتشغيل:

npx @modelcontextprotocol/inspector

بمجرد تشغيل MCP Inspector، أدخل http://localhost:10000/mcp كعنوان URL للخادم. إذا حاولت الاتصال دون تقديم بيانات اعتماد صالحة، ستواجه الخطأ التالي:

Connection Error: Check if your MCP Server is running and if the proxy token is correctly configured.

الآن، قم بتقديم رمز Bearer باستخدام معرف السر الذي قمت بإنشائه في Scalekit. بمجرد إدخاله، سيتم التحقق من صحتك بنجاح ويمكنك البدء في إجراء مكالمات الأدوات.

(أضف هنا روابط GitHub و Twitter و Reddit و Newsletter)

المصدر: MarkTechPost