zotero-mcp: an MCP server for your Zotero library
zotero-mcp
A lightweight Python MCP server that opens your Zotero library to an AI assistant: search, metadata and full PDF text
- 162 ★ on the repository
- Last commit
- MIT
Extended access
Why this level
- The agent reads your library and full texts of papers, and they go to the model
- The web API key opens the library, so keep it as a secret
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add mcp/kujenga-zotero-mcpDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The agent reads your library and full texts of papers, and they go to the model
- The web API key opens the library, so keep it as a secret
This is third-party code. Review the repository files before installing.
What it does
The server gives an assistant three tools for reading a Zotero library. zotero_search_items searches items by a text query. zotero_item_metadata returns every populated field of an item: publication details, identifiers, dates and library data. zotero_item_fulltext returns the full text, that is, the PDF contents. The assistant calls them in a chain: first it finds sources, then requests metadata or text for the ones it needs. Each response arrives as formatted text. The author deliberately kept to a small but useful set of operations. The server connects to a library in two ways. The local API runs through the Zotero desktop app on the same computer and is quicker. The Zotero web API works with a key and a library ID, personal or group. The server runs through uvx or in a Docker container.
Who it is for. Researchers and students with a large Zotero library who want to ask an assistant questions about their own papers and books.
Good fit when
- You need to find works on a topic in your library and get their metadata for a bibliography
- You need a summary of the full text of a specific paper stored in your Zotero
- You want to check whether the library holds a source with a given DOI or author
- You are writing a review and want the assistant to pull key points from several PDFs
Not a fit when
- You need to add or edit items: the server only reads, and no write tools are listed
- Sources live outside Zotero in ordinary folders: a file server or PDF search suits those
- Zotero is not running and you have no web API key: without one of the two you cannot connect
Example request
Find articles about sparse attention in my Zotero library and summarize the conclusions from the full text of the newest.MCP
- Transport
- stdio
- Authentication
- key is optional
Environment variables
ZOTERO_LOCAL- The value true switches on the local Zotero API.
ZOTERO_API_KEYsecret- Zotero web API key, not needed in local mode.
ZOTERO_LIBRARY_ID- Library ID (your user ID for a personal library).
Limitations
The server only reads. For local mode, enable the permission for other applications on this computer to talk to Zotero under the Advanced tab in Zotero settings, and Zotero must be running. Web mode needs an API key and a library ID.
Full text is available only for files Zotero has indexed. In Docker, reaching the local API needs separate network setup. The last commit is from August 2026, and the project is small, limited to three tools.
How to disable. Remove the zotero entry from the client config. Revoke the API key on zotero.org/settings/keys if you like.
FAQ
Which tools does zotero-mcp have?
Three, all read-only: `zotero_search_items` for text search, `zotero_item_metadata` for every field of an item and `zotero_item_fulltext` for PDF contents.
How do I connect it to Claude Desktop?
Add an `mcpServers` entry with `"command": "uvx"` and `"args": ["zotero-mcp@latest"]`, and set `ZOTERO_LOCAL`, `ZOTERO_API_KEY` and `ZOTERO_LIBRARY_ID` in `env`. If you have no uvx, `pipx run` works.
Does it work with group libraries?
Yes, the `ZOTERO_LIBRARY_TYPE` variable accepts `user` and `group`, with `user` as the default. Put the group library ID in `ZOTERO_LIBRARY_ID`.
Do I need a Zotero API key?
Not for the local API: enable "Allow other applications on this computer to communicate with Zotero" in Zotero settings and set `ZOTERO_LOCAL=true`. The web API needs `ZOTERO_API_KEY` and `ZOTERO_LIBRARY_ID`, taken from zotero.org/settings/keys.
Can I run the server in Docker?
Yes, the image ghcr.io/kujenga/zotero-mcp:main runs through `docker run --rm -i` with `ZOTERO_API_KEY` and `ZOTERO_LIBRARY_ID`. Reaching the local Zotero API from a container needs separate network configuration.
Discussion
No questions or reviews yet.
Related
MCP serversThe official Kibela MCP server searches, reads and edits notes, folders and comments of your wiki straight from an assistant chat
An MCP server for a BookStack wiki: read and search by default, writes enabled separately, rights taken from the token.
Seven skills and scripts for the chain Zotero, full text through MinerU, analytical notes in Obsidian and literature search
Obsidian MCP Server
obsidian-mcp-server
An MCP server for an Obsidian vault: read, search and precisely edit notes, sections, frontmatter and tags
An MCP server reading Moodle courses, deadlines, quizzes and files via the official API, with no browser or extra packages.
An MCP server for an Obsidian vault via the Local REST API plugin: search, read, append and patch notes
README in short
The README lists three tools and two connection modes: the Zotero app's local API and the web API with a key. It then covers environment variables, config examples for uvx and Docker, and a development section.