العودة إلى الدراسة
مساعد ذكاء اصطناعي — اقرأ مراجعك أسرع 10 مرات.من 7$ شهريًا · مدى الحياة 39$
عرض الأسعار ←

Zotero MCP Server: بلا حاجة لفتح Zotero، والبحث في 10,000 ملف PDF خلال ~20 ms

إذا جرّبت خادم Zotero MCP من الجيل الأول، فأنت تتذكر الطقس المعتاد: كان يجب أن يكون Zotero مفتوحًا، وأن يكون الـ API المحلي مفعّلًا، وأن تزحف كل استعلاماتك عبر مكتبتك سجل بيانات وصفية واحدًا في كل مرة. هذا مقبول لعرض توضيحي. لكنه غير مقبول عندما تضم مكتبتك 5,000 ملف PDF ويطلق الوكيل عشرين عملية بحث قبل أن تنتهي من كتابة جملة واحدة.

إن Zotero MCP Server الجديد — @docsagent/mcp-zotero v4.0.1، الصادر في 21 سبتمبر 2026 — آلة مختلفة. فهو يأتي بـواجهتين (JavaScript وPython) فوق نواة بحث أصلية مكتوبة بـ C++ ومقيمة تقرأ دليل بيانات Zotero مباشرة. يعمل البحث دون فتح Zotero، وتتحول المكتبات التي تضم 10,000+ ملف PDF إلى قاعدة معرفة بزمن استجابة يُقاس بالمللي ثانية لـ Claude Code وCursor وCodex وClaude Desktop وGemini CLI وQwen Code وCline أو أي عميل MCP آخر.

هذا هو دليل الإصدار الجديد: ما الذي تغيّر، وكيف تثبّته في بيئتي التشغيل، والأدوات الثماني التي يحصل عليها وكيلك، وأرقام الأداء للمكتبات الكبيرة فعلًا.

ما الجديد في Zotero MCP Server 4.0

  • واجهتان، نواة واحدة. عقد الأدوات نفسه متاح كحزمة TypeScript على npm (@docsagent/mcp-zotero) وكحزمة Python على PyPI (docsagent-mcp-zotero). اختر بيئة التشغيل التي تستخدمها منظومتك بالفعل — فالأدوات والمخططات ورموز الأخطاء وبوابة الكتابة متطابقة.
  • لا حاجة لتشغيل Zotero. تقرأ نواة C++ الملف ~/Zotero/zotero.sqlite ودليل storage/ مباشرة، لذا تستمر الفهرسة والبحث في العمل بينما Zotero مغلق — أو لم يُثبَّت على هذا الجهاز أصلًا.
  • خدمة مقيمة، لا عملية فرعية لكل استدعاء. تعمل النواة في الخلفية على http://127.0.0.1:23120/rpc، وتعيد بناء فهرسها مع تغيّر مكتبتك، وتبقى جاهزة عبر إعادات تشغيل عميل MCP. لا يدفع وكيلك أبدًا ضريبة البدء البارد.
  • مصمّم للمكتبات الكبيرة. بحث نصي كامل بـBM25 عبر فهرس معكوس + ترتيب المقاطع على 1,000+ ملف PDF خلال ~15 ms، ببصمة ذاكرة تُقاس بمئات قليلة من MB بدلًا من غيغابايتات.
  • 8 أدوات MCP (5 للقراءة + 3 للكتابة) بوسائط مُتحقَّق منها عبر مخطط JSON، وميزانيات رموز، وإزالة تكرار النتائج، وبوابة أمان كتابة من ثلاث طبقات.
  • وسيلتا نقل. stdio لعملاء MCP المحليين؛ وStreamable HTTP (/mcp) مع فحوصات الأصل، ومصادقة بمفتاح API أو OAuth 2.0 (RFC 7662)، وRBAC لكل طلب عند نشره عن بُعد.
  • ملف إعداد واحد. الملف ~/.docsagent/config.json مشترك بين واجهة JS وواجهة Python ونواة C++.

كيف يعمل: واجهتان فوق نواة أصلية واحدة

MCP Client (Claude Code / Claude Desktop / Cursor / Codex / Gemini CLI / Qwen Code / Cline)
        │  stdio (local)   or   Streamable HTTP  /mcp  (remote)
        ▼
MCP shell  ← @docsagent/mcp-zotero  (TypeScript)  or  docsagent-mcp-zotero  (Python)
   · spec-driven tool schemas, argument validation, token budget, dedup
   · write orchestration via the Zotero local API, write safety gate, RBAC
        │  JSON-RPC 2.0 over HTTP  ({coreHost}:{httpPort}/rpc)
        ▼
