Skip to content
Agentmart
Submit a tool

MCP Zotero

Unofficial Zotero server: search your library, add papers by DOI, import PDFs, cite in Word

Connector by Xevos117 · GitHub account verified by the MCP Registry

IndexedLicense unknownLocal (stdio)★ 38
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/xevos117-mcp-zotero

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Unofficial Zotero server: search your library, add papers by DOI, import PDFs, cite in Word

Use cases: writing-editing, deep-research

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
6 read · 7 write · 2 delete
Secrets
1 (API keys, tokens or passwords)
Install scripts
None found
Runs as
Node.js package

Tools by what they do 15

Read from the source code; the running server may list different tools.

Read 6 · Look things up without changing anything.

  • get_collection_items
  • get_collections
  • get_item_fulltext
  • get_items_details
  • get_user_id
  • search_library

Write 7 · Create, change, send or run things.

  • add_items
  • add_items_by_doi
  • add_linked_url_attachment
  • create_collection
  • find_and_attach_pdfs
  • import_pdf_to_zotero
  • inject_citations

Delete 2 · Delete, drop, revoke or wipe things.

  • delete_collection
  • delete_items

Secrets and settings it asks for

Secrets: values you paste in that let it act as you.

  • ZOTERO_API_KEY

Other settings (environment variables or headers).

  • UNPAYWALL_EMAIL
  • UNSAFE_OPERATIONS
  • ZOTERO_LIBRARY_ID
  • ZOTERO_LIBRARY_TYPE
  • ZOTERO_USER_ID

Network hosts it talks to 13

  • api.anthropic.com · found in code
  • api.datacite.org · found in code
  • api.thoth.pub · found in code
  • api.unpaywall.org · found in code
  • api.zotero.org · found in code
  • doi.org · found in code
  • export.arxiv.org · found in code
  • github.com · found in code
  • raw.githubusercontent.com · found in code
  • schemas.openxmlformats.org · found in code
  • unpaywall.org · found in code
  • zenodo.org · found in code
  • zotero.org · found in code

