النقاط الرئيسية
- MCP هو البروتوكول الذي يحوّل نموذج Ollama من محادثة إلى وكيل. اربطه بخوادم أدوات (filesystem وقاعدة بيانات ومتصفح وGitHub) وسيكون للنموذج الإجراءات الفعلية وليس فقط النص المُنشأ.
- أربعة خوادم مرجعية تغطي 80% من الاحتياجات الحقيقية: filesystem (قراءة/كتابة ملفات)، وsqlite+postgres (الاستعلام عن قواعد البيانات)، وpuppeteer/playwright (أتمتة المتصفح)، وgithub (إدارة المستودعات). كلها مفتوحة المصدر وتعمل بالكامل بدون اتصال.
- **الإعداد صغير: ملف
mcp.jsonواحد.** ثلاثة حقول لكل خادم: الأمر، والمعطيات، والبيئة. تُنشر الخوادم كعمليات فرعية من العميل — لا daemon، لا خدمة. - موثوقية استدعاء الأدوات تعتمد على النموذج. Gemma 4 27B وGLM-4.7 32B وQwen3 32B وLlama 3.3 70B يعملون بشكل موثوق في 2026. النماذج الأقل من 7B تُصدر JSON مشوّهاً في استدعاءات الأدوات بانتظام بصرف النظر عن العميل.
- نموذج الأمان: لا تثق في النموذج أبداً. filesystem → دليل واحد، قاعدة البيانات → قراءة فقط افتراضياً، أدوات الكتابة والshell → موافقة صريحة دائماً. النموذج يقترح؛ الإنسان يوافق على كل ما يغيّر حالة.
- MCP مفتوح ومستقل عن Claude Desktop. في 2026: Goose وCline وContinue.dev وLM Studio كلها عملاء MCP تعمل مع Ollama. ليس Anthropic المنفّذ الوحيد.
حقائق سريعة
- ما تحتاجه: Ollama (مثبَّت) + عميل MCP (Goose أو Cline أو Continue.dev أو LM Studio) + ملف
mcp.json+ نموذج استدعاء أدوات (Gemma 4 27B أو أعلى مُوصى به). - وقت الإعداد: 15–30 دقيقة لخادم filesystem وSQLite الأول؛ 60 دقيقة للمتصفح وGitHub.
- الخوادم المرجعية الأربعة الأساسية:
@modelcontextprotocol/server-filesystem، و@modelcontextprotocol/server-sqlite، و@modelcontextprotocol/server-postgres، و@modelcontextprotocol/server-puppeteer، و@modelcontextprotocol/server-github. - يتطلب Node.js >= 18 لمعظم الخوادم.
- لا يتطلب Claude Desktop: يعمل MCP محلياً مع Goose وCline وContinue.dev وLM Studio.
- Goose يدعم أيضاً خوادم Python — مفيد إذا كانت خوادمك المخصصة مكتوبة بـPython.
ما يُتيحه MCP لنموذج Ollama المحلي
بدون MCP، نموذج Ollama المحلي هو مولّد نص — يستقبل نصاً ويُنتج نصاً. مع MCP، يصبح الوكيل الذي يقرأ الملفات ويكتبها، ويستعلم عن قواعد البيانات، ويتحكم في المتصفح، ويفتح pull requests.
📍 في جملة واحدة
يربط MCP نموذج Ollama بأدوات خارجية (filesystem وقاعدة البيانات والمتصفح وGitHub) عبر واجهة JSON-RPC موحّدة، محوّلاً المحادثة إلى وكالة دون إرسال أي شيء إلى السحابة.
💬 بعبارات بسيطة
مثال على ما يعنيه ذلك عملياً: تكتب "ابحث في قاعدة بيانات العملاء عن جميع الطلبات التي تجاوزت 1000 دولار هذا الشهر واكتب تقريراً". النموذج يُصدر استدعاء أداة query_database مع SQL؛ عميل MCP يوجّهه إلى خادم Postgres؛ الخادم يُعيد الصفوف؛ النموذج يُلخّص. لا SQL يدوي، لا بيانات تغادر شبكتك.
- Filesystem: اقرأ واكتب الملفات داخل دليل يمكنك الوصول إليه. مفيد للمهام من نوع "حلّل هذه السجلات" و"حدّث ملف الإعداد هذا" و"لخّص جميع ملفات PDF في هذا المجلد".
- SQLite / Postgres: شغّل استعلامات SQL على قاعدة بيانات. في وضع القراءة فقط: آمن للبيانات الحساسة. مع دور كتابة مُقيَّد: يستطيع الوكيل إنشاء سجلات.
- متصفح (Puppeteer / Playwright): تحكّم في Chromium — انتقل إلى الصفحات، وانقر، واملأ النماذج، والتقط لقطات الشاشة. مفيد لكشط الويب وملء النماذج والاختبار.
- GitHub: افتح issues وPRs وأضف التعليقات وراجع الكود. مع PAT ذو نطاق ضيق يُقيَّد بمستودع اختبار واحد.
- خوادم مخصصة: يمكن كتابة خادم MCP في TypeScript أو Python باستخدام SDK المرجعي في 50–100 سطر. اكتب خوادمك المخصصة للأدوات الداخلية (Jira، وNotion، وSlack، وما إلى ذلك).
مقارنة خوادم MCP: ما تثبّته أولاً
ابدأ بخوادم المرجع الرسمية قبل كتابة خوادمك المخصصة:
| الخادم | حزمة NPM | صعوبة الإعداد | مستوى المخاطر | الاستخدام الرئيسي |
|---|---|---|---|---|
| Filesystem | @modelcontextprotocol/server-filesystem | سهل | متوسط (قيّده بدليل واحد) | قراءة/كتابة/تلخيص الملفات |
| SQLite | @modelcontextprotocol/server-sqlite | سهل | منخفض افتراضياً | استعلام البيانات المحلية |
| Postgres | @modelcontextprotocol/server-postgres | متوسط | متوسط (استخدم دور SELECT فقط) | الاستعلام عن قواعد البيانات الإنتاجية |
| Puppeteer | @modelcontextprotocol/server-puppeteer | متوسط | مرتفع (موافقة صريحة للنقر) | كشط الويب وأتمتة النماذج |
| GitHub | @modelcontextprotocol/server-github | متوسط | متوسط (PAT ذو نطاق ضيق) | إدارة PRs والكود |
البنية: كيف تتلاءم الأجزاء
المكدس يتكوّن من ثلاث طبقات: النموذج (Ollama)، والعميل (Goose أو Cline أو غيرهما)، والخوادم (filesystem وقاعدة البيانات وما إلى ذلك).
- Ollama يُشغّل النموذج ويعرض API دردشة متوافق مع OpenAI على
localhost:11434. النموذج لا يعرف أي شيء عن MCP. - عميل MCP (Goose أو Cline أو غيرهما) يقرأ ملف
mcp.json، ويُنشئ الخوادم كعمليات فرعية، ويحوّل تعريفات الأدوات إلى تنسيق function calling للنموذج، ويوجّه استدعاءات الأدوات الصادرة عن النموذج إلى الخادم المناسب، ويُعيد النتائج إلى المحادثة. - خوادم MCP تعمل كعمليات فرعية محلية تتواصل عبر stdio. لكل خادم قدراته: filesystem يعرض أدوات قراءة_ملف وكتابة_ملف وسرد_الدليل؛ sqlite يعرض أداة استعلام_قاعدة_البيانات؛ وهكذا.
- دفق البيانات: المستخدم → العميل → Ollama → استدعاء أداة (JSON) → العميل → خادم MCP → نتيجة → العميل → Ollama → رد → المستخدم. لا شيء يغادر جهازك.
الإعداد: Ollama + Goose في 15 دقيقة
الخطوات التالية تفترض macOS أو Linux. Windows يعمل بالمثل مع تعديلات بسيطة للمسار.
- 1ثبّت Ollama:
curl -fsSL https://ollama.ai/install.sh | shثمollama pull gemma4:27b(أوqwen3:32bللبدء بنموذج أصغر). - 2ثبّت Goose:
brew install block-inc/goose/goose(macOS) أو اتبع دليل التثبيت على goose.ai للأنظمة الأخرى. - 3هيّئ Goose لاستخدام Ollama: قم بتشغيل
goose configureواختر "Ollama" كمزوّد معlocalhost:11434. - 4ثبّت خوادم MCP المرجعية:
npm install -g @modelcontextprotocol/server-filesystem @modelcontextprotocol/server-sqlite. - 5أنشئ
~/.config/goose/mcp.jsonبمحتوى الإعداد (filesystem يُقيَّد بـ~/agent-workspace, sqlite يُشير إلى قاعدة بياناتك). - 6شغّل Goose:
goose session— النموذج الآن يرى الأدوات ويستطيع استخدامها.
خادم Filesystem: قراءة الملفات وكتابتها بأمان
الضبط الأمني الأساسي: قيّد مسار allowedPaths بدليل واحد فقط. إذا كان الوكيل يستطيع الكتابة في أي مكان على جهازك، فأي خطأ في توجيه النموذج قد يكون مدمّراً.
- أنشئ دليل workspace مخصص:
mkdir ~/agent-workspace. - في إعداد MCP، اجعل allowedPaths يشير فقط إلى
~/agent-workspace. - ضع الملفات التي تريد للوكيل العمل عليها في هذا الدليل.
- أدوات القراءة (read_file، list_directory) آمنة للموافقة التلقائية. أدوات الكتابة (write_file، delete_file) يجب أن تستلزم موافقة صريحة.
- استخدم
git initفي agent-workspace لتتبع التغييرات — أي كتابة يمكن التراجع عنها بـgit checkout.
خادما SQLite وPostgres: الاستعلام بأمان
القاعدة الأمنية: بداية وضع القراءة فقط. دع الوكيل يثبت أنه يستطيع الاستعلام بشكل صحيح قبل منح الوصول للكتابة.
- SQLite: أشر إلى ملف
.dbمحدد. الخادم يدعم وضع القراءة فقط في مرحلة التكوين. - Postgres: أنشئ مستخدماً بامتيازات SELECT فقط:
CREATE USER mcp_reader WITH PASSWORD '...'; GRANT SELECT ON ALL TABLES IN SCHEMA public TO mcp_reader; - استخدم متغيرات البيئة (DATABASE_URL) لتمرير بيانات الاعتماد، لا نص عادي في ملف الإعداد.
- قيّد الاستعلامات بجداول أو مخطط محدد إذا أمكن — لا وصول للجداول النظام.
خادم المتصفح (Puppeteer / Playwright): أتمتة المتصفح
المتصفح هو خادم MCP الأعلى مخاطرةً لأن النقر على زر قد يُؤدّي إلى إجراءات لا رجعة فيها. لا تُوافق تلقائياً على أدوات النقر أو إرسال النماذج.
- ثبّت:
npm install -g @modelcontextprotocol/server-puppeteer— Chromium يُنزَّل تلقائياً. - اقبل الموافقة التلقائية لأدوات navigate وscreenshot وget_text. طالب بالموافقة الصريحة لأدوات click وfill وsubmit.
- فيد في: كشط البيانات العامة، والاختبار التلقائي، وملء النماذج البسيطة التي ليس لها API.
- تجنّب: الجلسات المُسجَّل الدخول إليها دون مراجعة دقيقة — النموذج يستطيع الكتابة في الحقول وإرسال النماذج.
خادم GitHub: إدارة المستودعات
استخدم PAT ذا نطاق ضيق (Personal Access Token) يقتصر على المستودعات التي تريد للوكيل العمل عليها.
- أنشئ PAT من إعدادات GitHub: المصادقة → التوكنات الشخصية → Fine-grained tokens.
- امنح صلاحيات: محتوى المستودع (قراءة وكتابة)، والـPull requests (قراءة وكتابة)، والـIssues (قراءة وكتابة).
- قيّد التوكن بمستودعات محددة — لا وصول للمؤسسة بأكملها.
- أدوات القراءة (list_repos، get_file، list_prs): موافقة تلقائية. أدوات الكتابة (create_pr، push_files): موافقة صريحة دائماً.
نموذج الأمان: لا تثق في النموذج أبداً
النماذج اللغوية غير حتمية — تُصدر أحياناً استدعاءات أدوات غير متوقعة. نموذج الأمان لا يفترض ذلك.
- قاعدة الموافقة: موافقة تلقائية فقط لعمليات القراءة (read_file، query_database، navigate). موافقة صريحة لكل عمليات الكتابة (write_file، run_query_with_write، click، push).
- نطاق Filesystem: يُقيَّد بدليل واحد تحته
~/agent-workspace. لا مسارات مطلقة خارجه. - قاعدة البيانات: وضع القراءة فقط افتراضياً. فكّر مرتين قبل منح الوصول للكتابة حتى لو لقاعدة بيانات اختبار.
- Shell: إذا كان عميلك يدعم أدوات shell، فطالب بالموافقة اليدوية لكل استدعاء. لا موافقة تلقائية لتشغيل الأوامر.
- Injection هجوم للـPrompt: النموذج قد يقرأ ملفاً يحتوي على تعليمات ضارة. احتفظ بـworkspace ذاته نظيفاً وافحص مخرجات الأداة قبل الموافقة على الخطوات التالية.
MCP محلي مقابل Claude Desktop
Claude Desktop كان الاستخدام الأبرز لـMCP في 2025. في 2026، عملاء متعددة تعمل مع نماذج محلية.
| الميزة | Claude Desktop + Claude API | Goose/Cline + Ollama محلي |
|---|---|---|
| النموذج | Claude (Anthropic، مُستضاف) | أي نموذج Ollama |
| التكلفة | يُدفع لكل توكن | صفر دولار |
| الخصوصية | البيانات تصل إلى Anthropic | بالكامل محلي |
| الموثوقية | أعلى (Claude 3.5+ ممتاز في tool calling) | عالية مع نماذج 27B+ |
| توافق الخوادم | أي خادم MCP | أي خادم MCP |
| اشتراط الاتصال | نعم | لا |
اختيار نموذج استدعاء الأدوات لـMCP
موثوقية استدعاء الأدوات خاصية تعتمد على النموذج. النموذج الخاطئ يُصدر JSON مشوّهاً، مما يتسبب في إخفاقات صامتة أو حلقات لا نهاية لها.
- **Gemma 4 27B (
gemma4:27b):** توصيتي الافتراضية في 2026. موثوق في استدعاء الأدوات المتسلسلة. 16 جيجابايت ذاكرة موحدة أو 24 جيجابايت VRAM بـQ4_K_M. - **GLM-4.7 32B (
glm5:32b):** سياق 128K أصلي. أفضل لأعمال الوثائق الطويلة والاستعلامات الكبيرة. - **Qwen3 32B (
qwen3:32b) / Qwen3-Coder 30B (qwen3-coder:30b):** توازن ممتاز. Coder يعمل بشكل أفضل مع مستودعات الكود وأدوات GitHub. - **Llama 3.3 70B (
llama3.3:70b):** يستلزم 48 جيجابايت+ VRAM. أعلى سقف لكن أبطأ. - تجنّب: أي نموذج أقل من 7B، وأي نموذج للأغراض العامة بدون ضبط دقيق صريح على tool calling. الأعراض: JSON مشوّه، واستدعاءات أدوات بمعطيات هلوسة، وحلقات وكيل تتوقف.
MCP مقابل Function Calling البسيط
Function Calling هو قدرة النموذج. MCP هو بروتوكول قابلية التشغيل البيني. يتعاونان معاً:
- Function calling: النموذج اللغوي يُصدر JSON منظّم مع اسم أداة ومعطياتها. هذا خاص بالنموذج.
- MCP: البروتوكول الذي يتيح لخوادم الأدوات والعملاء وصف الأدوات واكتشافها واستدعاءها وإعادة نتائجها عبر العمليات. هذه طبقة قابلية التشغيل البيني.
- كيف يتعاونان: العميل يحوّل تعريفات أدوات MCP إلى تنسيق function calling للنموذج. النموذج يُصدر function call. العميل يُعيد تعيين الاستدعاء إلى خادم MCP. الخادم ينفّذه.
- بدون MCP: function calling ممكن لكن تُعيد تنفيذ معالجات filesystem/قاعدة البيانات/المتصفح في كل مشروع. مع MCP: نفس الخوادم تعمل تحت أي عميل.
الأخطاء الشائعة في إعداد MCP المحلي
- استخدام نموذج أقل من 7B لاستدعاء الأدوات. النماذج الصغيرة تُصدر JSON مشوّهاً بانتظام. إذا كان الوكيل يُخفق بصمت أو يحلّق في حلقات، فالنموذج هو المشكلة في الغالب لا MCP.
- عدم تقييد مسار Filesystem. المسار غير المُقيَّد + هلوسة طفيفة = ملفات تُكتب في أماكن غير متوقعة. قيّد بـ
~/agent-workspaceدائماً. - الموافقة التلقائية على أدوات الكتابة. اجعل كل أداة تغيّر الحالة تستلزم موافقة صريحة. الطيران التلقائي أمر للوكلاء غير المراقَبين في بيئات الإنتاج — وهذه ليست الحالة الافتراضية.
- توكن GitHub بامتيازات واسعة جداً. استخدم fine-grained tokens بصلاحيات لمستودع بعينه. توكن بامتيازات مؤسسة كاملة وخطأ في الهلوسة قد يُنشئ PRs أو issues في أماكن غير متوقعة.
- الوثوق في نواتج الأداة بدون مراجعة. المحتوى الخارجي (ملفات مقروءة أو صفحات ويب) قد يحتوي على prompt injection. افحص النواتج قبل الموافقة على الخطوات التالية.
المصادر
- مواصفة بروتوكول سياق النموذج (MCP) — المواصفة الرسمية ومستودعات خوادم المرجع.
- Goose — وثائق العميل — دليل الإعداد الرسمي مع Ollama ومعلومات تكوين MCP.
- مستودع MCP على GitHub من Anthropic — خوادم المرجع الرسمية (filesystem، وsqlite، وpostgres، وpuppeteer، وgithub).
الأسئلة الشائعة
ما هو MCP ولماذا يهم الذكاء الاصطناعي المحلي؟
MCP (بروتوكول سياق النموذج) هو بروتوكول JSON-RPC 2.0 مفتوح يتيح لعميل (Goose أو Cline أو Continue.dev أو LM Studio أو Claude Desktop) ربط نموذج لغوي بخوادم أدوات بطريقة موحّدة. يهم الذكاء الاصطناعي المحلي لأنه يُقنّن الطبقة التي تحوّل نموذج المحادثة إلى وكيل — اكتب خادم أدوات مرةً واحدة واستخدمه تحت أي عميل وأي نموذج، بما في ذلك نموذج Ollama المحلي.
هل يعمل MCP بدون Claude Desktop؟
نعم. البروتوكول مفتوح ومستقل تماماً عن Claude Desktop. في 2026، Goose وCline وContinue.dev وLM Studio كلها توفر تطبيقات عميل MCP تعمل مع نماذج Ollama المحلية. خوادم المرجع (filesystem وsqlite وpostgres وpuppeteer وgithub) تعمل دون تعديل تحت أي عميل متوافق.
ما النماذج المحلية الأفضل دعماً لـMCP؟
في مايو 2026، الخيارات الأكثر موثوقيةً هي: Gemma 4 27B وGLM-4.7 32B وQwen3 32B (أو Qwen3-Coder 30B للعمل المرتكز على الكود) وLlama 3.3 70B. الأربعة لديهم تدريب صريح على tool calling ويُصدرون JSON استدعاء دوال نظيفاً يستطيع عملاء MCP توجيهه. النماذج الأقل من 7B (ومعظم النماذج العامة بدون ضبط دقيق على tool calling) تُنتج tool calls مشوّهة بانتظام.
هل MCP آمن؟ هل يستطيع الوكيل حذف ملفاتي؟
يستطيع ذلك إذا سمحت له. الأمان يأتي من كيفية إعدادك للخوادم لا من البروتوكول. خادم filesystem يعمل فقط داخل المسارات التي تضعها في allowlist — قيّده بدليل agent-workspace مخصص. خادم قاعدة البيانات يعمل في وضع القراءة فقط حين تستخدم دور SELECT فقط. اشترط دائماً موافقة صريحة لأدوات الكتابة والshell وPR؛ وافق تلقائياً فقط على عمليات القراءة.
هل يعمل MCP على Windows؟
نعم. Ollama وGoose وCline وContinue.dev وLM Studio كلها تعمل على Windows. خوادم MCP تعمل كعمليات فرعية من Node.js أو Python؛ كلا بيئتي التشغيل متوافقتان كلياً مع Windows. التفصيل الوحيد الخاص بالمنصة هو التعامل مع المسارات — استخدم الشرطة المائلة للأمام في الإعداد أو اهرب الشرطات المائلة للخلف بشكل صحيح.
كيف أضع استدعاءات أدوات MCP في sandbox؟
ثلاث طبقات تغطي معظم المخاطر. أولاً، قيّد كل خادم بضيق في مستوى الإعداد: filesystem لدليل واحد، وقاعدة البيانات لدور قراءة فقط، وGitHub لـPAT ذي نطاق ضيق لمستودعات اختبار. ثانياً، استخدم قواعد الموافقة لكل أداة في العميل: موافقة تلقائية للقراءات، وموافقة مطلوبة للكتابات. ثالثاً، احتفظ بالوكيل داخل workspace متوافق مع git stash لكي تكون أي إجراءات مدمّرة قابلة للتراجع عنها.
ما الفرق بين MCP وFunction Calling؟
Function Calling هو إصدار النموذج اللغوي لـJSON منظّم مع اسم أداة ومعطياتها — هذه قدرة النموذج. MCP هو البروتوكول الذي يتيح لخوادم الأدوات والعملاء وصف الأدوات واكتشافها واستدعاءها وإعادة نتائجها عبر العمليات — هذه طبقة قابلية التشغيل البيني. يتعاونان: العميل يحوّل تعريفات أدوات MCP إلى تنسيق function calling للنموذج، والنموذج يُصدر function call، والعميل يُعيد تعيين الاستدعاء إلى خادم MCP، والخادم ينفّذه. بدون MCP: function calling ممكن؛ لكنك تُعيد تنفيذ معالجات filesystem/قاعدة البيانات/المتصفح في كل مشروع. مع MCP: نفس الخوادم تعمل تحت أي عميل.