Skip to main content
Glama

zotero-pdf-mcp

An MCP server that gives Claude access to a Zotero library over the web API, including the ability to look at the PDFs — rendered pages, not just extracted text, so figures, gels, micrographs and layout are visible.

Existing Zotero MCP servers return extracted text only. This one renders pages to PNG and returns them as image content, which is the difference between an assistant that can read a paper's prose and one that can read its figures.

Design constraints

  • Web API only. Talks to api.zotero.org and never to the local Zotero client on localhost:23119. If your Zotero is set to download attachments on demand, going through the local client would make it fetch and retain files you have deliberately offloaded to Zotero storage. This server cannot cause that.

  • Nothing written to disk. PDF bytes are held in memory, capped at four documents, and discarded when the process exits.

  • Read-only. Every request is a GET; there are no write operations of any kind. A read-only API key is sufficient.

  • The credential never leaves Zotero. File downloads redirect to a storage host; the server re-issues that request without the Zotero headers so your API key is not forwarded to a third party.

Attachments stored in Zotero File Storage can be fetched. Linked files cannot — their bytes only ever existed on the machine that added them. zotero_item_info reports which is which.

Related MCP server: mcp-zotero

Tools

Tool

Purpose

zotero_search

Search the library; returns item keys, authors, years, titles.

zotero_item_info

Full metadata for one item, plus its attachments and whether each is fetchable.

zotero_pdf_text

Extract text from an item's PDF. Cheap; use this first.

zotero_pdf_pages

Render pages as images. Max 8 per call. This is the one that shows figures.

Configuration

Add to ~/Library/Application Support/Claude/claude_desktop_config.json inside the existing mcpServers object:

"zotero-pdf": {
  "command": "/opt/homebrew/bin/uvx",
  "args": ["--from", "git+https://github.com/USER/zotero-pdf-mcp", "zotero-pdf-mcp"],
  "env": {
    "ZOTERO_API_KEY": "your_read_only_key",
    "ZOTERO_LIBRARY_ID": "your_numeric_userid",
    "ZOTERO_LIBRARY_TYPE": "user"
  }
}

Use the absolute path to uvx (which uvx) rather than the bare command — GUI-launched processes often do not inherit your shell's PATH, and that is the most common reason an MCP server silently fails to start.

For a private repo, use git+ssh://git@github.com/USER/zotero-pdf-mcp so the fetch authenticates with your SSH key.

Environment

Variable

Meaning

ZOTERO_API_KEY

Read-only key from https://www.zotero.org/settings/keys/new

ZOTERO_LIBRARY_ID

Your numeric userID, printed at the top of the keys page. Not your username.

ZOTERO_LIBRARY_TYPE

user (default) or group

Never commit the key. It belongs in the config's env block and nowhere else.

Usage

Ask for text before pictures — rendering pages is far more expensive than extracting text:

Find the Vujanovic 2017 paper in my library, pull the text, then show me the figures from pages 4 and 5.

Licence

MIT.

Available Tools

4 tools
zotero_item_infoB

Full metadata for one item, plus a list of its attachments and whether each one can actually be fetched over the web API.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description does not disclose side effects, read-only nature, or permission requirements. It only hints at availability checking for attachments.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that fully captures the tool's purpose without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple tool, but lacks parameter explanation and details about the output schema, which is mentioned as existing but not described. Missing behavioral context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter 'item_key' is not described in the description or schema. The name is somewhat self-explanatory, but its format or expected values are not clarified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it returns full metadata for one item and attachment fetch status, distinguishing it from sibling tools like search or PDF operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case is implied (when you need item metadata for a specific key), but no explicit alternatives or when-not-to-use guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

zotero_pdf_pagesA

Render pages of an item's PDF as images so figures, plots, gels and layout are visible - not just extracted text.

item_key: parent item key or attachment key pages: '1-4', '2,5,7', '1-3,8' (1-based). Max 8 pages per call. dpi: 100 for a quick look, 150 default, 200+ for dense figures.

ParametersJSON Schema
NameRequiredDescriptionDefault
dpiNo
pagesNo1-4
item_keyYes

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the burden. It discloses operational limitations like 'Max 8 pages per call' and is a read-only operation by nature, but does not explicitly state it makes no modifications or what side effects, if any, exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, with a clear one-sentence purpose followed by a structured parameter breakdown. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description is complete: it explains what the tool does, parameter semantics, and call limits. No essential operational information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema itself has no descriptions, the tool description thoroughly explains each parameter (item_key, pages, dpi) with formats and default values, fully compensating for the 0% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool's function: rendering PDF pages as images to make visual content visible, contrasting with text extraction. This distinguishes it from sibling tools like zotero_pdf_text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it (when visual elements like figures and layout are needed) and provides concrete parameter advice (page ranges, DPI choices). The explicit contrast with 'not just extracted text' gives clear usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

zotero_pdf_textA

Extract text from an item's PDF. Cheap compared with rendering pages - use this first, then zotero_pdf_pages for the pages whose figures matter.

ParametersJSON Schema
NameRequiredDescriptionDefault
pagesNoall
item_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, but the description mentions 'Cheap compared with rendering pages' and suggests a workflow. This gives some insight into performance characteristics and intended usage, but it does not disclose side effects, permissions, or rate limits. The read-only nature is implied but not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, consisting of two short sentences that effectively convey the purpose and usage guidance without unnecessary detail. It is well-structured and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (two parameters, one required) and the presence of an output schema, the description provides enough context for basic usage. However, the lack of parameter explanations and output format details leaves some gaps. The workflow hint partially compensates, but overall it is not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides no descriptions for the parameters (item_key and pages), and the description does not explain what they mean or their expected formats. With 0% schema description coverage and no additional context, the agent has insufficient information to correctly populate these parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Extract text from an item's PDF' with a specific verb and resource, and it distinguishes itself from the sibling tool zotero_pdf_pages by focusing on text extraction rather than rendering pages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: 'use this first, then zotero_pdf_pages for the pages whose figures matter.' This tells the agent when to use this tool and when to switch to the alternative, making the usage context clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.0
    • First observedzotero_item_info
    • First observedzotero_pdf_pages
    • First observedzotero_pdf_text
    • First observedzotero_search

TDQS

A3.8/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a distinct role: searching the library, fetching metadata, rendering PDF pages, and extracting PDF text. There is no overlap between search, metadata, and the two PDF operations.

Naming Consistency4/5

All tool names follow a consistent zotero_ prefix with a noun-based suffix, and they are readable. Minor deviation is that the PDF tools use 'pdf' as a middle element rather than a pure verb_noun pattern, but the convention is uniform.

Tool Count4/5

Four tools is a compact set covering the core search-to-PDF workflow. It is slightly small but reasonable for a focused MCP server that only needs to support library search, metadata lookup, and PDF reading.

Completeness3/5

The server covers the main lifecycle of finding a Zotero item and accessing its PDF, and the descriptions explicitly guide chaining tools. Obvious gaps include no attachment listing beyond item_info, no way to retrieve full-text metadata or navigate collections, and no handling of non-PDF attachments, but these are workable for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers