تخيّل إنك تقول لـ Claude Code “هات لي اسم الموقع والوصف بتاعه” فيرد عليك من موقعك الحقيقي، مش من تخمين. ده بالظبط اللي بيعمله WordPress MCP Adapter. وفي الدليل ده هنركّبه خطوة بخطوة، ونقفل كل باب أمان قبل ما نقرب من موقع عميل.
الصورة الكاملة في سطور
قبل البدء، هذه المتطلبات والنقاط الأساسية:
- الإصدار: ووردبريس 6.9 أو أحدث، وPHP 7.4 أو أحدث. الإصدار 6.9 يضم واجهة القدرات (Abilities API) داخل النواة.
- الإضافة: MCP Adapter الرسمية من مستودع منظمة WordPress على GitHub، وكان أحدث إصدار وقت كتابة المصدر هو 0.6.1.
- الاشتراك الصريح: لا تظهر القدرة لأدوات الذكاء الاصطناعي إلا إذا أضفت لها
mcp.public = trueداخلmeta. - نقطة الاتصال الافتراضية:
/wp-json/mcp/mcp-adapter-default-server - تسجيل الدخول: مستخدم ووردبريس مع كلمة مرور تطبيق (Application Password).
- بيئة التجربة: موقع محلي أو موقع تجريبي (Staging) أولًا، لأن أداة الذكاء الاصطناعي تحصل على صلاحيات المستخدم نفسها التي تربطها به.
ما هو MCP ولماذا يهمك؟
بروتوكول سياق النموذج (Model Context Protocol) معيار مفتوح يمنح تطبيقات الذكاء الاصطناعي لغة مشتركة للاتصال بالأدوات والبيانات الخارجية. الخادم يعلن قائمة أدواته، والعميل مثل Claude Code أو Cursor يقرأ القائمة ويستدعي ما يحتاجه حين تطلب منه.
في المقابل، يملك ووردبريس طريقته الخاصة لوصف الأفعال، وهي واجهة القدرات. كل قدرة (Ability) لها اسم، ومخطط مدخلات، ومخطط مخرجات، ودالة فحص صلاحيات (Permission Callback)، ودالة تنفيذ. دور المحوّل أن يترجم هذه القدرات إلى صيغة يفهمها عميل MCP.
هذا مسار الطلب الواحد من البداية للنهاية:
- تكتب سؤالك في Claude Code أو Cursor.
- يستدعي العميل خادم المحوّل على موقعك.
- يبحث المحوّل عن القدرة المطابقة.
- يشغّل ووردبريس فحص الصلاحيات للمستخدم المتصل قبل تنفيذ أي كود.
- تعود النتيجة إلى العميل بيانات منظمة.
فكّر في كل قدرة كقطعة بازل مستقلة: تعرّفها مرة واحدة، فتستخدمها واجهة REST وأداة الذكاء الاصطناعي وأي عميل آخر دون إعادة كتابة.
الخطوة 1: ثبّت WordPress MCP Adapter
المحوّل ليس جزءًا من النواة بعد، لذلك تضيفه بنفسك بإحدى طريقتين:
| الطريقة | متى تستخدمها |
|---|---|
| إضافة عادية | للتجربة الأولى، وهي الأسهل |
| — | — |
| حزمة Composer داخل إضافتك | عندما توزّع إضافة تعتمد على المحوّل |
للتثبيت كإضافة:
- نزّل أحدث إصدار من مستودع
WordPress/mcp-adapterعلى GitHub. - ارفعه كإضافة على موقع محلي أو تجريبي.
- فعّله، وتأكد أن الموقع يعمل بإصدار 6.9 أو أحدث.
ولطريقة Composer يكفي هذا الأمر داخل مجلد إضافتك:
composer require wordpress/mcp-adapter
تنبيه: المحوّل ما زال تحت الإصدار 1.0، أي أن الأسماء والأوامر قد تتغير بين إصدار وآخر. اقرأ ملف README الخاص بالإصدار الذي ثبّته قبل نسخ أي كود من هنا.
الخطوة 2: اجعل قدرة واحدة متاحة عبر MCP
تسجيل القدرة وحده لا يكشفها لأدوات الذكاء الاصطناعي. يجب أن تضيف 'mcp' => array( 'public' => true ) داخل مصفوفة meta للقدرة. هذه الراية تخص MCP فقط، ويذكر README أيضًا راية public أعم يحترمها الخادم الافتراضي.
المثال التالي قدرة للقراءة فقط: تعيد اسم الموقع ووصفه، ولا تعمل إلا لمن يملك صلاحية تحرير المقالات. ضعه في إضافة صغيرة خاصة بالموقع أو في Code Snippets:
add_action( 'wp_abilities_api_categories_init', function () {
wp_register_ability_category( 'my-site', array(
'label' => 'My Site',
'description' => 'Abilities for this site.',
) );
} );
add_action( 'wp_abilities_api_init', function () {
wp_register_ability( 'my-site/get-site-info', array(
'label' => 'Get site info',
'description' => 'Returns the site name and tagline.',
'category' => 'my-site',
'output_schema' => array(
'type' => 'object',
'properties' => array(
'name' => array( 'type' => 'string' ),
'tagline' => array( 'type' => 'string' ),
),
),
'execute_callback' => function () {
return array(
'name' => get_bloginfo( 'name' ),
'tagline' => get_bloginfo( 'description' ),
);
},
'permission_callback' => function () {
return current_user_can( 'edit_posts' );
},
'meta' => array(
'annotations' => array( 'readonly' => true ),
'mcp' => array( 'public' => true ),
),
) );
} );
التعليق التوضيحي readonly يخبر العميل أن القدرة لا تغيّر شيئًا في الموقع. أما permission_callback فيعمل مع كل استدعاء، حتى لو جاء الطلب من أداة ذكاء اصطناعي.
نصيحة عملية: اكتب label وdescription بصيغة فعل واضح وقصير مثل “Returns the site name and tagline”. النموذج يقرأ هذا الوصف ليقرر أي قدرة يستدعي، فالوصف هنا هو عمليًا الـ Prompt الخاص بقدرتك.
الخطوة 3: اعرف نقطة الاتصال الافتراضية
بمجرد تفعيل الإضافة، ينشئ المحوّل خادم MCP افتراضيًا على هذا المسار:
https://your-site.local/wp-json/mcp/mcp-adapter-default-server
هذا الخادم لا يعرض كل قدرة كأداة مستقلة، بل يقدم ثلاث أدوات عامة فقط:
| الأداة | وظيفتها |
|---|---|
mcp-adapter/discover-abilities | تكتشف القدرات المتاحة للعامة |
| — | — |
mcp-adapter/get-ability-info | تجلب تفاصيل قدرة واحدة |
mcp-adapter/execute-ability | تنفّذ القدرة |
يعني ذلك أن العميل يكتشف قدرتك أولًا ثم يستدعيها. وإذا أردت أن تظهر كل قدرة كأداة منفصلة، يمكنك تسجيل خادم مخصص لاحقًا بعد أن يعمل الخادم الافتراضي.
الخطوة 4: أنشئ كلمة مرور تطبيق
كلمات مرور التطبيقات مدمجة في ووردبريس، وتسمح لتطبيق خارجي بالدخول عبر REST API دون كلمة مرورك الأساسية، مع إمكانية إلغاء كل واحدة على حدة.
- افتح صفحة الملف الشخصي للمستخدم الذي ستستخدمه الأداة.
- انزل إلى قسم Application Passwords (كلمات مرور التطبيقات)، واكتب اسمًا مثل “Cursor local” ثم اضغط Add.
- انسخ كلمة المرور فورًا، فووردبريس يعرضها مرة واحدة فقط.
لن تجد القسم على موقع محلي بدون HTTPS؟ ووردبريس يخفي كلمات مرور التطبيقات على
httpالعادي إلا إذا كانت بيئة الموقع محلية. أضف هذا السطر إلىwp-config.phpفي موقعك المحلي فقط:
define( 'WP_ENVIRONMENT_TYPE', 'local' );
أنشئ مستخدمًا مخصصًا لهذا الغرض، وامنحه أقل دور يجتاز فحوصات الصلاحيات في قدراتك. لا تربط أداة ذكاء اصطناعي بحساب المدير إلا لسبب قوي جدًا.
الخطوة 5: اربط Cursor وClaude Code
يوجد نوعان من الاتصال، ولكل منهما استخدامه:
| نوع الاتصال | كيف يعمل | الأنسب لـ |
|---|---|---|
| STDIO | يشغّل الخادم عبر WP-CLI على نفس الجهاز، بلا كلمة مرور | التطوير المحلي |
| — | — | — |
| HTTP | يمر عبر REST API بكلمة مرور تطبيق | المواقع التجريبية وأي موقع لا تصل لطرفيته |
لاتصال HTTP يقترح توثيق المحوّل حزمة وسيطة صغيرة اسمها @automattic/mcp-wordpress-remote، تعمل عبر npx على جهازك وتتولى تسجيل الدخول.
في Cursor
أضف هذا إلى الملف .cursor/mcp.json داخل مشروعك، ثم أعد تشغيل Cursor:
{
"mcpServers": {
"wordpress-local": {
"command": "npx",
"args": ["-y", "@automattic/mcp-wordpress-remote@latest"],
"env": {
"WP_API_URL": "https://your-site.local/wp-json/mcp/mcp-adapter-default-server",
"WP_API_USERNAME": "mcp-user",
"WP_API_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx"
}
}
}
}
في Claude Code
إذا كان WP-CLI يعمل على موقعك المحلي، استخدم STDIO مباشرة. هذا الأمر يشغّل الخادم عبر WP-CLI باسم المستخدم الذي تختاره:
claude mcp add wordpress-local -- wp --path=/path/to/site mcp-adapter serve --server=mcp-adapter-default-server --user=mcp-user
ويمكنك كذلك إعطاء Claude Code إعداد npx نفسه الذي يستخدمه Cursor.
بعد الاتصال، اطلب من الأداة أن تعرض القدرات المتاحة على موقعك. يجب أن تظهر my-site/get-site-info في القائمة.
مشكلة شائعة على الاستضافات المشتركة: خطأ 401
أغلب الاستضافات المشتركة المنتشرة في مصر والخليج تعمل بـ cPanel مع Apache أو LiteSpeed. على بعضها يحذف الخادم ترويسة Authorization قبل وصولها إلى PHP، فيعود كل طلب HTTP بخطأ 401 حتى لو كانت كلمة المرور صحيحة.
الحل المعتاد سطر واحد في ملف .htaccess في جذر الموقع:
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
إذا استمر الخطأ بعد ذلك، افتح تذكرة دعم لدى الاستضافة واسألهم صراحة إن كانوا يمررون ترويسة Authorization إلى PHP.
فحوصات الأمان قبل أي خطوة أبعد
- ابدأ بقدرات القراءة فقط. شارك القدرات التي تجلب بيانات قبل أي قدرة تنشئ أو تعدّل أو تحذف.
- اجعل دوال الصلاحيات صارمة. لا تُرجع
trueللجميع أبدًا، فهذه الدالة هي القفل الحقيقي. - أبقِ كلمات المرور خارج git. إذا كان
.cursor/mcp.jsonيحتوي كلمة مرور، أضفه إلى.gitignore. - اقرأ قبل أن توافق. الأداتان تطلبان إذنك قبل تنفيذ أي استدعاء، فراجع المدخلات أولًا.
- اختبر الرفض عمدًا. بعد نجاح قدرة القراءة، جرّب مستخدمًا لا يملك الصلاحية ولاحظ ما يحدث؛ هذا الاختبار يعلّمك عن الأمان أكثر من النجاح.
- ألغِ كلمة المرور عند الانتهاء. احذف كلمة مرور التطبيق بمجرد توقفك عن التجربة.
- لا تبدأ بموقع عميل حي. جرّب محليًا حتى تثق في الإعداد تمامًا.
في Elementor: المحوّل لا يتحكم في المحرر المرئي نفسه، لكنه مفيد جدًا لمواقع Elementor Pro + JetEngine. سجّل قدرة للقراءة تُرجع مثلًا عناصر نوع محتوى مخصص من JetEngine أو قيم حقول Meta، فتسأل الأداة عن بيانات الموقع الحقيقية وأنت تبني القوالب، دون أن تمنحها أي صلاحية تعديل.
اقرأ أيضًا
الأسئلة الشائعة
س: هل WordPress MCP Adapter جزء من نواة ووردبريس؟
ج: لا. الإصدار 6.9 يضم واجهة القدرات فقط، أما المحوّل فإضافة منفصلة تثبّتها من GitHub، وما زال تحت الإصدار 1.0.
س: هل أحتاج WP-CLI لربط Claude Code بموقعي؟
ج: لا. WP-CLI يوفر اتصال STDIO على الموقع المحلي، وبدونه تستطيع استخدام نقطة HTTP مع حزمة npx وكلمة مرور تطبيق.
س: هل تستطيع أداة الذكاء الاصطناعي تعديل موقعي عبر MCP؟
ج: فقط من خلال القدرات التي جعلتها عامة، وفقط إذا اجتاز المستخدم المتصل فحص الصلاحيات لكل قدرة. ابدأ بقدرات القراءة ومستخدم بدور منخفض.
س: لماذا لا تظهر قدرتي في Cursor أو Claude Code؟
ج: تأكد من ثلاثة أشياء: وجود راية mcp.public في meta، وتفعيل إضافة المحوّل، وأن الموقع يعمل بإصدار 6.9 أو أحدث. بعدها اطلب من الأداة عرض القدرات من جديد.
الخلاصة
الـ MCP Adapter بيحوّل موقعك من صندوق مقفول لمصدر بيانات حقيقي تقدر تكلمه من الطرفية أو المحرر. ابدأ بقدرة قراءة واحدة على موقع محلي، واختبر الرفض قبل النجاح، وبعدها كبّر بالراحة. جرّبه النهارده واكتب لنا في التعليقات: اخترت STDIO ولا HTTP؟
مرجع المقال (بالإنجليزية): WordPress MCP Adapter: Connect Claude Code and Cursor to Your Site
المقال ده مش ترجمة حرفية: متكيّف للقارئ العربي ومضاف عليه سياق ووردبريس وElementor وJetEngine.



