حقائق سريعة
- البروتوكول: JSON-RPC 2.0 عبر stdio (عملية فرعية محلية) أو Streamable HTTP (عن بُعد). نقل HTTP+SSE الأقدم مهجور. يستخدم الوكلاء المحليون stdio تقريباً حصراً. المراجعة الحالية للمواصفة هي 2026-07-28.
- الأصل: أنشأته Anthropic كمواصفة مفتوحة (modelcontextprotocol.io). لا يزال عدد قليل فقط من الخوادم المرجعية مُصاناً في
modelcontextprotocol/servers(filesystem وgit وfetch وmemory وغيرها)؛ أما SQLite وPostgreSQL وPuppeteer وGitHub فقد انتقلت إلىservers-archived. والموردون يشحنون الآن خوادمهم الخاصة. - العملاء المحليون: Goose (مفتوح المصدر، المستودع
aaif-goose/goose)، وCline (امتداد VS Code)، وContinue.dev (VS Code/JetBrains)، وLM Studio (تطبيق سطح مكتب)، إضافة إلى عدة أدوات سطر أوامر. - نماذج Ollama المتوافقة: أي نموذج بتدريب أصلي على استدعاء الأدوات، مثل Gemma 4 31B وGLM-4.7 Flash وQwen3.6 27B وQwen3 32B وQwen3-Coder 30B وLlama 3.3 70B.
- النقل الافتراضي للخوادم: stdio للعمليات المحلية؛ وStreamable HTTP فقط عندما تحتاج إلى مشاركة خادم بين أجهزة أو وكلاء.
- الإعداد يقع في العميل: يقرأ Goose كتلة
extensionsفي~/.config/goose/config.yaml(أو عبرgoose configure)؛ وCline وContinue.dev لهما إعدادات MCP خاصة بهما. الحقول هي الفكرة نفسها في كل مكان: اسم الخادم، والأمر، والمعطيات، ومتغيرات البيئة. - لا يلزم Claude Desktop. البروتوكول مفتوح ومستقل عن Claude Desktop؛ والخوادم المستخدمة هنا مفتوحة المصدر (تحقق من ترخيص كل منها) وتعمل مع أي عميل متوافق.
ما يُتيحه MCP لنموذج محلي
النموذج اللغوي المحلي بلا أدوات لا يستطيع سوى الرد بنص. مع MCP يستطيع النموذج نفسه أن يعمل على جهازك. هذا هو الفرق بين روبوت محادثة ووكيل.
- "ابحث عن كل TODO في هذا المستودع، وجمّعها حسب الملف، واكتب ملخصاً بصيغة Markdown في
notes/todos.md." — خادمfilesystemيقرأ، والنموذج يجمّع، والخادم نفسه يكتب. رحلة واحدة من البداية إلى النهاية. - "اعرض لي أفضل 10 عملاء من حيث الإيرادات هذا الربع، ثم ارسمها بيانياً." — خادم
postgresينفّذ SQL (بدور للقراءة فقط)، والنموذج يلخّص، ويكتب ملف CSV عبرfilesystemلأداة الرسم لديك. - "افتح الصفحة الرئيسية لـHacker News، وابحث عن أهم ثلاثة أخبار عن الذكاء الاصطناعي، ولخّصها، وأضفها إلى قائمة قراءتي." — خادم
playwrightيتحكم في المتصفح، والنموذج يستخرج ويلخّص، وfilesystemيضيف. - "افتح مسودة PR بعنوان
chore: bump depsعلى الـfork الخاص بي واربطها بتشغيل CI الفاشل." — خادمgithubينشئ الـPR، ويجلب التشغيل، ويكتب الرابط في الوصف. - "انظر إلى آخر 100 صف في
events.dbوأخبرني أي معرّفات مستخدمين مسؤولة عن ارتفاع الأخطاء الجديد." — خادم قاعدة بيانات يستعلم عن نسخة من البيانات؛ والنموذج يحلل؛ وتقرأ الإجابة في لوحة المحادثة. - كل واحد من هذه سير عمل من جملة إلى إجراء، كان يتطلب سابقاً إما نموذجاً سحابياً بأدوات مستضافة أو سكربتاً مكتوباً يدوياً. MCP هو الطبقة التي تتيح لك إعادة استخدام الخوادم نفسها عبر العملاء، والنموذج نفسه عبر الخوادم.
مقارنة الخوادم الأربعة الأكثر استخداماً في MCP
تغطي الخوادم أدناه معظم حالات "أريد أن يفعل نموذجي المحلي شيئاً حقيقياً". كلها مفتوحة المصدر وتعمل كعمليات فرعية محلية (أو حاوية Docker) يطلقها عميل MCP. تحقق من حالة الصيانة قبل تثبيت أي منها.
📍 في جملة واحدة
ابدأ بخادم filesystem (5 دقائق، مخاطرة منخفضة)، وأضف خادم قاعدة بيانات للعمل على البيانات، وأضف خادم المتصفح عند الحاجة فقط، وأدخل GitHub حين تثق بالنموذج على جهازك.
💬 بعبارات بسيطة
أربعة خوادم تغطي معظم ما تريد من وكيل محلي. خادم الملفات يقرأ ويكتب الملفات في مجلد تختاره. خادم قاعدة البيانات ينفّذ استعلامات على Postgres. خادم المتصفح يشغّل نافذة متصفح حقيقية ليقرأ النموذج الصفحات التي تحتاج JavaScript. خادم GitHub يفتح issues وPRs على مستودعاتك. يبدأ معظمها بأمر واحد (npx أو uvx أو Docker) ويعمل على جهازك، ولا يتصل أي منها بالإنترنت إلا عند الحاجة: خادما المتصفح وGitHub يتصلان، أما خادما الملفات وقاعدة البيانات فلا.
خادم MCP | ما يتيحه | صعوبة الإعداد | مستوى المخاطر | الأنسب لـ |
|---|---|---|---|---|
| Filesystem (مرجعي) | قراءة الملفات وكتابتها داخل دليل معزول | سهل (مسار واحد في قائمة السماح) | متوسط — قيّده بإحكام | الأتمتة الشخصية وتدوين الملاحظات وتلخيص المستودعات |
| SQLite (مؤرشف) | الاستعلام عن ملف قاعدة بيانات SQLite محلي | سهل، لكنه لم يعد مُصاناً | متوسط — بلا إصلاحات، استخدم نسخة من الملف | استكشاف بيانات مؤقت فقط |
| Postgres (postgres-mcp) | الاستعلام عن Postgres في الوضع المقيَّد (قراءة فقط) | متوسط (دور + URI) | متوسط — الوضع المقيَّد ودور للقراءة فقط | استكشاف البيانات والتقارير ونماذج BI الأولية |
| Playwright (@playwright/mcp) | التحكم في متصفح عبر لقطات إمكانية الوصول للتصفح والكشط وتعبئة النماذج | متوسط (ملفات المتصفح، زمن الاستجابة) | مرتفع — يستطيع إرسال النماذج والنقر على أي شيء | البحث والكشط واختبارات الانحدار |
| GitHub (الرسمي) | سرد المستودعات وقراءة الملفات وفتح issues وPRs | متوسط (Docker + PAT في متغير بيئة) | متوسط — قيّد التوكن بمستودعات محددة | سير عمل التطوير والفرز وصياغة PRs |
| مخصص | أي شيء يمكن التعبير عنه كأدوات JSON-RPC | صعب (تكتب الخادم بنفسك) | متغير | واجهات API الداخلية والأنظمة المتخصصة وكود الربط |
⚠️تحذير: نُقلت الخوادم المرجعية لـSQLite وPostgreSQL وPuppeteer وGitHub إلى مستودع servers-archived ولم تعد مُصانة. حزم npm الخاصة بـPostgreSQL وPuppeteer وGitHub موسومة بأنها "لم تعد مدعومة"، وخادم SQLite (حزمة Python، آخر إصدار منها في أبريل 2025) لا يتلقى إصلاحات أيضاً. استخدم الخوادم المُصانة في هذا الجدول، واقرأ كود أي خادم يحتاج إلى بيانات اعتماد.
كيف تتلاءم الأجزاء معاً
ثلاث عمليات وبروتوكول مشترك واحد. يعيش النموذج في Ollama، ويتحدث العميل MCP، ويعرض كل خادم مجموعة صغيرة من الأدوات. كل استدعاء أداة ينتقل من العميل إلى الخادم، وينفَّذ محلياً، ويعيد JSON.
- Ollama يعمل كخدمة في الخلفية على
127.0.0.1:11434ويقدّم النموذج عبر API متوافق مع OpenAI. لا يعرف ما هو MCP — يجيب فقط على chat completions ويُصدر tool calls حين يطلبها النموذج. - عميل MCP (Goose أو Cline أو Continue.dev أو LM Studio) هو الجسر. يتحدث مع Ollama للنموذج ومع خوادم MCP للأدوات. حين يُصدر النموذج tool call، يوجّهها العميل إلى الخادم المناسب، ويستلم النتيجة، ويعيدها إلى المحادثة.
- خوادم MCP عمليات فرعية مستقلة، واحدة لكل قدرة. تتحدث JSON-RPC 2.0 عبر stdio. يعلن كل خادم قائمة Tools وResources وPrompts؛ ويدمجها العميل في سطح الأدوات المعروض على النموذج.
- نقل stdio يُبقي كل شيء محلياً. يطلق العميل الخادم، ويتواصل معه عبر stdin/stdout، وينتهي الخادم حين ينتهي العميل. لا شيء يمر عبر الشبكة ما لم يفتح الخادم نفسه اتصالاً (خادم المتصفح يفعل؛ أما خادما filesystem وقاعدة البيانات فلا).
- يرى النموذج قائمة أدوات مسطحة واحدة. من منظور النموذج لا توجد خوادم — فقط قائمة بأسماء أدوات مثل
filesystem.read_fileوplaywright.browser_navigateوgithub.create_pull_request. والعميل يتولى التوجيه.
📌ملاحظة: البنية مطابقة لبنية Claude Desktop. الاختلافات هي النموذج (نموذج Ollama محلي بدل Claude) والعميل (Goose/Cline/Continue.dev/LM Studio بدل Claude Desktop). خوادم MCP هي نفسها — يمكنك تشغيل خادم filesystem تحت Claude Desktop اليوم وسيعمل دون تغيير تحت Goose غداً.
الإعداد: Ollama + Goose في 15 دقيقة
Goose هو أبسط طريق إلى وكيل MCP محلي يعمل. وكيل مفتوح المصدر (أصله من Block ويُطوَّر الآن في aaif-goose/goose) بواجهة سطر أوامر ودعم أصلي لـOllama، وسطح محادثة تفاعلي، وملف إعداد واحد لجميع خوادم بروتوكول سياق النموذج (MCP). Continue.dev وCline وLM Studio تعمل أيضاً — لكن Goose أقل كلفة إعداد في أول تجربة.
- الخطوة 1 — ثبّت Ollama. نزّله من ollama.com/download (macOS/Windows/Linux). تأكد أن الخدمة تعمل بالأمر
curl http://127.0.0.1:11434/api/tags. - الخطوة 2 — نزّل نموذجاً يدعم استدعاء الأدوات. اختر من Gemma 4 31B (
gemma4:31b) أو GLM-4.7 Flash (glm-4.7-flash) أو Qwen3.6 27B (qwen3.6:27b) أو Qwen3 32B (qwen3:32b) أو Llama 3.3 70B (llama3.3:70b). ذاكرة موحدة بحجم 32 GB أو 24 GB من VRAM تشغّل نماذج 26B–32B عند Q4_K_M بارتياح. - الخطوة 3 — ثبّت Goose. على macOS أو Linux شغّل
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash(أوbrew install block-goose-cli). على Windows استخدم مثبّت PowerShell من وثائق Goose، أو WSL. تُثبَّت الأداة باسمgoose. - الخطوة 4 — اضبط Ollama كمزوّد. شغّل
goose configure، واخترollamaكمزوّد، واضبط النموذج على الذي نزّلته، واضبط المضيف علىhttp://127.0.0.1:11434(ترك الحقل فارغاً يعني localhost:11434 أيضاً). يكتب Goose ذلك في~/.config/goose/config.yaml. قد تكون نافذة السياق الافتراضية في Ollama صغيرة (توثيق Goose يذكر 4096 توكن)، وقد يجعل ذلك Goose يتجاهل إضافاته — شغّل Ollama معOLLAMA_CONTEXT_LENGTH=32768(أو أعلى). - الخطوة 5 — أضف خادم filesystem MCP. شغّل
goose configure، واختر Add Extension، ثم Command-line Extension، أو أضف كتلةextensionsإلى~/.config/goose/config.yaml(المثال أدناه). للتجربة السريعة، الأمرgoose session --with-extension "npx -y @modelcontextprotocol/server-filesystem /path/to/workspace"يفعّله لتلك الجلسة فقط. ابدأgoose sessionواطلب منه سرد الملفات في دليل الاختبار. الدور الأول يؤكد أن الخادم متصل. - الخطوة 6 — تحقق بمهمة حقيقية. جرّب
goose sessionواطلب: "أنشئ قائمة بكل ملف Markdown فيnotes/مع العنوان وعدد الكلمات، واكتب النتيجة فيnotes/index.md." إذا قرأ الوكيل ولخّص وكتب النتيجة، فالحلقة تعمل.
# 1. Pull a tool-calling model
ollama pull gemma4:31b
# 2. Install Goose (macOS / Linux)
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash
# 3. Configure Ollama as the provider
goose configure
# Provider: ollama
# Model: gemma4:31b
# Host: http://127.0.0.1:11434
# 4. Give Ollama a context window big enough for tool use, then start a session
OLLAMA_CONTEXT_LENGTH=32768 ollama serve # in a separate terminal
goose session💡نصيحة: إذا كنت تستخدم Cline أو Continue.dev بالفعل، فتجاوز Goose واستخدمهما — كلاهما عميل MCP. لكل منهما إعدادات MCP خاصة به (راجع وثائقه لمعرفة الملف بالضبط)؛ النموذج والخوادم هي نفسها، ولا يتغير سوى التطبيق المضيف وصيغة إعداده.
خادم Filesystem: قراءة دليل معزول وكتابته
خادم الملفات هو أول ما يُثبَّت وأسهل ما يُقيَّد بأمان. يعرض read_file وwrite_file وlist_directory وmove_file وsearch_files وcreate_directory — كلها مقيّدة بمسار واحد أو أكثر في قائمة السماح.
- التثبيت: الخادم المرجعي هو
@modelcontextprotocol/server-filesystem، يُشغَّل عبرnpx -y(لا حاجة لتثبيت عام؛ يلزم Node.js). وهو أحد الخوادم المرجعية التي ما زالت مُصانة. يطلقه Goose وCline وContinue.dev من إعداداتها. - مسارات السماح: يقبل الخادم وسيطاً واحداً أو أكثر لأدلة ويرفض أي عملية خارجها. مرّر دائماً مساراً صريحاً وضيقاً — لا
~ولا/أبداً. - الأدوات المعروضة:
read_fileوread_multiple_filesوwrite_fileوedit_file(استبدالات على مستوى الأسطر) وlist_directoryوsearch_filesوmove_fileوcreate_directoryوdirectory_tree. يراها النموذج باسمfilesystem.read_fileوهكذا. - تسهيلات الاستخدام:
directory_treeيعيد شجرة JSON؛ مثالية ليتعرّف النموذج على البنية قبل قراءة ملفات محددة. وsearch_filesيجري بحثاً تكرارياً شبيهاً بـgrep. - سطح المخاطر: يحترم الخادم قائمة السماح، لكنه داخلها يملك صلاحية قراءة وكتابة كاملة. اعتبر قائمة السماح الحاجز الوحيد، واختر دليل عمل مخصصاً بدل مجلدك الرئيسي.
# ~/.config/goose/config.yaml
extensions:
filesystem:
type: stdio
name: filesystem
enabled: true
cmd: npx
args: ["-y", "@modelcontextprotocol/server-filesystem", "/Users/you/agent-workspace"]
envs: {}
timeout: 300⚠️تحذير: لا تضع / أو دليلك الرئيسي في قائمة السماح أبداً. أنشئ مجلد agent-workspace مخصصاً، وضع فيه نسخاً من الملفات التي تريد للوكيل لمسها، ودعه يعمل داخل ذلك المجلد فقط. إذا حدث خطأ، يتوقف نطاق الضرر عند دليل واحد.
خوادم قواعد البيانات: الاستعلام بأمان عن Postgres (وSQLite)
يحوّل خادم قاعدة البيانات النموذج إلى محلل مبتدئ يجيب عن أسئلة مدعومة ببيانات حقيقية — شرط أن تُبقيه للقراءة فقط. الخادمان المرجعيان الأصليان لـSQLite وPostgreSQL مؤرشفان، لذا استخدم خادم Postgres مُصاناً وتعامل مع SQLite بحذر.
- Postgres:
postgres-mcp(من Crystal DBA، ترخيص MIT) هو الخيار الذي يملك وضع القراءة فقط (آخر إصدار على PyPI يعود إلى مايو 2025، فتحقق من نشاط المستودع قبل الاعتماد عليه). شغّله بـuvx postgres-mcp --access-mode=restricted(أوpipx install postgres-mcp، أو صورة Docker الخاصة به) ومرّر URI الاتصال في متغير البيئةDATABASE_URI. الوضع المقيَّد يسمح بمعاملات القراءة فقط وبحد زمني للاستعلام؛ أما الوضع غير المقيَّد فللتطوير فقط. - استخدم دوراً مخصصاً للقراءة فقط أيضاً. الوضع المقيَّد حاجز، ودور قاعدة البيانات حاجز آخر. أنشئ دور
agent_roبصلاحيات SELECT فقط واستخدم سلسلة اتصال ذلك الدور. - SQLite: الخادم المرجعي مؤرشف. هو حزمة Python باسم
mcp-server-sqlite(وليس حزمة npm؛ آخر إصدار في أبريل 2025)، وقد يظل يعمل، لكنه لا يتلقى إصلاحات. وجّهه إلى نسخة من الملف فقط، لا إلى نسختك الوحيدة، أو حمّل البيانات في Postgres بدلاً من ذلك. اقرأ كود أي خادم SQLite من المجتمع قبل أن تمنحه ملفاً. - الوعي بالمخطط: اطلب من الوكيل "اسرد الجداول ووصف الأكثر استخداماً منها (خمسة)" قبل طرح أسئلة تحليلية — يكون النموذج أدق بكثير بعد فحص المخطط مما لو خمّن أسماء الأعمدة.
- التكلفة: الاستعلامات تضرب قاعدة بياناتك مباشرةً. استعلام
SELECT *سيئ الصياغة على جدول من 100 مليون صف حادث هنا كما لو صدر من إنسان — أبقِ الدور على مجمّع اتصالات منفصل مع مهلة للاستعلام (statement timeout).
# ~/.config/goose/config.yaml
extensions:
postgres:
type: stdio
name: postgres
enabled: true
cmd: uvx
args: ["postgres-mcp", "--access-mode=restricted"]
envs:
DATABASE_URI: "postgresql://agent_ro:${PG_AGENT_PASSWORD}@127.0.0.1:5432/analytics"
timeout: 300💡نصيحة: أنشئ دور Postgres مرة واحدة ولا تمنح الوكيل أي شيء آخر: CREATE ROLE agent_ro WITH LOGIN PASSWORD '…'; GRANT CONNECT ON DATABASE analytics TO agent_ro; GRANT USAGE ON SCHEMA public TO agent_ro; GRANT SELECT ON ALL TABLES IN SCHEMA public TO agent_ro; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO agent_ro; ثم أضف statement_timeout = 30s إلى الدور. لن يستطيع الوكيل الكتابة ولا الحذف ولا العمل إلى الأبد.
خادم المتصفح: التحكم في متصفح عبر Playwright MCP
خادم المتصفح هو الأقوى والأخطر بين الأربعة. يطلق متصفحاً حقيقياً ويعرض التنقل والنقر وتعبئة النماذج ولقطات الشاشة — أي أنه يستطيع فعل أي شيء تفعله في المتصفح، بما في ذلك إرسال النماذج.
- أي خادم: استخدم
@playwright/mcpمن Microsoft (npx @playwright/mcp@latest). حزمة@modelcontextprotocol/server-puppeteerالقديمة موسومة بأنها "لم تعد مدعومة"، ولا توجد حزمة باسم@modelcontextprotocol/server-playwrightعلى npm. - الأدوات المعروضة:
browser_navigateوbrowser_snapshotوbrowser_clickوbrowser_typeوbrowser_fill_formوbrowser_evaluate(تشغيل JavaScript) وbrowser_take_screenshotوbrowser_tabsوbrowser_wait_for. يقرأ النموذج الصفحة عبرbrowser_snapshot(لقطة إمكانية وصول، وتوصي Playwright MCP بها على لقطات الشاشة عند تنفيذ الإجراءات) ويستخدم لقطات الشاشة للاطلاع فقط. - زمن الاستجابة: جلسات المتصفح الحقيقية تستغرق 1–5 ثوانٍ لكل إجراء. وتصفح متعدد الخطوات يستهلك بسهولة 30–60 ثانية وعشرات الآلاف من التوكنات لأن محتوى الصفحة كبير. استخدم نافذة سياق 32K+.
- مراجع العناصر: ينقر النموذج على العناصر بحسب المراجع في اللقطة. النماذج الأصغر تختار العنصر الخطأ كثيراً؛ ونموذج 27B+ يدعم استدعاء الأدوات يتعامل مع الأنماط الشائعة بموثوقية. أبقِ المهام محددة النطاق — "استخرج عنوان هذا الرابط وفقرته الأولى" أوثق بكثير من "تنقّل في الموقع وابحث عن صفحة التواصل".
- حالات الاستخدام المناسبة: البحث (افتح الصفحة ولخّصها وأضفها إلى الملاحظات)، واختبارات الانحدار (تنقّل وانقر والتقط لقطة)، وتعبئة النماذج في صفحات تتحكم بها. وغير المناسبة: كل ما تترتب على نقرة خاطئة فيه عواقب على الويب الحي.
# ~/.config/goose/config.yaml
extensions:
playwright:
type: stdio
name: playwright
enabled: true
cmd: npx
args: ["@playwright/mcp@latest"]
envs: {}
timeout: 300
# Block obviously dangerous endpoints at the OS firewall level
# rather than relying on the agent to refuse them.⚠️تحذير: لا تمنح خادم المتصفح بيانات اعتماد أبداً. إذا احتجت جلسة موثَّقة، فسلّم الوكيل ملف تعريف متصفح موثَّقاً مسبقاً، ولا تدعه يتصفح مواقع عالية الأثر (البنوك والبريد ولوحات السحابة ونماذج الدفع). النموذج لا يملك حكماً على ما يفعله الزر — يرى نصاً وينقر. تعامل معه كمتدرب بلا سياق وبلا وسيلة للتراجع.
خادم GitHub: المستودعات وIssues وPRs من نموذج محلي
يحوّل خادم GitHub أعمال المستودعات بلغة طبيعية إلى استدعاءات API. وهو أبسط الأربعة إعداداً وأسهلها تقييداً بدقة عبر أذونات توكن الوصول الشخصي (PAT).
- التثبيت: استخدم
github/github-mcp-serverالرسمي من GitHub، يُشغَّل من صورة Docker الخاصة به (ghcr.io/github/github-mcp-server) مع PAT في متغير البيئةGITHUB_PERSONAL_ACCESS_TOKEN. حزمة npm القديمة@modelcontextprotocol/server-githubموسومة بأنها "لم تعد مدعومة"؛ لا تستخدمها في الإعدادات الجديدة. - الأدوات المعروضة:
search_repositoriesوget_file_contentsوcreate_or_update_fileوcreate_pull_requestوlist_issuesوcreate_issueوadd_issue_commentوmerge_pull_request، وغيرها الكثير. السطح الكامل كبير؛ ومعظم المهام تستخدم 5–10 أدوات. - قيّد الـPAT. استخدم PAT دقيق الصلاحيات (fine-grained) مقيّداً بمستودعات محددة بأدنى الأذونات اللازمة (Read للتصفح، Write لإنشاء PRs وissues). لا تستخدم PAT كلاسيكياً بصلاحية
repoلوكيل تجريبي. - سير عمل حقيقية: الفرز ("اقرأ آخر 20 issue مفتوحة وجمّعها واقترح تسميات")، والصياغة ("اقرأ README وافتح PR يصحح الأخطاء الإملائية")، والتقارير ("أي PRs راكدة هذا الأسبوع").
- سطح المخاطر: يستطيع الوكيل إنشاء issues وPRs والتعليق عليها، و(مع صلاحيات الكتابة) دفع commits. عطّل أدوات الدمج ما لم تثق بالنموذج وسير العمل معاً — دمج بالخطأ في مستودع بـPAT دقيق الصلاحيات يمكن التراجع عنه، لكن فقط إن لاحظته سريعاً.
# ~/.config/goose/config.yaml
extensions:
github:
type: stdio
name: github
enabled: true
cmd: docker
args: ["run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "ghcr.io/github/github-mcp-server"]
envs:
GITHUB_PERSONAL_ACCESS_TOKEN: "${GH_AGENT_PAT}"
timeout: 300
# Fine-grained PAT scoped to one or two test repos,
# not your personal account-wide classic token.نموذج أمان لا يثق في النموذج
النموذج الذهني الصحيح هو "النموذج اللغوي متدرب غير موثوق يحمل المفاتيح التي تعطيه إياها". القدرات تأتي من الخوادم والأسطح التي تضعها في قائمة السماح — لا من حكم النموذج.
- اعزل خادم filesystem في دليل واحد. لا
~ولا/أبداً. اختر مجلدagent-workspace/وضع فيه نسخاً من الملفات التي يحتاج الوكيل لمسها. إذا حدث خطأ، فأسوأ الاحتمالات مجلد واحد. - شغّل خوادم قواعد البيانات للقراءة فقط افتراضياً. دور
agent_roمخصص بصلاحياتSELECTفقط ومهلة استعلام 30 ثانية يزيل فئة كاملة من الحوادث. - ضع كل أداة كتابة أو shell خلف موافقة صريحة. يدعم Goose وCline وContinue.dev جميعاً قواعد موافقة لكل أداة. اسمح بأدوات القراءة افتراضياً؛ واشترط الموافقة لـ
write_fileوedit_fileوexecute_commandوcreate_pull_requestوأي إجراء متصفح يرسل نماذج. - استخدم سجل التدقيق. كل عميل MCP يسجّل استدعاءات الأدوات ونتائجها. بعد جلسة طويلة، افحص السجل: ستلتقط محاولات من النموذج لم تتوقعها (بعضها غير ضار، وبعضها يستحق تشديد الأذونات).
- قيّد وصول الأطراف الثالثة بالتوكن بدقة. PATs في GitHub مقيّدة بمستودعي اختبار. أدوار Postgres للقراءة فقط. جلسات متصفح بلا بيانات اعتماد. سيحاول النموذج في النهاية أشياء لم تتوقعها؛ ويجب ألا تعتمد حدود ما يستطيع فعله على إصابته الصواب.
- اعزل الوكيل عن الشبكة عند التعامل مع بيانات حساسة. عطّل وصول الشبكة على المضيف أثناء تشغيل الوكيل (أو استخدم network namespace) عند العمل على بيانات خاصة. المكدس المحلي لا يُخرج أي شيء من الجهاز أصلاً، لكن الدفاع المتعدد الطبقات يلتقط أخطاء خوادم الأطراف الثالثة.
- عامل اختيار خادم MCP كأي اختيار لاعتمادية برمجية. الخوادم المرجعية مُصانة جيداً؛ أما كثير من خوادم الأطراف الثالثة فلا. اقرأ كود الخادم قبل تثبيت أي خادم يحتاج إلى بيانات اعتماد.
📌ملاحظة: عادة مفيدة للتعافي من الأخطاء: قبل أي مهمة وكيل غير تافهة، نفّذ git stash (أو git checkout -b agent/<task>). بعد المهمة، راجع الفرق، واحتفظ بما تريد، وتخلَّ عن الباقي. هذه هي الممارسة نفسها التي تجعل جلسات Cline أو Aider الطويلة آمنة — راجع مقارنة Continue.dev وCline وAider للنمط الأوسع.
MCP محلي مقابل Claude Desktop: ما يتغير وما يبقى
البروتوكول والخوادم متطابقان. لا يتغير سوى النموذج والعميل. هذا هو السبب الكامل لأهمية MCP — استثمارك في الأدوات ينتقل بسلاسة بين الإعدادات المحلية والسحابية.
الطبقة | Claude Desktop | Ollama المحلي + Goose |
|---|---|---|
| النموذج | Claude (من Anthropic، سحابي) | Gemma 4 أو GLM-4.7 أو Qwen3 أو Llama 3.3 (محلي) |
| العميل | تطبيق Claude Desktop | Goose أو Cline أو Continue.dev أو LM Studio |
| الخوادم | خوادم MCP نفسها | خوادم MCP نفسها |
| البروتوكول | MCP (JSON-RPC 2.0) | MCP (JSON-RPC 2.0) |
| التكلفة لكل طلب | إنفاق API لكل توكن | 0 دولار — استدلال محلي |
| الخصوصية | المحادثة تصل إلى Anthropic | تبقى على الجهاز |
| حدود المعدل | تسري حدود معدل API | محدودة بإنتاجية العتاد فقط |
| جودة استدعاء الأدوات | الأفضل في فئته | جيدة مع نماذج 27B+؛ تتراجع سريعاً دون 7B |
| اشتراط الإنترنت | نعم | فقط إذا جلب الخادم نفسه بيانات (مثل المتصفح) |
| وقت الإعداد | 5 دقائق | 15 دقيقة (مرة واحدة) |
اختيار نموذج استدعاء الأدوات لـMCP المحلي
موثوقية استدعاء الأدوات تزداد مع حجم النموذج وتدريبه، لا مع أداة التشغيل. النموذج الذي يُصدر tool calls مشوّهة في Cline سيُصدر مثلها في Goose للسبب نفسه.
- Gemma 4 31B (
gemma4:31b) — تدريب Google على استدعاء الأدوات هو الأفضل في فئته لهذا الحجم. يتسع في ذاكرة موحدة 16 GB أو 24 GB VRAM عند Q4_K_M. استدلال عام جيد؛ ومحافظ نوعاً ما في الاستدعاءات المتسلسلة. - GLM-4.7 Flash (
glm-4.7-flash) — نموذج Zhipu يتمتع بموثوقية قوية جداً في استدعاء الأدوات ونافذة سياق 128K جاهزة. أثقل قليلاً من Gemma 4؛ ويتسع بارتياح على بطاقة 24 GB. - Qwen3.6 27B (
qwen3.6:27b) — خيار Qwen الأحدث على Ollama (نحو 18–19 GB، وسياق 256K، واستدعاء الأدوات مدعوم). Qwen3 32B (qwen3:32b) — متوازن؛ نموذج كثيف بحجم 32B يتعامل مع MCP بشكل نظيف ويرتاح في حلقة وكيل طويلة. Qwen3-Coder 30B (qwen3-coder:30b) هو الأفضل إذا كان عمل وكيلك مرتكزاً على الكود. - Llama 3.3 70B (
llama3.3:70b) — أعلى سقف لكنه الأثقل. ذاكرة موحدة 48 GB+ أو بطاقتان 24 GB عند Q4_K_M. استخدمه فقط إذا كان عتادك يتحمله؛ فالنماذج الأصغر تكفي غالباً. - تجنّب لأعمال MCP: أي نموذج أقل من 7B وأي نموذج للأغراض العامة بلا تدريب صريح على استدعاء الأدوات. سيُصدر استدعاءات مشوّهة، وستتوقف الحلقة، وستلوم أداة التشغيل — لكنها سليمة.
- لتقنيات الصياغة المنظمة التي تحسّن جودة استدعاء الأدوات على أي نموذج، راجع chain-of-thought prompting.
- للبيانات المقارنة المباشرة، راجع أفضل النماذج المحلية لاستدعاء الأدوات في 2026.
MCP مقابل Function Calling البسيط: ما الفرق
Function Calling هو ما يُصدره النموذج. MCP هو البروتوكول الذي يتيح للعملاء والأدوات أن يجد بعضهم بعضاً. يعملان في طبقتين مختلفتين ويتعاونان؛ ولا يحل أحدهما محل الآخر.
- Function calling قدرة في جانب النموذج: يُصدر النموذج كائن JSON منظماً يصف اسم الأداة ومعطياتها. أدوات OpenAI وAnthropic وواجهة tool-call في Ollama تستخدم الفكرة نفسها بصيغ نقل مختلفة قليلاً.
- MCP يقع فوقه: يوحّد طريقة وصف الأدوات واكتشافها واستدعائها وإعادة نتائجها عبر العمليات. نموذج function calling وحده لا يعرف شيئاً عن نظام ملفاتك؛ خادم MCP يتيح عمليات الملفات، ويربطها العميل بواجهة function calling الخاصة بالنموذج، فيستطيع النموذج استدعاءها.
- الفائدة هي قابلية التشغيل البيني. اكتب خادم الملفات مرة واحدة؛ فيستخدمه Claude Desktop وGoose وCline وContinue.dev وLM Studio دون تغيير. بدّل النموذج من Claude إلى Gemma 4؛ ولا يتغير الخادم.
- يمكنك بناء وكلاء بـfunction calling الخام. لكنك ستعيد تنفيذ معالجات الملفات وقواعد البيانات والمتصفح في كل مشروع. أما مع MCP فهي اعتماديات جاهزة.
- للسكربتات لمرة واحدة، function calling الخام أبسط. أما لكل ما تريد إعادة استخدامه عبر المشاريع أو النماذج، فMCP هو الطريق الأقل جهداً خلال أيام قليلة.
الأخطاء الشائعة في إعداد MCP المحلي
- الخطأ 1: استخدام نموذج صغير للأغراض العامة. النماذج الأقل من 7B (ومعظم نماذج 7B–13B العامة بلا ضبط دقيق على استدعاء الأدوات) تُصدر tool calls مشوّهة. استخدم نموذجاً بحجم 27B+ مضبوطاً لاستدعاء الأدوات وتوقف عن محاربة أداة التشغيل.
- الخطأ 2: وضع دليلك الرئيسي في قائمة السماح. قوائم السماح "للاختبار فقط" التي تضم
~تنتقل إلى الاستخدام الروتيني. أنشئagent-workspaceمخصصاً منذ البداية. - الخطأ 3: ترك خادم قاعدة البيانات في وضع القراءة والكتابة. استعلام
DELETEيكتبه وكيل واثق على جدول حقيقي هو بالضبط الحادث الذي يتجنبه هذا الإعداد. اجعلagent_roافتراضياً؛ وأنشئ دوراً قابلاً للكتابة منفصلاً فقط للمهام التي تتطلب ذلك صراحةً، ولمدة تلك المهام فقط. - الخطأ 4: الموافقة التلقائية على كل أداة. مفتاح "وافق على الكل" مريح وخطير. وافق تلقائياً على أدوات القراءة (
read_fileوlist_directoryوquery)؛ واشترط الموافقة دائماً لأدوات الكتابة وshell وPR. - الخطأ 5: تشغيل نموذج بسياق 32K في عمل متصفح متعدد الخطوات. محتوى الصفحات كبير؛ ووكيل يتصفح ثلاث صفحات قد يستهلك 32K توكن قبل أن يبدأ الاستدلال. استخدم نموذجاً بسياق 128K للمهام الثقيلة على المتصفح.
- الخطأ 6: افتراض أن الوكيل يملك حكماً. لا يملكه. النموذج لا يعرف أن "هذه قاعدة بيانات الإنتاج" أو أن "هذا الـPR سيُنشَر". الأذونات هي حاجزك الوحيد.
- الخطأ 7: تثبيت كل خادم مرجعي منذ البداية. أدوات أكثر = موجّه نظام أكبر = اختيار أدوات أبطأ وأقل موثوقية. ابدأ بـ
filesystem. وأضف الباقي فقط حين يكون لديك سير عمل يحتاجها. - الخطأ 8: تثبيت خوادم مرجعية مؤرشفة من شروحات قديمة. حزم npm
@modelcontextprotocol/server-postgresو-puppeteerو-githubموسومة بأنها "لم تعد مدعومة"، وخادم SQLite مؤرشف. وبعض الشروحات القديمة تذكر أيضاً حزم npm غير موجودة (server-sqliteوserver-playwright). استخدم الخوادم المُصانة المذكورة أعلاه. - الخطأ 9: وضع إعداد MCP في Ollama. Ollama لا يملك إعدادات MCP. الخوادم تُضبط في العميل (
extensionsفي Goose، أو إعدادات MCP في Cline أو Continue.dev).
المصادر
- مواصفة بروتوكول سياق النموذج — المواصفة الرسمية ومخطط JSON-RPC وتعريفات النقل ودورة الحياة، بما في ذلك سجل تغييرات 2026-07-28.
- مستودع modelcontextprotocol/servers على GitHub — الخوادم المرجعية المُصانة (filesystem وgit وfetch وmemory وغيرها) وقائمة الخوادم المؤرشفة.
- github/github-mcp-server — خادم MCP الرسمي من GitHub، وإعداد Docker والملف التنفيذي.
- microsoft/playwright-mcp — خادم Playwright MCP وأدوات المتصفح فيه.
- crystaldba/postgres-mcp — خادم Postgres MCP بوضع وصول مقيَّد (قراءة فقط).
- وثائق Goose — تثبيت أداة سطر الأوامر، وإعداد مزوّد Ollama، وصيغة إعداد الإضافات (خوادم MCP).
- مكتبة نماذج Ollama — النماذج المحلية المتاحة، وأعلام دعم استدعاء الأدوات، ومستويات التكميم المذكورة في هذا الدليل.
- مستودع Cline على GitHub — تنفيذ عميل MCP لـVS Code، ولوحة خوادم MCP.
- وثائق Continue.dev — مرجع كتلة الإعداد
mcpServersلعميل Continue.dev.
الأسئلة الشائعة
ما هو MCP ولماذا يهم الذكاء الاصطناعي المحلي؟
MCP (بروتوكول سياق النموذج) هو بروتوكول JSON-RPC 2.0 مفتوح يتيح لعميل (Goose أو Cline أو Continue.dev أو LM Studio أو Claude Desktop) ربط نموذج لغوي بخوادم أدوات بطريقة موحّدة. يهم الذكاء الاصطناعي المحلي لأنه يوحّد الطبقة التي تحوّل نموذج المحادثة إلى وكيل — اكتب خادم أدوات مرةً واحدة واستخدمه تحت أي عميل وأي نموذج، بما في ذلك نموذج Ollama المحلي. بدون MCP، يعيد كل مشروع اختراع أدوات الملفات وقواعد البيانات والمتصفح مقابل عميله الخاص.
هل يعمل MCP بدون Claude Desktop؟
نعم. البروتوكول مفتوح ومستقل تماماً عن Claude Desktop. Goose وCline وContinue.dev وLM Studio كلها توفر تطبيقات عميل MCP تعمل مع نماذج Ollama المحلية. الخوادم المُصانة (filesystem وPostgres وPlaywright وGitHub) تعمل دون تعديل تحت أي عميل متوافق.
ما النماذج المحلية الأفضل دعماً لـMCP؟
الخيارات الأكثر موثوقيةً هي: Gemma 4 31B وGLM-4.7 Flash وQwen3.6 27B أو Qwen3 32B (أو Qwen3-Coder 30B للعمل المرتكز على الكود) وLlama 3.3 70B. جميعها لديها تدريب صريح على استدعاء الأدوات وتُصدر JSON استدعاء دوال نظيفاً يستطيع عملاء MCP توجيهه. النماذج الأقل من 7B (ومعظم النماذج العامة بدون ضبط دقيق على استدعاء الأدوات) تُنتج tool calls مشوّهة بانتظام.
هل MCP آمن؟ هل يستطيع الوكيل حذف ملفاتي؟
يستطيع ذلك إذا سمحت له. الأمان يأتي من كيفية إعدادك للخوادم لا من البروتوكول. خادم filesystem يعمل فقط داخل المسارات التي تضعها في قائمة السماح — قيّده بدليل agent-workspace مخصص. خادم قاعدة البيانات يعمل في وضع القراءة فقط حين تستخدم الوضع المقيَّد ودور SELECT فقط. اشترط دائماً موافقة صريحة لأدوات الكتابة وshell وPR؛ ووافق تلقائياً على عمليات القراءة فقط. يعرض لك سجل التدقيق بدقة ما فعله الوكيل بعد وقوعه.
هل يمكنني كتابة خادم MCP خاص بي؟
نعم — وحزم SDK تجعل ذلك سهلاً. حزمتا SDK الرسميتان لـTypeScript وPython (@modelcontextprotocol/sdk وmcp) تتوليان سباكة JSON-RPC. تعرّف الأدوات بمخططات JSON الخاصة بها ودالة معالجة، وتعرضها الـSDK عبر stdio. الخادم أحادي الغرض (أداة أو اثنتان تغلّفان API داخلياً) ملف من 50–100 سطر.
هل يعمل MCP على Windows؟
نعم. Ollama وGoose وCline وContinue.dev وLM Studio كلها تعمل على Windows. خوادم MCP تعمل كعمليات فرعية من Node.js أو Python؛ وكلا بيئتي التشغيل مدعومتان كلياً على Windows. التفصيل الوحيد الخاص بالمنصة هو التعامل مع المسارات — استخدم الشرطة المائلة للأمام في الإعداد أو اهرب الشرطات المائلة للخلف بشكل صحيح. عدا ذلك، التجربة مطابقة لـmacOS وLinux.
كيف أضع استدعاءات أدوات MCP في sandbox؟
ثلاث طبقات تغطي معظم المخاطر. أولاً، قيّد كل خادم بضيق في مستوى الإعداد: filesystem لدليل واحد، وقاعدة البيانات لدور قراءة فقط، وGitHub لـPAT دقيق الصلاحيات على مستودعات اختبار. ثانياً، استخدم قواعد الموافقة لكل أداة في العميل: موافقة تلقائية للقراءات، وموافقة مطلوبة للكتابات. ثالثاً، احتفظ بالوكيل داخل workspace متوافق مع git stash لكي تكون أي إجراءات مدمّرة قابلة للتراجع عنها عبر git. وللمهام الحساسة، شغّل على مضيف بلا وصول للشبكة عدا النقاط التي تحتاجها الخوادم صراحةً.
هل يستطيع وكلاء MCP إجراء طلبات HTTP؟
نعم، عبر خوادم محددة. خادم المتصفح (Playwright MCP) يشغّل متصفحاً حقيقياً ينفّذ أي طلبات ينتقل إليها النموذج. وتعرض عدة خوادم من أطراف ثالثة أدوات http_get/http_post بشكل أكثر مباشرة. أما خادما filesystem وقاعدة البيانات فلا يجريان طلبات شبكة؛ إنهما يعملان على الموارد المحلية فقط.
هل يعمل MCP مع Ollama أصلياً أم أحتاج إلى غلاف؟
Ollama نفسه لا يتحدث MCP — فهو يقدّم API دردشة متوافقاً مع OpenAI. تحتاج إلى عميل (Goose أو Cline أو Continue.dev أو LM Studio) يربط API الدردشة في Ollama بخوادم MCP. يوجّه العميل tool calls الصادرة عن النموذج إلى خادم MCP المناسب ويعيد النتائج إلى المحادثة. من منظور المستخدم، لا يلزم إعداد إضافي سوى تثبيت العميل وتوجيهه إلى Ollama.
ما الفرق بين MCP وFunction Calling؟
Function Calling هو إصدار النموذج اللغوي لـJSON منظّم يسمّي أداةً ومعطياتها — هذه قدرة النموذج. MCP هو البروتوكول الذي يتيح لخوادم الأدوات والعملاء وصف الأدوات واكتشافها واستدعاءها وإعادة نتائجها عبر العمليات — هذه طبقة قابلية التشغيل البيني. يتعاونان: العميل يحوّل تعريفات أدوات MCP إلى تنسيق function calling للنموذج، والنموذج يُصدر function call، والعميل يُعيد تعيين الاستدعاء إلى خادم MCP، والخادم ينفّذه. بدون MCP يظل function calling ممكناً؛ لكنك تُعيد تنفيذ معالجات filesystem/قاعدة البيانات/المتصفح في كل مشروع. مع MCP، تعمل الخوادم نفسها تحت أي عميل.
كيف أضيف خادم MCP إلى Ollama؟
لا تضيفه إلى Ollama — فـOllama لا يملك إعدادات MCP. تضيف الخادم في العميل الذي يقف أمام Ollama. في Goose، شغّل goose configure، واختر Add Extension، ثم Command-line Extension، وأدخل أمر الخادم (مثلاً npx -y @modelcontextprotocol/server-filesystem /path/to/workspace)؛ وللتجربة السريعة استخدم goose session --with-extension "<command>". لدى Cline وContinue.dev إعدادات MCP خاصة بهما. تأكد أن Ollama يشغّل نموذجاً يدعم استدعاء الأدوات بنافذة سياق لا تقل عن 32K.
هل يمكنني استخدام Claude Desktop مع نماذج Ollama؟
ليس كإعداد مباشر. Claude Desktop يتحدث إلى نماذج Anthropic السحابية، لذا لا يشغّل نموذج Ollama. ما ينتقل من Claude Desktop هو منظومة خوادم MCP: الخوادم نفسها تعمل مع عميل MCP يدعم Ollama، مثل Goose أو Cline أو Continue.dev أو LM Studio. وهذا هو المكافئ المحلي الذي يصفه هذا الدليل.
أي خوادم MCP الرسمية مؤرشفة، وما بديلها؟
نُقلت الخوادم المرجعية لـSQLite وPostgreSQL وPuppeteer وGitHub (وغيرها) إلى مستودع servers-archived ولم تعد مُصانة؛ وحزم npm الخاصة بها (حيث توجد) موسومة بأنها "لم تعد مدعومة" ولا تتلقى إصلاحات أمنية. البدائل المُصانة: github/github-mcp-server الرسمي من GitHub لـGitHub، و@playwright/mcp من Microsoft لأتمتة المتصفح، وpostgres-mcp (من Crystal DBA) في الوضع المقيَّد لـPostgres. أما SQLite فلا يوجد خادم رسمي مُصان، لذا استخدم نسخة من الملف مع الخادم المؤرشف أو حمّل البيانات في Postgres. ويظل خادم filesystem خادماً مرجعياً مُصاناً بنشاط.
