Zotero Research MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Zotero Research MCPfind papers about machine learning in my library"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Zotero Research MCP
Search and discuss papers in your own Zotero library from ChatGPT, with exact page evidence and a read-only local index.
Zotero Research MCP is a Windows-first desktop application. It reads metadata and PDF paths through Zotero Desktop's Local API, extracts text page by page, indexes it locally with SQLite FTS5, and exposes bounded research tools through OpenAI Secure MCP Tunnel. It never writes to Zotero and never sends an entire PDF by default.
日本語クイックスタート · Download · Installation · ChatGPT setup · Troubleshooting
Why this project
ChatGPT cannot directly read a private Zotero library on a local PC. This project provides a narrow bridge designed for research work:
metadata and full-text search across a local Zotero library;
search limited to one identified paper;
exact page retrieval for evidence checking;
comparison by author, year, collection, tag, and section;
bibliography and BibTeX retrieval;
English scientific-term searches for Japanese questions; and
a visible Windows launcher for Zotero, MCP, tunnel, and index status.
Every user runs their own copy against their own Zotero library, creates their own OpenAI tunnel, and connects it to their own ChatGPT account/workspace. The maintainer cannot see other users' libraries or chats, and other users do not consume the maintainer's ChatGPT message quota or API credits.
Related MCP server: Zotero MCP Bridge
Screenshots
All screenshots contain synthetic data; no personal library content is included.
Launcher | First-time setup |
Differential indexing | ChatGPT search example |
What is included
The MCP server exposes eight read-only tools:
Tool | Purpose |
| Find relevant passage candidates across the indexed library |
| Retrieve one paper, chunk, or page by MCP ID |
| Search papers with metadata and library filters |
| Search only inside one identified paper |
| List available Zotero collections |
| Return formatted bibliography or BibTeX-compatible data |
| Report local index readiness and progress |
| Retrieve one bounded, numbered PDF page |
Search results include a non-empty URL and IDs that can be passed to fetch. Retrieved
evidence contains paper title, year, section, page number, DOI/Zotero identifiers, and
bounded text. A missing passage is reported as missing instead of being guessed.
Safety and privacy model
Boundary | Enforced behavior |
Zotero | Local API only at |
HTTP methods | Only |
Zotero database |
|
MCP server | Loopback only; default |
Remote connection | Outbound OpenAI Secure MCP Tunnel; no inbound port forwarding |
PDFs | Read in place from Zotero-returned paths; no library PDF is bundled or uploaded |
ChatGPT payload | Relevant bounded passages, not unconditional whole-document dumps |
Secrets | Tunnel runtime key in the OS keyring; never settings, logs, or command arguments |
PDF content | Treated as untrusted evidence, never executable instructions |
Telemetry | No project telemetry or automatic crash upload |
The local SQLite index contains extracted paper text and is sensitive. When ChatGPT is used, the query, selected passage, bibliography, and page metadata are processed through the user's OpenAI account. See PRIVACY.md and docs/privacy.md.
Do not expose ports 23119 or 8765 to a LAN or the internet.
Architecture
ChatGPT
│ OpenAI Secure MCP Tunnel (outbound HTTPS)
▼
official openai/tunnel-client separately installed by the user
│ http://127.0.0.1:8765/mcp
▼
Zotero Research MCP
├─ read-only MCP tools
├─ SQLite + FTS5 index local application data
└─ PyMuPDF page extraction original PDF read in place
▲
│ file URL/path supplied by Zotero Local API
Zotero Desktop
└─ http://127.0.0.1:23119/api/ GET/HEAD onlySee docs/architecture.md for components, trust boundaries, sync transactions, and the index lifecycle.
Requirements
Windows 10 version 1809 (build 17763) or later, or Windows 11;
Zotero 7 or later with the Local API enabled;
a ChatGPT plan/workspace with developer-mode custom-app access;
an OpenAI Platform organization and tunnel with the required permissions;
the official OpenAI
tunnel-client, downloaded separately; andoutbound HTTPS while using the ChatGPT connection.
Python 3.12 is required only for source/developer installation. Windows release builds contain their Python runtime. ChatGPT availability, developer-mode controls, and tunnel permissions depend on the user's current OpenAI plan and workspace policy.
Five-minute Windows setup
Install Zotero 7 and enable Settings → Advanced → Allow other applications on this computer to communicate with Zotero.
Download the installer or portable ZIP from GitHub Releases. Verify the file against
SHA256SUMS.txt.Start Zotero Research MCP, complete the wizard, and choose which Zotero collections to index.
In OpenAI Platform tunnel settings, create a tunnel and associate it with the intended Platform organization and ChatGPT workspace. The operator needs Tunnels Read + Use; creating or editing the tunnel needs Tunnels Read + Manage.
Download the official
tunnel-clientusing the link in OpenAI Platform or the official latest release.In the launcher, select
tunnel-client.exe, enter the Tunnel ID, organization ID when required, and a restricted runtime key. The key is stored in Windows Credential Manager.Choose Initialize tunnel, Start all, and Test connection. Wait until the index is Ready and the tunnel is Connected.
In ChatGPT web, enable developer mode for your account/workspace. Open Settings → Apps → Create (or Settings → Plugins → + where that UI is still shown), choose Tunnel, select the tunnel, scan the tools, and create the app.
Open a new chat, select the draft/custom app from the tools menu, and test
searchfollowed byfetch.
OpenAI product labels change over time. Use the current Secure MCP Tunnel guide and developer-mode help as the source of truth.
日本語クイックスタート
このアプリは、各利用者のPCにあるZoteroライブラリを読み取り専用で検索し、 必要な本文だけをページ番号付きでChatGPTへ渡します。開発者や他の利用者に ライブラリ全体が共有される仕組みではありません。
Zotero 7の 設定 → 詳細 → このコンピューター上の他のアプリケーションが Zoteroと通信することを許可 を有効にします。
Releasesから インストーラーを取得し、SHA-256を確認して導入します。
初回ウィザードで検索対象コレクションを選び、最初の索引を作成します。
OpenAI Platformで自分用のTunnelを作成し、公式
tunnel-client、Tunnel ID、 必要に応じてOrganization ID、制限付きランタイムキーを設定します。Initialize tunnel → Start all → Test connection の順に実行します。
ChatGPT Webの開発者モードからカスタムアプリを作成し、Connectionで Tunnelを選びます。
チャットでアプリを選び、たとえば次のように依頼します。
@Zotero Research MCP
出血性ショック時の微小循環と乳酸の関係を調べた論文を探して。
英語の科学用語でも検索し、根拠本文を取得したページ番号を示して。利用者は自分のChatGPTアカウントとOpenAI Platform設定を使います。他の人が このソフトを使っても、リポジトリ所有者のチャット回数やAPIクレジットは消費されません。
Everyday use
After setup, open Zotero Research MCP from the Start menu. With automatic startup enabled, the launcher waits for Zotero, starts the local MCP service, starts the external tunnel client, and performs a differential sync. Closing the window normally leaves the app in the notification area; use Exit to stop its MCP and tunnel child processes.
Example requests:
Find animal studies that experimentally validated endothelial, neurogenic,
and myogenic flowmotion bands. Exclude papers that only cite human bands.Search within this paper for statements about anesthesia affecting blood-flow
oscillations. Separate reported results from author interpretation and give pages.Compare these five papers by species, device, sampling rate, spectral method,
main result, and limitation. Fetch the supporting passages before answering.CLI
zotero-research-mcp doctor
zotero-research-mcp start
zotero-research-mcp stop
zotero-research-mcp status
zotero-research-mcp sync
zotero-research-mcp reindex
zotero-research-mcp collections
zotero-research-mcp logsThe local health endpoint is http://127.0.0.1:8765/healthz. Run
zotero-research-mcp --help for the installed version's exact options.
Install from source
git clone https://github.com/tomozzz/Zotero-Research-MCP.git
cd Zotero-Research-MCP
py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"
zotero-research-mcp doctorNever use a real paper PDF, Zotero database, or extracted index as a public test fixture.
Development and validation
ruff check .
mypy src
pytest
python -m build
pyinstaller --noconfirm --clean packaging\pyinstaller\ZoteroResearchMCP.specTagged releases are built by GitHub Actions. They include a portable Windows archive,
per-user installer, Python wheel, source distribution, and SHA256SUMS.txt. The
workflow also verifies the frozen runtime, legal bundle, local-only boundaries, silent
install/uninstall, console self-test, PDF parser, and MCP HTTP startup.
See CONTRIBUTING.md before proposing changes. Changes that add a Zotero write path, expose local ports, bundle credentials, or include private research data will not be accepted.
Known limitations
Zotero Desktop must be running for metadata refresh and attachment path resolution.
The official tunnel client must remain running while ChatGPT calls the app.
Image-only PDFs are marked
PDF_OCR_REQUIRED; OCR execution is not implemented in version 0.1.Figures, image-only tables, handwriting, and semantic/vector search are not analyzed.
Unavailable linked/WebDAV files remain metadata-only.
Windows release binaries are unsigned until a code-signing process is established.
ChatGPT app registration remains manual and account/workspace dependent.
macOS/Linux CLI use is best effort; the supported GUI/installer path is Windows.
Documentation
License
The project source and combined binary are licensed under GNU AGPL-3.0-or-later. PyMuPDF is used under its open-source licensing route. PySide6/Qt libraries are distributed under LGPLv3 with the notices and corresponding-source offer in THIRD_PARTY_NOTICES.md and QT_SOURCE_OFFER.md.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tomozzz/Zotero-Research-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server