DocsAgent Core  (resident C++ engine)
   · reads ~/Zotero/zotero.sqlite + storage/ directly
   · builds & serves the full-text index (BM25 + passage ranking)

هذا الفصل مهم. الواجهة رقيقة — فهي تحمل مخططات الأدوات، وتتحقق من الوسائط، وتفرض ميزانيات الرموز، ولا تلمس ملفات Zotero الخاصة بك أبدًا. أما النواة فتؤدي العمل الثقيل بـ C++، ولهذا تخدم النواة نفسها حزمة npm وحزمة PyPI بسلوك متطابق تمامًا.

بداية سريعة: اربط Zotero بوكيل الذكاء الاصطناعي في 3 خطوات

الخيار A — JavaScript / npm

# 1. start the resident search core (background service)
npx @docsagent/mcp-zotero start
npx @docsagent/mcp-zotero status    # pid / endpoint / version

ثم أضف الخادم إلى إعدادات عميل MCP لديك (Claude Desktop، Cursor، Cline، Qwen Code، …):

{
  "mcpServers": {
    "docsagent-zotero": {
      "command": "npx",
      "args": ["-y", "@docsagent/mcp-zotero"]
    }
  }
}

الخيار B — Python

# 1. install the Python shell (ships the same bundled core binaries)
pip install docsagent-mcp-zotero
docsagent-mcp-zotero core start
docsagent-mcp-zotero core status

ثم سجّل واجهة Python بالطريقة نفسها:

{
  "mcpServers": {
    "docsagent-zotero": {
      "command": "docsagent-mcp-zotero",
      "args": []
    }
  }
}

أعد تشغيل عميل MCP واسأله شيئًا مثل «ماذا تقول مكتبتي في Zotero عن تدهور البطاريات في خلايا الصوديوم-أيون؟» — يستدعي الوكيل search، ويحصل على مقاطع مرتّبة بـ BM25 مع استشهادات zotero:KEY، ويجيب من ملفات PDF الخاصة بك بدلًا من الويب المفتوح.

كما تكشف كلتا الواجهتين سطري أوامر عن أوامر دورة حياة النواة — start وstop وrestart وstatus (يشغّلها Python تحت أمر فرعي core، أي docsagent-mcp-zotero core restart) — إضافة إلى --transport streamable-http عندما تريد تقديم /mcp عبر الشبكة.

الأدوات الثماني التي يمكن لوكيلك استدعاؤها

الأداة النوع ما الذي تفعله
list_sources read كل مصدر قابل للبحث مع قدراته وعدد مستنداته. استدعِ هذه أولًا.
search read بحث عبر المكتبات في العناصر أو التعليقات التوضيحية أو الملاحظات؛ بعمق ids / snippets / full، ومرشّحات للوسوم والنطاق الزمني ونوع العنصر والمؤلفين والمجموعات.
get_content read قراءة مدخل واحد كمقاطع مرتّبة حسب الاستعلام (k) أو كنص كامل مع ترقيم بالإزاحة.
get_metadata read البيانات الوصفية والملخص والتعليقات التوضيحية والملاحظات والاستشهادات (BibTeX / CSL-JSON / منسّقة).
list_library read تصفح المجموعات والعناصر والوسوم وعمليات البحث المحفوظة والملاحظات المستقلة.
import_item write استيراد ملفات PDF محلية أو تحويل معرّفات DOI / ISBN / arXiv، مع تصنيف تلقائي اختياري للمجموعة.
add_note write كتابة ملاحظة Markdown في عنصر كملاحظة فرعية في Zotero، مع إمكانية التراجع.
batch_modify write إضافة أو إزالة المجموعات أو الوسوم بشكل جماعي في ما يصل إلى 200 عنصر.

لا تُسجَّل أدوات الكتابة إطلاقًا ما لم تضبط enableWrites: true. وحتى حينها، يعيد الاستدعاء غير المؤكَّد معاينة ولا يستهلك أي حصة، وتكون الكتابات المؤكَّدة محدودة المعدل (30/hour افتراضيًا)، ويعود أي batch_modify يتجاوز 20 عنصرًا بـ requiresConfirmation. يمكن للوكيل قراءة مكتبتك طوال اليوم؛ لكنه لا يستطيع إعادة كتابتها في صمت.

الأداء: 10,000 ملف PDF، 42 GB، مفهرسة خلال ~7 دقائق

النواة في خادم MCP هذا هي محرك الفهرسة والاسترجاع نفسه الذي يقف خلف مقياس أداء البحث في PapersGPT. الأرقام مأخوذة من تثبيت Zotero حقيقي:

حجم المكتبة البيانات الخام بناء الفهرس متوسط زمن الاستعلام الذاكرة (RSS) حجم الفهرس
1,000 ملف PDF 4.2 GB 51.5 s 13.1 ms 353 MB 100 MB
10,000 ملف PDF 42 GB 421 s (7 m 01 s) 19.5 ms 2.21 GB 901 MB

