MCP for Zotero — connect your library to Claude, ChatGPT, and other AI assistants
Hi everyone,
I built a small tool called MCP for Zotero. It lets you connect your Zotero library to AI assistants like Claude or
ChatGPT using the Model Context Protocol (MCP).
Once connected, you can do things like:
- Search your library by title, author, tag, or collection
- Add new items (books, articles, theses, etc.) just by describing them in natural language
- Create and organize collections
- Update item metadata, add tags
- Export citations in BibTeX, RIS, or formatted styles like APA or Chicago
- Search inside your PDFs (if indexed by Zotero Desktop)
- Browse and switch between group libraries
The setup is straightforward: you sign in, enter your Zotero API key, and you get an MCP endpoint URL with a token.
You paste that into your AI client settings and that's it — the assistant can read and write to your library directly.
The service acts as a proxy to the Zotero API, so nothing is stored on my end beyond your encrypted credentials. It's
free to use.
You can try it at https://mcpforzotero.alejandroarnaud.dev
Happy to hear any feedback or answer questions.
I built a small tool called MCP for Zotero. It lets you connect your Zotero library to AI assistants like Claude or
ChatGPT using the Model Context Protocol (MCP).
Once connected, you can do things like:
- Search your library by title, author, tag, or collection
- Add new items (books, articles, theses, etc.) just by describing them in natural language
- Create and organize collections
- Update item metadata, add tags
- Export citations in BibTeX, RIS, or formatted styles like APA or Chicago
- Search inside your PDFs (if indexed by Zotero Desktop)
- Browse and switch between group libraries
The setup is straightforward: you sign in, enter your Zotero API key, and you get an MCP endpoint URL with a token.
You paste that into your AI client settings and that's it — the assistant can read and write to your library directly.
The service acts as a proxy to the Zotero API, so nothing is stored on my end beyond your encrypted credentials. It's
free to use.
You can try it at https://mcpforzotero.alejandroarnaud.dev
Happy to hear any feedback or answer questions.
Upgrade Storage
https://forums.zotero.org/discussion/128934/zotero-mcp-plugin
https://forums.zotero.org/discussion/comment/505280#Comment_505280
https://forums.zotero.org/discussion/128857/clean-and-solid-mcp-server-for-zotero
There might be more.
I've got it installed and running on Claude Desktop under macOS 26.3.1.
It took some time to finesse the config file, so I wanted to share here how I finally got it to load correctly:
```
{
"preferences": {
"coworkWebSearchEnabled": true,
"coworkScheduledTasksEnabled": true,
"ccdScheduledTasksEnabled": true,
"sidebarMode": "chat"
},
"mcpServers": {
"mcp-for-zotero": {
"command": "npx",
"args": [
"mcp-remote@latest",
"https://mcpforzotero.alejandroarnaud.dev/mcp/sse",
"--header",
"Authorization: Bearer mcp_your key here"
]
}
}
}
```
It did require the installation of Node.js
Yes the original config didn't work. I tried yours and it worked! Hope the creator can update the config setup.
Huge thanks for sharing your working config and for taking the time to debug this. You were
absolutely right — the original snippet I was handing out was the remote SSE format, which
Claude Desktop's claude_desktop_config.json doesn't actually support. It only loads stdio
servers spawned via command/args, so every macOS user trying our config was hitting a silent
failure. Your npx mcp-remote@latest bridge approach is exactly the right fix.
I just shipped an update to the dashboard so the Claude Desktop tab now shows the working
config out of the box:
{
"mcpServers": {
"mcp-for-zotero": {
"command": "npx",
"args": [
"mcp-remote@latest",
"https://mcpforzotero.alejandroarnaud.dev/mcp/sse",
"--header",
"Authorization: Bearer YOUR_MCP_TOKEN"
]
}
}
}
The Claude Desktop tab also now shows a small info banner reminding people they need Node.js
installed, and a credit line thanking both of you for finding this approach. It felt right
to put your names where future users can see them — this would have kept biting people for
weeks without your post.
If anyone else in this thread had Claude Desktop silently failing on them, head back to your
dashboard, copy the new snippet from the Claude Desktop tab, and you should be good to go.
Thanks again — this is exactly the kind of community feedback that makes the project better.
https://github.com/dougwyu/claude-zotero-skills