Building an MCP Server for Zotero

A small MCP server for searching and retrieving items from your Zotero library.

February 5, 2025

Zotero is my go-to tool for managing academic papers. It’s open-source with a fantastic ecosystem around it, and over time my library has grown into a useful personal knowledge base. When Anthropic released the Model Context Protocol late last year, I saw an opportunity in giving AI assistants direct access pull items from my Zotero library.

zotero-mcp is a small Python server that implements MCP for Zotero. The scope is intentionally narrow with just three tools: search your library, get an item’s metadata, and retrieve the full text of an item. The idea is that an assistant like Claude can chain these together naturally, searching for relevant papers and then pulling up the details it needs.

The implementation uses the Pyzotero SDK to talk to Zotero’s API, with the MCP Python SDK handling the protocol layer. It supports both the Zotero Web API and the local API that the desktop app exposes, the latter being a bit more responsive for everyday use. One thing I spent some time on was formatting the output in a way that’s useful to an LLM — truncating long abstracts in search results, cleanly structuring metadata, converting HTML notes to plain text.

If you use Zotero and want to try it out, see the repository for setup instructions for Claude Desktop and other MCP clients. It’s a simple project, but it’s been useful for making my reading library more accessible in conversations with Claude and other editors.

In future work, I’m interested in exploring how AI chat interfaces could be embedded directly into Zotero, allowing users to interact with specific items in their library more directly.



February 5, 2025
2 min - 271 words

Tags
MCP  Zotero  Python  AI