Gradio عبارة عن حزمة Python مفتوحة المصدر لإنشاء تطبيقات الويب التي تعمل بالذكاء الاصطناعي. يتوافق Gradio مع بروتوكول خادم MCP ويعمل على تشغيل الآلاف من خوادم MCP المستضافة على Hugging Face Spaces. فريق Gradio هو الرهان الكبير على Gradio وSpaces هي أفضل طريقة لبناء واستضافة خوادم MCP التي تعمل بالذكاء الاصطناعي.
ولتحقيق هذه الغاية، إليك بعض التحسينات الكبيرة التي أضفناها إلى خوادم Gradio MCP اعتبارًا من الإصدار 5.38.0.
دعم الملفات المحلية السلسة
إذا حاولت استخدام خادم Gradio MCP عن بعد الذي يأخذ ملفًا كمدخل (صورة، فيديو، صوت)، فمن المحتمل أنك واجهت هذا الخطأ:

يحدث هذا نظرًا لاستضافة خادم Gradio على جهاز مختلف، مما يعني أنه يجب الوصول إلى أي ملفات إدخال عبر عنوان URL عام حتى يمكن تنزيلها عن بُعد.
على الرغم من وجود العديد من الطرق لاستضافة الملفات عبر الإنترنت، إلا أنها تضيف جميعًا خطوة يدوية إلى سير عملك. في عصر وكلاء LLM، ألا ينبغي لنا أن نتوقع منهم التعامل مع هذا الأمر نيابةً عنك؟
يتضمن Gradio الآن أ خادم MCP “تحميل الملف”. التي يمكن للوكلاء استخدامها لتحميل الملفات مباشرة إلى تطبيق Gradio الخاص بك. إذا كانت أي أدوات في خادم Gradio MCP تتطلب إدخالات للملفات، فسوف توضح لك وثائق الاتصال الآن كيفية بدء خادم MCP “تحميل الملفات”:

تعرف على المزيد حول استخدام هذا الخادم (واعتبارات الأمان المهمة) في Gradio Guides.
إخطارات التقدم في الوقت الحقيقي
اعتمادًا على مهمة الذكاء الاصطناعي، قد يستغرق الحصول على النتائج بعض الوقت. الآن، جراديو تيارات الإخطارات التقدم إلى عميل MCP الخاص بك، مما يسمح لك بمراقبة الحالة في الوقت الفعلي!
باعتبارك مطور MCP، يوصى بشدة بتنفيذ أدوات MCP الخاصة بك لإصدار حالات التقدم هذه. دليلنا يوضح لك كيف.
تحويل مواصفات OpenAPI إلى MCP في سطر واحد
إذا كنت ترغب في دمج واجهة برمجة التطبيقات الخلفية الموجودة في LLM، فيجب عليك تعيين نقاط نهاية واجهة برمجة التطبيقات يدويًا إلى أدوات MCP. يمكن أن يكون هذا عملاً روتينيًا مستهلكًا للوقت ومعرضًا للأخطاء. مع هذا الإصدار، يمكن لـ Gradio أتمتة العملية بأكملها نيابةً عنك! باستخدام سطر واحد من التعليمات البرمجية، يمكنك دمج الواجهة الخلفية لأعمالك في أي LLM متوافق مع MCP.
OpenAPI هو معيار معتمد على نطاق واسع لوصف واجهات برمجة تطبيقات RESTful بتنسيق يمكن قراءته آليًا، عادةً كملف JSON. يتميز Gradio الآن بـ gr.load_openapi الوظيفة، التي تقوم بإنشاء تطبيق Gradio مباشرة من مخطط OpenAPI. يمكنك بعد ذلك تشغيل التطبيق باستخدام mcp_server=True لإنشاء خادم MCP تلقائيًا لواجهة برمجة التطبيقات (API) الخاصة بك!
import gradio as gr
demo = gr.load_openapi(
openapi_spec="https://petstore3.swagger.io/api/v3/openapi.json",
base_url="https://petstore3.swagger.io/api/v3",
paths=["/pet.*"],
methods=["get", "post"],
)
demo.launch(mcp_server=True)
يمكنك العثور على مزيد من التفاصيل في أدلة Gradio.
تحسينات على المصادقة
أحد الأنماط الشائعة في تطوير خادم MCP هو استخدام رؤوس المصادقة للاتصال بالخدمات نيابة عن المستخدمين. باعتبارك مطور خادم MCP، فإنك ترغب في إبلاغ المستخدمين بوضوح ببيانات الاعتماد التي يحتاجون إلى توفيرها للاستخدام المناسب للخادم.
ولجعل ذلك ممكنًا، يمكنك الآن كتابة وسيطات خادم MCP الخاصة بك على النحو التالي: gr.Header. سيقوم Gradio تلقائيًا باستخراج هذا الرأس من الطلب الوارد (إذا كان موجودًا) وتمريره إلى وظيفتك. فائدة الاستخدام gr.Header هو أن مستندات اتصال MCP ستعرض تلقائيًا الرؤوس التي تحتاج إلى توفيرها عند الاتصال بالخادم!
في المثال أدناه، X-API-Token يتم استخراج الرأس من الطلب الوارد وتمريره باسم x_api_token حجة ل make_api_request_on_behalf_of_user.
import gradio as gr
def make_api_request_on_behalf_of_user(prompt: str, x_api_token: gr.Header):
"""Make a request to everyone's favorite API.
Args:
prompt: The prompt to send to the API.
Returns:
The response from the API.
Raises:
AssertionError: If the API token is not valid.
"""
return "Hello from the API" if not x_api_token else "Hello from the API with token!"
demo = gr.Interface(
make_api_request_on_behalf_of_user,
[
gr.Textbox(label="Prompt"),
],
gr.Textbox(label="Response"),
)
demo.launch(mcp_server=True)

يمكنك قراءة المزيد عن هذا في أدلة Gradio.
تعديل أوصاف الأداة
يقوم Gradio تلقائيًا بإنشاء أوصاف الأدوات من أسماء الوظائف والمستندات الخاصة بك. يمكنك الآن تخصيص وصف الأداة بشكل أكبر باستخدام api_description المعلمة. في هذا المثال، سيكون وصف الأداة كما يلي “تطبيق مرشح بني داكن على أي صورة.”
import gradio as gr
import numpy as np
def sepia(input_img):
"""
Args:
input_img (np.array): The input image to apply the sepia filter to.
Returns:
The sepia filtered image.
"""
sepia_filter = np.array([
[0.393, 0.769, 0.189],
[0.349, 0.686, 0.168],
[0.272, 0.534, 0.131]
])
sepia_img = input_img.dot(sepia_filter.T)
sepia_img /= sepia_img.max()
return sepia_img
gr.Interface(sepia, "image", "image",
api_description="Apply a sepia filter to any image.")\
.launch(mcp_server=True)
اقرأ المزيد في الدليل.
خاتمة
هل تريد منا أن نضيف ميزة جديدة متعلقة بـ MCP إلى Gradio؟ أخبرنا بذلك في تعليقات المدونة أو على GitHub. أيضًا، إذا قمت بإنشاء خادم MCP رائع أو تطبيق Gradio، فأخبرنا بذلك في التعليقات وسنعمل على تضخيمه!
