Zotero MCP Server

skrtis/zotero-mcp
0 starsCommunity

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

Enables Poke to search and manage Zotero research library, including items, tags, collections, notes, full text, and annotations.

README.md

Zotero MCP Server for Poke

An MCP server that gives Poke access to your Zotero research library. Built with FastMCP following the InteractionCo template.

Tools

| Tool | Description | |------|-------------| | search_items | Search the library by keyword | | get_recent_items | Get recently added items | | search_by_tag | Filter items by tag | | get_tags | List all tags in the library | | get_item_metadata | Get full metadata for an item by key | | get_item_fulltext | Extract full text from a paper (local mode) | | get_item_children | List attachments and notes for an item | | get_item_notes | Get note content for an item | | get_item_annotations | Get PDF highlights and comments (local mode) | | get_collections | List all collections | | get_collection_items | Get items in a specific collection | | create_note | Create a new note, optionally attached to an item | | add_item_by_doi | Add a paper to Zotero by DOI | | get_library_info | Show connection status and library details |

Setup

1. Copy the example env file and fill it in:

cp .env.example .env

You need:

2. Install dependencies:

/opt/homebrew/bin/python3.11 -m venv .venv
.venv/bin/pip install -r requirements.txt

3. Run locally:

.venv/bin/python src/server.py

The server starts at http://localhost:8000/mcp.

Local Mode (full-text + annotations)

Set ZOTERO_LOCAL=true to connect directly to the Zotero app running on your machine. This enables:

  • get_item_fulltext — extract text from PDFs
  • get_item_annotations — read PDF highlights and comments

In Zotero: Edit → Preferences → Advanced → Allow other applications to access Zotero

Connecting Poke

Add this to your Poke MCP configuration:

{
  "mcpServers": {
    "zotero": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

Or if deployed to Render, replace localhost:8000 with your Render URL.

Deploy to Render

Push this repo to GitHub, connect it to Render, and set the environment variables (ZOTERO_LIBRARY_ID, ZOTERO_API_KEY) in the Render dashboard. The render.yaml handles everything else.

Related MCP servers

Browse all →