على إعداد متواضع عن قصد — 4 أنوية / 8 GB من الذاكرة — استغرقت فهرسة 1,506 ملف PDF (4.5 GB) نحو 141 ثانية بينما احتفظت العملية بـ 227 MB من الذاكرة، بمتوسط استرجاع ~15 ms. النمط المهم:

  • تتدرج الفهرسة خطيًا تقريبًا. عشرة أضعاف ملفات PDF، عشرة أضعاف زمن البناء — وتدفعه مرة واحدة لكل مستند جديد، لا لكل سؤال.
  • يبقى الاسترجاع ثابتًا. 13 ms عند 1,000 ورقة، و19.5 ms عند 10,000. إضافة أوراق لا تُبطئ وكيلك.
  • تبقى الذاكرة متواضعة. يحافظ التفريغ التلقائي على مكتبة بحجم 42 GB قابلة للبحث داخل نحو 2 GB من الذاكرة.
  • كل شيء دون اتصال. لا استدعاءات سحابية للفهرسة أو الاسترجاع، لذا يعمل على متن طائرة، أو في شبكة مختبر مغلقة، أو تحت حظر النشر.

لماذا يغيّر «لا حاجة لتشغيل Zotero» سير العمل

خوادم Zotero MCP التقليدية أغلفة رقيقة حول الـ API المحلي في Zotero (http://localhost:23119/api): لا عملية Zotero، لا إجابات. هذا الاعتماد الواحد يشكّل كل شيء — فلا يمكنك البحث في مكتبتك من حاوية، أو جهاز تطوير بعيد، أو نص برمجي بلا واجهة، أو جلسة SSH؛ ولا يمكنك البحث أثناء مزامنة Zotero؛ وكل استدعاء هو رحلة ذهاب وعودة لطلب بدلًا من بحث في فهرس.

ولأن نواة DocsAgent تقرأ قاعدة البيانات مباشرة، ينفصل نصف سير العمل الخاص بالقراءة عن تطبيق Zotero:

خوادم Zotero MCP القائمة على الـ API Zotero MCP Server 4.0
يجب تشغيل Zotero للبحث نعم لا
محرك البحث استدعاءات الـ API المحلي في Zotero فهرس BM25 أصلي بـ C++ + المقاطع
زمن استعلام 10,000 ملف PDF من مئات الـ ms إلى ثوانٍ ~20 ms
بيئات التشغيل واحدة عادةً JavaScript + Python
النقل عن بُعد / HTTP نادر Streamable HTTP مع مصادقة + RBAC
أمان الكتابة يدوي عادةً بوابة من 3 طبقات + حد للمعدل

تحفّظ صريح واحد: لا تزال الكتابات تمر عبر الـ API المحلي في Zotero نفسه، ليبقى Zotero مصدر الحقيقة لمكتبتك. وإذا أردت أن يستورد الوكيل ملفات PDF أو يضيف ملاحظات أو يعيد وسم العناصر، فيجب أن يكون Zotero قيد التشغيل في تلك الخطوة تحديدًا. أما الفهرسة والبحث والقراءة فلا.

حالات الاستخدام: ما يفعله الباحثون بها فعلًا

  • بحث داخل المحرر مع Claude Code أو Cursor. اكتب ورقتك ودع الوكيل يسحب المقاطع والملخصات وBibTeX مباشرة من مكتبتك أثناء الكتابة — بلا نسخ ولصق وبلا تبويبات متصفح.
  • فرز الأدبيات من الطرفية مع Codex أو Gemini CLI. «اعثر على كل ورقة في مكتبتي تذكر كفاءة تحويل قدرة تتجاوز 20% وأضفها إلى مجموعة Perovskite» — search ثم batch_modify.
  • القراءة دون اتصال. على متن طائرة أو في الميدان، يجيب الفهرس عن الاستعلامات محليًا؛ ولا شيء يحتاج إلى شبكة.
  • المكتبات الجماعية. وجّه zoteroGroups إلى المكتبات المشتركة في مختبرك وابحث فيها إلى جانب مجموعتك الشخصية.
  • مهارات الوكيل. ينشر المشروع أيضًا ملف SKILL.md قابلًا للنقل، فيمكن تعليم الوكلاء الذين يدعمون المهارات سير عمل «ابحث ثم استشهد» بدلًا من تخمين وسائط الأدوات.

الخصوصية والأمان

لا تغادر ملفات PDF جهازك أبدًا: الفهرسة والاسترجاع محليان بنسبة 100%، ولا تُرسل أي مستندات إلى أي خدمة سحابية. وعندما تمكّن الكتابة عن قصد، فهي محكومة ببوابة وقابلة للمعاينة ومحدودة المعدل وقابلة للتراجع. وعندما تعرّض الخادم عبر HTTP عن قصد، تحصل على فحوصات الأصل ومصادقة بالرمز وRBAC لكل طلب بدلًا من منفذ مفتوح.

الأسئلة الشائعة

هل أحتاج إلى إبقاء Zotero قيد التشغيل ليعمل خادم MCP؟

لا — من أجل البحث والقراءة. تقرأ النواة دليل بيانات Zotero (zotero.sqlite وstorage/) مباشرة، لذا تعمل الفهرسة والبحث وZotero مغلق، وحتى على جهاز لا يعمل عليه تطبيق Zotero المكتبي. أما أدوات الكتابة الثلاث فقط (استيراد العناصر، وإضافة الملاحظات، وتعديلات الوسوم/المجموعات الجماعية) فتمر عبر الـ API المحلي في Zotero، ولذا يجب أن يكون Zotero مفتوحًا من أجلها.

هل يدعم خادم Zotero MCP لغة Python إلى جانب JavaScript؟

نعم. هناك واجهتان متساويتان في الميزات: @docsagent/mcp-zotero على npm لمستخدمي JavaScript/Node، وdocsagent-mcp-zotero على PyPI لـ Python 3.10+. تكشف كلتاهما الأدوات الثماني نفسها بالمخططات ورموز الأخطاء وبوابة الكتابة نفسها، وتديران النواة المضمّنة نفسها المكتوبة بـ C++.

ما حجم مكتبة Zotero التي يستطيع التعامل معها؟

المكتبات التي تضم آلاف ملفات PDF أمر معتاد: 1,000 ملف PDF (4.2 GB) تُفهرس في نحو 52 ثانية وتُستعلم في ~13 ms؛ و10,000 ملف PDF (42 GB) تُفهرس في نحو 7 دقائق وتُستعلم في ~19.5 ms. ينمو زمن بناء الفهرس خطيًا تقريبًا مع حجم المكتبة، بينما يبقى زمن الاستعلام ثابتًا جوهريًا.

هل تُرفع مكتبتي في Zotero إلى أي مكان؟

لا. تبني النواة فهرسها وتقدّمه بالكامل على جهازك، ولا يحتاج البحث إلى أي وصول للشبكة. ولا يُرسل أي شيء عن أوراقك إلى PapersGPT أو أي طرف ثالث.

هل يمكن لوكيل الذكاء الاصطناعي تعديل مكتبتي في Zotero؟

فقط إذا سمحت له. لا تُسجَّل أدوات الكتابة ما لم يُضبط enableWrites على true؛ والاستدعاءات غير المؤكَّدة تعيد معاينة؛ والكتابات المؤكَّدة محدودة المعدل (30/hour افتراضيًا)؛ والدفعات التي تتجاوز 20 عنصرًا تتطلب تأكيدًا صريحًا.

ما عملاء الذكاء الاصطناعي المدعومون؟

أي عميل MCP. يوثّق المشروع Claude Desktop وClaude Code وCursor وCodex وCline وGemini CLI وQwen Code، ويوفر وسيلة نقل Streamable HTTP للعملاء الذين يتصلون عن بُعد بدلًا من stdio.

كيف يختلف هذا عن إعداد MCP الأقدم في PapersGPT؟

كان الإعداد الأقدم جسرًا أحادي الغرض مبنيًا حول الـ API المحلي في Zotero. واستبدلته النسخة 4.0 بنواة بحث C++ مقيمة، وأضافت واجهة Python من الدرجة الأولى، وجعلت البحث يعمل دون تشغيل Zotero، ورفعت السقف الواقعي من «بضع مئات من الأوراق» إلى 10,000+ ملف PDF. ولا يزال المقال القديم متاحًا على الإنترنت كمرجع تاريخي.

ابدأ الآن

npx @docsagent/mcp-zotero start

هذا الأمر الواحد يحوّل مكتبتك في Zotero إلى قاعدة معرفة خاصة فائقة السرعة لأي وكيل ذكاء اصطناعي تستخدمه بالفعل. توجد ملاحظات الإعداد ومخططات الأدوات ومرجع الإعدادات الكامل في مستودع docsagent، وهناك مزيد من الخلفية في صفحة خادم MCP.

أتريد المحرك نفسه داخل Zotero نفسه — محادثة داخل التطبيق، وقراءة جماعية بـ AutoPilot، ونماذج لغوية محلية؟ راجع مقارنة إضافات الذكاء الاصطناعي لـ Zotero وPapersGPT. وعلى من يفضّل الطرفية أيضًا قراءة دليل Zotero CLI.