Search, read, annotate, and add to your Zotero research library, local or web.
registry version 0.15.1
Python
uvx zotero-mcp-serverPython
uvx zotero-mcp-server@0.15.1
Pick your client — the config below is generated for this server (local stdio). Copy respects the “Pin version” switch above.
claude_desktop_config.json
{
"mcpServers": {
"zotero-mcp": {
"command": "uvx",
"args": [
"zotero-mcp-server"
],
"env": {
"ZOTERO_API_KEY": "<YOUR_ZOTERO_API_KEY>"
}
}
}
}{
"mcpServers": {
"zotero-mcp": {
"command": "uvx",
"args": [
"zotero-mcp-server@0.15.1"
],
"env": {
"ZOTERO_API_KEY": "<YOUR_ZOTERO_API_KEY>"
}
}
}
}Format verified against the official Claude Desktop docs ↗.
terminal
claude mcp add --env ZOTERO_API_KEY=<YOUR_ZOTERO_API_KEY> zotero-mcp -- uvx zotero-mcp-server
claude mcp add --env ZOTERO_API_KEY=<YOUR_ZOTERO_API_KEY> zotero-mcp -- uvx zotero-mcp-server@0.15.1
Format verified against the official Claude Code docs ↗.
.cursor/mcp.json
{
"mcpServers": {
"zotero-mcp": {
"command": "uvx",
"args": [
"zotero-mcp-server"
],
"env": {
"ZOTERO_API_KEY": "<YOUR_ZOTERO_API_KEY>"
}
}
}
}{
"mcpServers": {
"zotero-mcp": {
"command": "uvx",
"args": [
"zotero-mcp-server@0.15.1"
],
"env": {
"ZOTERO_API_KEY": "<YOUR_ZOTERO_API_KEY>"
}
}
}
}Format verified against the official Cursor docs ↗.
.vscode/mcp.json
{
"servers": {
"zotero-mcp": {
"command": "uvx",
"args": [
"zotero-mcp-server"
],
"env": {
"ZOTERO_API_KEY": "<YOUR_ZOTERO_API_KEY>"
}
}
}
}{
"servers": {
"zotero-mcp": {
"command": "uvx",
"args": [
"zotero-mcp-server@0.15.1"
],
"env": {
"ZOTERO_API_KEY": "<YOUR_ZOTERO_API_KEY>"
}
}
}
}Format verified against the official VS Code docs ↗.
mcp_config.json
{
"mcpServers": {
"zotero-mcp": {
"command": "uvx",
"args": [
"zotero-mcp-server"
],
"env": {
"ZOTERO_API_KEY": "<YOUR_ZOTERO_API_KEY>"
}
}
}
}{
"mcpServers": {
"zotero-mcp": {
"command": "uvx",
"args": [
"zotero-mcp-server@0.15.1"
],
"env": {
"ZOTERO_API_KEY": "<YOUR_ZOTERO_API_KEY>"
}
}
}
}Format verified against the official Windsurf docs ↗.
Defined in the server's official registry manifest. Required secrets are shown as <YOUR_…> placeholders in the configs 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 secret — 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 g⭐ 5,369 stars · 最近更新于 21 天前 · MIT license
Distributed as Python, listed under Search. Review our MCP security guide before granting access to real data.
Run the install command shown above, then paste the config for your client (Claude Desktop, Claude Code, Cursor, VS Code or Windsurf) into its MCP settings and restart the client.
The MCP server itself is free to install. The source is public on https://github.com/54yyyu/zotero-mcp. Any third-party service it calls may require its own API key and account.
Any MCP-compatible client can use it, including Claude Desktop, Claude Code, Cursor, VS Code, Windsurf and custom agents.
Publish this server? Link back with a badge on your README or site — copy either snippet.
Markdown
[](https://mcpnav.net/server/zotero-mcp/)
HTML
<a href="https://mcpnav.net/server/zotero-mcp/"><img src="https://mcpnav.net/badge/zotero-mcp.svg" alt="Listed on MCPNav" height="20"></a>