Zotero MCP
listing.by
Search, read, annotate and add papers in your Zotero research library, using the local app or the web API.
listing.install
listing.local.explain
listing.local.needs listing.local.note
ZOTERO_LOCALlisting.env.optional Read from the local Zotero desktop app instead of the web API. Requires Zotero 7+ with the local API enabled in Settings > Advanced.ZOTERO_API_KEYlisting.env.secret listing.env.optional Zotero Web API key from https://www.zotero.org/settings/keys. Only needed when ZOTERO_LOCAL is false, or for write operations in hybrid…ZOTERO_LIBRARY_IDlisting.env.optional Zotero user or group library ID. Only needed when ZOTERO_LOCAL is false, or for write operations in hybrid mode.ZOTERO_LIBRARY_TYPElisting.env.optional Whether ZOTERO_LIBRARY_ID refers to a personal or a group library.ZOTERO_MCP_TOOLSETSlisting.env.optional Which optional tool groups to expose, as a comma-separated list. Every tool is sent to the model on each request, so optional capabilities…
listing.share.h
listing.share.p_local
mcp.tc/i/zoterolisting.about
Connects an AI assistant to a Zotero research library. You can search by title, author, tag, collection, full text or meaning (semantic search), read metadata, BibTeX and PDF text, place highlights and notes on PDFs, and add papers by DOI, URL, ISBN, BibTeX or file. Collections, tags and duplicates can be managed, and optional Scite citation tallies are available.
Runs locally over stdio as the Python package zotero-mcp-server (uvx or pip, Python 3.10+). Local mode reads from the Zotero 7+ desktop app with its local API enabled and needs no key. Web or hybrid mode needs ZOTERO_API_KEY and ZOTERO_LIBRARY_ID. Optional tool groups are chosen with ZOTERO_MCP_TOOLSETS.
listing.can
- Search the library by title, author, tag, collection, full text or meaning
- Read item metadata, BibTeX, full text and PDF page ranges
- Create highlights, area boxes and notes on PDFs
- Add papers by DOI, URL, ISBN, BibTeX or file
- Manage collections and tags and merge duplicates
- Check citation tallies and retraction alerts with Scite (optional)
listing.tools
listing.notools.key
listing.prompts
Find papers in my library on attention mechanisms
Summarize the key findings of this paper
Highlight the main claims in this PDF
Add the paper with DOI 10.1000/xyz123 to my Zotero library
listing.setup.h
listing.setup.local
Claude Code
- Run this in a terminal, in your project folder:
claude mcp add --transport stdio zotero --env "ZOTERO_API_KEY=<YOUR_ZOTERO_API_KEY>" -- uvx --from zotero-mcp-server zotero-mcp serve- Start Claude Code and type
/mcp. zotero should show as connected.
Add --scope user to make it available in every project. Replace the placeholders with your own values.
Claude Desktop
- Open Settings → Developer → Edit Config. It opens
claude_desktop_config.json. Add:
{
"mcpServers": {
"zotero": {
"command": "uvx",
"args": [
"--from",
"zotero-mcp-server",
"zotero-mcp",
"serve"
],
"env": {
"ZOTERO_API_KEY": "<YOUR_ZOTERO_API_KEY>"
}
}
}
}- Save the file and restart Claude Desktop. Replace the placeholders with your own values.
Needs uv (Python) on your computer. The file lives in ~/Library/Application Support/Claude/ on macOS and %APPDATA%\Claude\ on Windows.
Cursor
Or add it by hand to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (this project):
{
"mcpServers": {
"zotero": {
"command": "uvx",
"args": [
"--from",
"zotero-mcp-server",
"zotero-mcp",
"serve"
],
"env": {
"ZOTERO_API_KEY": "<YOUR_ZOTERO_API_KEY>"
}
}
}
}Needs uv (Python) on your computer. Replace the placeholders with your own values.
VS Code
Add it to .vscode/mcp.json. VS Code asks for the secret the first time and stores it securely:
{
"servers": {
"zotero": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"zotero-mcp-server",
"zotero-mcp",
"serve"
],
"env": {
"ZOTERO_API_KEY": "${input:zotero-api-key}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "zotero-api-key",
"description": "ZOTERO_API_KEY",
"password": true
}
]
}Needs uv (Python) on your computer.
Devin Desktop
- Add it to
~/.config/devin/mcp_config.json(macOS and Linux) or%APPDATA%\devin\mcp_config.json(Windows):
{
"mcpServers": {
"zotero": {
"command": "uvx",
"args": [
"--from",
"zotero-mcp-server",
"zotero-mcp",
"serve"
],
"env": {
"ZOTERO_API_KEY": "<YOUR_ZOTERO_API_KEY>"
}
}
}
}- Refresh the MCP server list in Cascade. Replace the placeholders with your own values.
Devin Desktop is the new name for Windsurf.
Codex
codex mcp add zotero --env "ZOTERO_API_KEY=<YOUR_ZOTERO_API_KEY>" -- uvx --from zotero-mcp-server zotero-mcp serveOr edit ~/.codex/config.toml directly:
[mcp_servers.zotero]
command = "uvx"
args = ["--from", "zotero-mcp-server", "zotero-mcp", "serve"]
env = { ZOTERO_API_KEY = "<YOUR_ZOTERO_API_KEY>" }Needs uv (Python) on your computer. Replace the placeholders with your own values.
Gemini CLI
gemini mcp add -e "ZOTERO_API_KEY=<YOUR_ZOTERO_API_KEY>" zotero uvx -- --from zotero-mcp-server zotero-mcp serveThis adds it to the current project. Add -s user to use it everywhere.
Any client
Most clients that start local servers accept this shape:
{
"mcpServers": {
"zotero": {
"command": "uvx",
"args": [
"--from",
"zotero-mcp-server",
"zotero-mcp",
"serve"
],
"env": {
"ZOTERO_API_KEY": "<YOUR_ZOTERO_API_KEY>"
}
}
}
}Zed puts servers under context_servers in its settings, with the same command, args and env fields.
Needs uv (Python) on your computer. Replace the placeholders with your own values.
listing.faq
Can I paste mcp.tc/i/zotero into my MCP client?
No. Zotero MCP runs on your own computer, started by your client, so it has no web address to connect to. The quick link is the page to share; the install command is uvx --from zotero-mcp-server zotero-mcp serve.
Does Zotero MCP need an API key?
Yes. It reads ZOTERO_API_KEY from its environment, and ZOTERO_API_KEY is a secret. Put the value in your client's config on your own machine, never in a shared file.
Is Zotero MCP a remote or a local server?
Local. Your client starts it as a process on your computer with uvx --from zotero-mcp-server zotero-mcp serve, which needs uv (Python).
What can Zotero MCP do?
You can search the library by title, author, tag, collection, full text or meaning, read item metadata, BibTeX, full text and PDF page ranges and create highlights, area boxes and notes on PDFs.
Which clients can use it?
Any client that starts local servers: Claude Code, Claude Desktop, Cursor, VS Code, Devin Desktop, Codex, Gemini CLI, Zed and others. claude.ai and ChatGPT only connect to remote servers.
Who wrote this page?
mcp.tc's robot read Zotero MCP's public metadata (its package and repository pages), and an AI model drafted the text from it. A person reviews anything the checks can't confirm. The text can still be wrong, so if you spot a mistake, use Report this listing on this page.
listing.em.h
listing.em.lead_local listing.em.how
listing.em.badge
[](https://mcp.tc/i/zotero)<a href="https://mcp.tc/i/zotero"><img src="https://mcp.tc/i/zotero/badge.svg" alt="Zotero MCP on mcp.tc" height="20"></a>listing.em.badge_note
listing.em.widget
<script src="https://mcp.tc/w/zotero.js" async></script>listing.em.widget_note
iframe
<iframe src="https://mcp.tc/embed/zotero" title="Zotero MCP on mcp.tc" width="420" height="200" loading="lazy" allow="clipboard-write" style="border:0;border-radius:8px;max-width:100%"></iframe>listing.em.iframe_note
listing.disclaimer_checked