كشف تطبيق FastAPI موجود كـ MCP دون إعادة هيكلة
متى تستخدمه: أنت بالفعل تنشر API لـ FastAPI. تريد من الوكلاء استخدامه. لا تريد قاعدة أكواد متوازية.
المتطلبات الأساسية
- تطبيق FastAPI عامل مع نماذج Pydantic على الطلبات والاستجابات — إذا كانت مساراتك ترجع
dict، أعد الهيكلة إلى Pydantic BaseModel أولاً — وإلا ستكون مخططات الأدواتobject
الخطوات
-
التثبيت والتركيبأضف
fastapi-mcpإلى مشروعي. في ملف main.py الخاص بي، بعدapp = FastAPI()، أضفFastApiMCP(app).mount(). أظهر الفرق.✓ تم النسخ→ فرق بسيط؛ الخادم لا يزال يعمل -
تحقق من ظهور الأدواتشغّل الخادم. اتصل باستخدام
npx -y mcp-remote http://localhost:8000/mcp. اعرض قائمة الأدوات — هل تظهر جميع مسارات GET/POST الخاصة بي؟✓ تم النسخ→ الأدوات مدرجة، الأسماء تطابق operation_ids المسارات -
صفّ ما يتم الكشف عنهلا أريد الكشف عن مسارات /admin/*. أعد التكوين باستخدام
include_operationsأو استبعد حسب العلامة.✓ تم النسخ→ مسارات الإدارة لم تعد في قائمة الأدوات
النتيجة: API الموجود لديك الآن قابل للعنونة عبر MCP بدون تكرار المخططات أو المنطق.
المزالق
- كل مسار يصبح أداة — بما في ذلك الداخلية التي لم تنوِ الكشف عنها — عيّن صراحة
include_tags=['public']أوexclude_operations=[...]قبل النشر المباشر - المسارات بدون operation_id تحصل على أسماء تم إنشاؤها مثل
read_item_items__item_id__get— قبيحة — دائماً عيّنoperation_idصريح على المسارات:@app.get('/items/{id}', operation_id='get_item')