Tools (15)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • add_items

    Add items to Zotero by providing metadata directly. Supports ALL 37 Zotero item types. WHEN TO USE: - For items that do not have a DOI (books, theses, reports, etc.) - When you need full control over metadata (e.g., override a title, set a specific itemType, add custom fields) — even if a DOI exists, use add_items when the auto-resolved metadata would be incorrect or incomplete - Mixed batch: if some items have DOIs and others don't, call add_items_by_doi for the DOIs and add_items for the rest (two separate calls) - Prefer add_items_by_doi when DOIs are available AND you don't need to overri…

  • add_items_by_doi

    Add items to your Zotero library by resolving DOIs. Works with ANY item type that has a DOI — journal articles, books, datasets, preprints, conference papers, reports, etc. For each DOI, resolves metadata via content negotiation and creates the item in Zotero with the correct type automatically. Returns a list of successfully added items (with item_key and title) and any failures. WHEN TO USE vs add_items: - Use add_items_by_doi when the item HAS a DOI — it auto-resolves all metadata and attaches open-access PDFs (when the server has UNPAYWALL_EMAIL set). - Use add_items when the item does NO…

  • add_linked_url_attachment

    Attach a linked URL to an existing Zotero item, or create a standalone linked-URL attachment. Use this to link external PDFs, web pages, or other resources to items already in your library. If parent_item is provided, the attachment is added as a child; otherwise it is standalone. A linked URL stores no file and no full text (get_item_fulltext cannot read it): to store a PDF in Zotero use import_pdf_to_zotero.

  • create_collection

    Create a new collection (folder) in your Zotero library. Optionally nest it under a parent collection. Returns the new collection key and name. Use the key as collection_key in add_items_by_doi or add_items to organize imported papers.

  • delete_collection

    Delete a collection (folder) from your Zotero library; confirm with the user first. Items inside the collection are NOT deleted — they remain in your library. Disabled unless the server setting UNSAFE_OPERATIONS is 'all'.

  • delete_items

    Delete one or more items from your Zotero library: they are permanently deleted (not moved to the Zotero trash), so confirm with the user first. Accepts up to 50 item keys per call. Disabled unless the server setting UNSAFE_OPERATIONS is 'items' or 'all'.

  • find_and_attach_pdfs

    For each Zotero item, check Unpaywall for open access PDFs and attach them. Items must have a DOI; needs UNPAYWALL_EMAIL in the server settings. Uploads use the user's Zotero file storage; dry_run only reports what is available. Uses the same source as Zotero Desktop's 'Find Available PDFs'.

  • get_collection_items

    Get all items in a specific Zotero collection (only items directly in it, not those in its subcollections). Returns item keys, titles, authors, and dates. Use the collectionKey from get_collections. Use the returned item keys with get_items_details, get_item_fulltext, or inject_citations.

  • get_collections

    List all collections (folders) in your Zotero library. Returns collection keys, names, and parent relationships. Use collection keys with get_collection_items or as parent_collection in create_collection. Trashed collections are excluded by default.

  • get_item_fulltext

    Get the text of a Zotero item's stored PDF from Zotero's full-text index. Works for PDFs indexed by Zotero desktop and synced, or imported with import_pdf_to_zotero / find_and_attach_pdfs; not for linked URLs or web pages. Use this to read the full content of papers instead of relying on abstracts.

  • get_items_details

    Get metadata for multiple Zotero items in a single call. Accepts an array of item keys and returns a map of key → metadata. Use this instead of one call per item. Returns all type-specific fields (e.g. bookTitle for bookSection, proceedingsTitle for conferencePaper, university for thesis). Set include_abstract to include abstracts (excluded by default to keep responses lightweight). Keys not found in the library are listed in not_found (present only when some are missing).

  • get_user_id

    Returns the Zotero library configured in the server environment: user_id, library_type, library_id and library_path ("users/<id>" or "groups/<id>"). Pass library_path to the zotero-mcp-integrations skill script (inject.js) to generate Zotero field code URIs. Not needed when using the inject_citations MCP tool, which reads the library internally.

  • import_pdf_to_zotero

    Download a PDF from a URL and upload it to Zotero storage as an imported_url attachment. Unlike linked URL attachments, imported files are stored in Zotero's storage and become fulltext-indexed (searchable via get_item_fulltext). Use this when you need the PDF content to be indexed by Zotero. The URL must lead straight to the PDF file (no login, paywall or HTML landing page); files up to 100 MB, counted against the user's Zotero file storage. For items with a DOI, find_and_attach_pdfs finds open-access PDFs by itself.

  • inject_citations

    Replace <zcite> placeholder tags in a .docx file with native Zotero field codes that Zotero for Word can recognize and manage. The tool fetches item metadata from Zotero automatically — you only need to provide the .docx file. WORKFLOW — how to create a Word document with live Zotero citations: 1. Collect item keys: use add_items_by_doi or add_items (or search_library for existing items) 2. Generate .docx: create a Word document (e.g. with the "docx" npm package) with <zcite keys="ITEMKEY"/> placeholders where citations should appear. Each <zcite> MUST be in its own dedicated TextRun — do NOT…

  • search_library

    Search your Zotero library or list items sorted by a field. When 'query' is provided, matches it against titles, creator names and years (not abstracts, tags or full text). When 'query' is omitted, lists items sorted by the chosen field (default: dateAdded, descending). Examples: - Search: { "query": "deep learning" } - Recent items: { "sort": "dateAdded", "limit": 10 } - Recent with search: { "query": "transformers", "sort": "dateAdded", "limit": 5 } Use the returned item keys with get_items_details, get_item_fulltext, or inject_citations.

Compare and alternatives

    Featured in

    Signals

    Stars
    38
    Forks
    7
    Open issues
    5
    Last commit
    Oct 21, 2026 (7 days ago)
    Last release
    Oct 25, 2026 (3 days ago)

    From GitHub (fetched Oct 24, 2026).

    Details

    Registry name
    io.github.Xevos117/mcp-zotero
    Version
    2.0.4
    Auth
    API key
    License
    License unknown
    First seen
    Oct 24, 2026
    Last checked
    Oct 26, 2026
    Cite this page

    MCP Zotero. Agent Mart. https://agentmart.dev/connectors/xevos117-mcp-zotero (last updated 2026-10-26)