Zotero MCP

io.github.kujenga由 GitHub 帳號 kujenga 發布v0.3.1更新於 Oct 24, 2026

Search your Zotero library, retrieve item metadata, and read full text from AI assistants.

已驗證STDIO僅桌面檔案與儲存知識與記憶

概覽

AI 產生的概覽

一個本機 MCP 伺服器,讓 AI 助理搜尋 Zotero 文獻庫、讀取條目中繼資料,並取得 PDF 等全文內容。

可以做什麼
以文字查詢在 Zotero 文獻庫中搜尋條目,再據此選定特定條目。取得某個條目的完整中繼資料,依出版資訊、識別碼、時間戳記與文獻庫資訊分組。讀取某個條目的全文,包括 PDF 內容。工具可串接使用:先搜尋,再取得所選條目的中繼資料或全文。
適用情境
適合將參考文獻存放在 Zotero,並希望助理在寫作或研究時查找來源、整理中繼資料,或閱讀與引用文獻庫全文的情境。
執行需求
以 Python 套件形式透過 uvx(或 pipx、Docker)在本機執行。需二擇一:執行 Zotero 桌面應用程式並啟用本機 API,同時將 ZOTERO_LOCAL 設為 true;或在 ZOTERO_API_KEY 提供 Zotero Web API 金鑰並提供 ZOTERO_LIBRARY_ID,使用者或群組文獻庫另需 ZOTERO_LIBRARY_TYPE。
安裝前請注意
使用 Web API 方式需要 Zotero API 金鑰(ZOTERO_API_KEY)與文獻庫 ID,透過環境變數傳入,請勿寫入共用設定。文獻庫內容(含全文)會傳送給你所連接的 AI 助理。伺服器本身為唯讀,但需在 Zotero 設定中啟用本機 API,這會允許本機其他應用程式與 Zotero 通訊。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Zotero MCP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Model Context Protocol server for Zotero

[GitHub branch status] [PyPI - Version]

This project is a python server that implements the Model Context Protocol (MCP) for Zotero, giving you access to your Zotero library within AI assistants. It is intended to implement a small but maximally useful set of interactions with Zotero for use with MCP clients.

[Zotero Server MCP server]

Features

This MCP server provides the following tools:

  • zotero_search_items: Search for items in your Zotero library using a text query
  • zotero_item_metadata: Get the complete metadata for a specific Zotero item, covering every populated field grouped into publication details, identifiers, timestamps, and library information
  • zotero_item_fulltext: Get the full text of a specific Zotero item (i.e. PDF contents)

These can be discovered and accessed through any MCP client or through the MCP Inspector.

Each tool returns formatted text containing relevant information from your Zotero items, and AI assistants such as Claude can use them sequentially, searching for items then retrieving their metadata or text content.

Installation

This server can either run against either a local API offered by the Zotero desktop application) or through the Zotero Web API. The local API can be a bit more responsive, but requires that the Zotero app be running on the same computer with the API enabled. To enable the local API, do the following steps:

  1. Open Zotero and open "Zotero Settings"
  2. Under the "Advanced" tab, check the box that says "Allow other applications on this computer to communicate with Zotero".

To use the Zotero Web API, you'll need to create an API key and find your Library ID (usually your User ID) in your Zotero account settings here: https://www.zotero.org/settings/keys

These are the available configuration options:

  • ZOTERO_LOCAL=true: Use the local Zotero API (default: false, see note below)
  • ZOTERO_API_KEY: Your Zotero API key (not required for the local API)
  • ZOTERO_LIBRARY_ID: Your Zotero library ID (your user ID for user libraries, not required for the local API)
  • ZOTERO_LIBRARY_TYPE: The type of library (user or group, default: user)

uvx with Local Zotero API

To use this with Claude Desktop and a direct python install with uvx, add the following to the mcpServers configuration:

json
{  "mcpServers": {    "zotero": {      "command": "uvx",      "args": ["zotero-mcp@latest"],      "env": {        "ZOTERO_LOCAL": "true",        "ZOTERO_API_KEY": "",        "ZOTERO_LIBRARY_ID": ""      }    }  }}

The @latest specifier is optional and will pull the latest version when new ones are available. If you don't have uvx installed you can use pipx run instead, or clone this repository locally and use the instructions in Development below.

Docker with Zotero Web API

If you want to run this MCP server in a Docker container, you can use the following configuration, inserting your API key and library ID:

json
{  "mcpServers": {    "zotero": {      "command": "docker",      "args": [        "run",        "--rm",        "-i",        "-e", "ZOTERO_API_KEY=PLACEHOLDER",        "-e", "ZOTERO_LIBRARY_ID=PLACEHOLDER",        "ghcr.io/kujenga/zotero-mcp:main"      ],    }  }}

To update to a newer version, run docker pull ghcr.io/kujenga/zotero-mcp:main. It is also possible to use the docker-based installation to talk to the local Zotero API, but you'll need to modify the above command to ensure that there is network connectivity to the Zotero application's local API interface.

Development

Information on making changes and contributing to the project.

  1. Clone this repository
  2. Install dependencies with uv by running: uv sync
  3. Create a .env file in the project root with the environment variables above

Start the MCP Inspector for local development:

bash
npx @modelcontextprotocol/inspector uv run zotero-mcp

To test the local repository against Claude Desktop, run echo $PWD/.venv/bin/zotero-mcp in your shell within this directory, then set the following within your Claude Desktop configuration

json
{  "mcpServers": {    "zotero": {      "command": "/path/to/zotero-mcp/.venv/bin/zotero-mcp"      "env": {        // Whatever configuration is desired.      }    }  }}

Running Tests

To run the test suite:

bash
uv run pytest

Releasing

  1. Bump the version in pyproject.toml and server.json (two places: the server version and the package version).
  2. Publish to PyPI with make publish.
  3. Publish updated metadata to the official MCP registry with make publish-mcp, authenticating first with mcp-publisher login github if needed.

Docker Development

Build the container image with this command:

sh
docker build . -t zotero-mcp:local

To test the container with the MCP inspector, run the following command:

sh
npx @modelcontextprotocol/inspector \    -e ZOTERO_API_KEY=$ZOTERO_API_KEY \    -e ZOTERO_LIBRARY_ID=$ZOTERO_LIBRARY_ID \    docker run --rm -i \        --env ZOTERO_API_KEY \        --env ZOTERO_LIBRARY_ID \        zotero-mcp:local

Relevant Documentation

Appendix: notes on Zotero's API

Item metadata is rendered from whatever fields the API returns rather than from a fixed list. Fields it omits are skipped, and fields this server doesn't know about appear under an "Other Fields" heading, so a Zotero upgrade never silently drops metadata.

The two APIs differ in one way worth knowing: the local API's quick search indexes citation keys, while the Web API does not, so searching for one returns nothing over the Web API even though the field is present in the data.

來源:README.md,提交 8461cc4

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.3.1最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分