Zotero MCP runs on your own machine — the client starts it, so there is no endpoint to ping. 7 146 installs a week from pypi. Last commit 1 Nov 2026.
Search, read, annotate, and add to your Zotero research library, local or web.
We read the source, 1 d ago · rules 995398eba69f
A value the model can set ends up inside a file or shell call. That is not a flaw by itself — for a terminal server it is the job — but it is where things go wrong when it is not.
subprocess.run(["open", url], check=True)
What this server is able to do. For an MCP server this is often the job itself — a terminal server runs commands because that is what it is for. Listed so you know what you are plugging in, not as an accusation.
result = subprocess.run(
return os.path.join(base_dir, f"pdfannots2json-{system}-{machine}")
static async spawn(opts: AcpClientOpts): Promise<AcpClient> {
return pickle.loads(payload)
const AREA_PNG = "iVBORw0KGgoAAAANSUhEUgAAAUAAAAB4CAIAAAAMrLyJAAAI/klEQVR4nO3dbUhT/R/H8d9uFEkTelI9MbiwqJghSmBSRi4rH4hhRHdmRRClbSKB6UaGNVGTgqLQRwUXOgu7+UskmQpSGjofdEOoRDdGCC4LIWxleOb58+9wnWv/M503be18f+fzogfHee42z9vfb9OZ7m3vJgYANOnDfQIAsHAIGIAwo7wUn9IV1jMBgLl650qTFjACAxCGgAEIQ8AAhC…
Is this your server and something here is wrong? Tell us — corrections are free and do not require a plan.
That is not a flaw by itself — but it is where things go wrong when it is not the job. We re-read this code on every release. Watch it and you hear from us the day another one appears.
This server runs on your own machine — install it with the package manager and the client starts it for you. Package name taken from the official registry entry.
claude mcp add zotero-mcp -- uvx zotero-mcp-server
{
"mcpServers": {
"zotero-mcp": {
"command": "uvx",
"args": [
"zotero-mcp-server"
]
}
}
}
[mcp_servers.zotero-mcp]
command = "uvx"
args = ["zotero-mcp-server"]
{
"mcpServers": {
"zotero-mcp": {
"command": "uvx",
"args": [
"zotero-mcp-server"
]
}
}
}
{
"servers": {
"zotero-mcp": {
"type": "stdio",
"command": "uvx",
"args": [
"zotero-mcp-server"
]
}
}
}
Optional settings from the registry entry, left out of the block above:
ZOTERO_LOCAL (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_KEY (Zotero Web API key from https://www.zotero.org/settings/keys. Only needed when ZOTERO_LOCAL is false, or for write operations in hybrid mode), ZOTERO_LIBRARY_ID (Zotero user or group library ID. Only needed when ZOTERO_LOCAL is false, or for write operations in hybrid mode), ZOTERO_LIBRARY_TYPE (Whether ZOTERO_LIBRARY_ID refers to a personal or a group library), ZOTERO_MCP_TOOLSETS (Which optional tool groups to expose, as a comma-separated list. Every tool is sent to the model on each request, so optional capabilities are off by default. Use 'all' for the full surface, 'none' for core only, named groups (scite, duplicates, discovery, feeds, relations, libraries, search-admin, pdf-geometry) to add them, or a leading '-' to subtract).
Search, read PDFs, and find related papers in your local Zotero library. Read-only, 100% local.
Search, read and write notes in your local Drafta library over local stdio.
Read and write your local Zotero 10 library. No plugin, no zotero.org API key, no cloud.
Search your Zotero library, retrieve item metadata, and read full text from AI assistants.
Remote MCP server for full read/write access to a Zotero library
Personal context for every AI: search, read, and write back to your private Markdown library.
Zotero MCP server: local-first search, library checks, and preview-first writes for AI agents.
Fully local MCP server and CLI for web research
Answers built from our own checks of this server.