Zotero MCP Server: בלי צורך לפתוח את Zotero, חיפוש ב-10,000 קבצי PDF תוך ~20 ms
אם ניסיתם שרת MCP של Zotero מהדור הראשון, אתם זוכרים את הטקס: 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 אחר.
זהו המדריך לגרסה החדשה: מה השתנה, איך להתקין אותה בשתי סביבות ההרצה, 8 הכלים שהסוכן שלכם מקבל, ונתוני הביצועים לספריות גדולות באמת.
מה חדש ב-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 שלכם במקום מהאינטרנט הפתוח.
שני ה-CLI-ים חושפים גם פקודות מחזור חיים של הליבה — start, stop, restart, status (Python מריץ אותן תחת תת-פקודה core, כלומר docsagent-mcp-zotero core restart) — וכן --transport streamable-http כשרוצים להגיש את /mcp ברשת.
8 הכלים שהסוכן שלכם יכול לקרוא להם
| כלי | סוג | מה הוא עושה |
|---|---|---|
list_sources |
read | כל מקור שניתן לחפש בו, עם היכולות ומספר המסמכים. קראו לזה קודם. |
search |
read | חיפוש חוצה-ספריות בפריטים, בהערות שוליים או בהערות; עומק ids / snippets / full, ומסננים לתגיות, טווח שנים, סוג פריט, מחברים ואוספים. |
get_content |
read | קריאת רשומה אחת כקטעים מדורגים לפי השאילתה (k) או כטקסט מלא עם עימוד לפי offset. |
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" משנה את זרימת העבודה
שרתי MCP של Zotero קלאסיים הם מעטפות דקות סביב הAPI המקומי של Zotero (http://localhost:23119/api): אין תהליך Zotero, אין תשובות. התלות הבודדת הזו מעצבת הכול — אי אפשר לחפש בספרייה שלכם מתוך קונטיינר, מחשב פיתוח מרוחק, סקריפט ללא ממשק או הפעלת SSH; אי אפשר לחפש כש-Zotero באמצע סנכרון; וכל קריאה היא סבב בקשה ולא חיפוש באינדקס.
מכיוון שליבת DocsAgent קוראת את מסד הנתונים ישירות, חצי הקריאה של זרימת העבודה מנותק מאפליקציית Zotero:
| שרתי MCP של Zotero מבוססי API | Zotero MCP Server 4.0 | |
|---|---|---|
| Zotero חייב לרוץ כדי לחפש | כן | לא |
| מנוע החיפוש | קריאות ל-API המקומי של Zotero | אינדקס BM25 מקורי ב-C++ + קטעים |
| השהיית שאילתה ב-10,000 קבצי PDF | ממאות ms עד שניות | ~20 ms |
| סביבות הרצה | בדרך כלל אחת | JavaScript + Python |
| תובלה מרוחקת / HTTP | נדיר | Streamable HTTP עם אימות + RBAC |
| בטיחות כתיבה | בדרך כלל ידנית | שער תלת-שכבתי + הגבלת קצב |
הסתייגות אחת כנה: כתיבות עדיין עוברות דרך ה-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 חייב להיות פתוח עבורם.
האם שרת ה-MCP של Zotero תומך גם ב-Python וגם ב-JavaScript?
כן. יש שתי מעטפות זהות ביכולותיהן: @docsagent/mcp-zotero ב-npm למשתמשי JavaScript/Node, ו-docsagent-mcp-zotero ב-PyPI ל-Python 3.10+. שתיהן חושפות את אותם 8 כלים עם אותן סכמות, קודי שגיאה ושער כתיבה, ושתיהן מנהלות את אותה ליבת 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. מי שמעדיף טרמינל כדאי שיקרא גם את מדריך ה-CLI של Zotero.