MCP Hub
Back to servers

zotero-translator-mcp-server

Enables LLMs to extract bibliographic metadata from URLs and identifiers like DOIs or ISBNs by wrapping the Zotero Translation Server. It supports importing, exporting, and converting metadata across various formats including BibTeX, RIS, and CSL-JSON.

glama
Updated
Mar 29, 2026

zotero-translator-mcp

A CLI and MCP server that exposes Zotero translators to LLMs and AI agents, enabling bibliographic metadata extraction from URLs, DOIs, ISBNs, and other identifiers — plus format conversion between BibTeX, RIS, CSL-JSON, and 14 other citation formats.

What are Zotero Translators?

Zotero translators are small JavaScript programs that know how to extract bibliographic metadata from specific websites and data sources. There are over 700 translators maintained in the zotero/translators repository, covering publishers (ACM, IEEE, Springer, Elsevier, Wiley, etc.), preprint servers (arXiv, bioRxiv, SSRN), library catalogs (WorldCat, Library of Congress), and databases (PubMed, Google Scholar, Web of Science).

These are the same translators that power the Zotero browser connector — the "save" button that extracts citation data when you visit an article page. The Zotero Translation Server packages these translators as a standalone REST API, and this MCP server wraps that API for use by AI agents.

Motivation

Several Zotero MCP servers already exist (e.g., 54yyyu/zotero-mcp, mcp-zotero), but they focus on managing an existing Zotero library — searching items, reading annotations, organizing collections. They all require Zotero API credentials and an existing library.

None of them provide standalone metadata extraction or citation format conversion.

This project fills that gap:

CapabilityExisting Zotero MCPsThis project
Extract metadata from a URLRequires Zotero API keyNo account needed
Look up a DOI/ISBN/PMIDRequires Zotero API keyNo account needed
Convert Zotero JSON to BibTeX/RISNot availableYes
Convert BibTeX/RIS to Zotero JSONNot availableYes
Search/manage a Zotero libraryYesNot the goal

This makes zotero-translator-mcp ideal for:

  • AI agents that need to extract citations from web pages without a Zotero account
  • Automated pipelines that convert between bibliography formats
  • Headless, server-side workflows where no Zotero desktop client is available

Zero-Setup Design

On first run, the server automatically:

  1. Clones the Zotero Translation Server to ~/.cache/zotero-translator-mcp/
  2. Installs its dependencies
  3. Starts it as a child process on port 1969

On subsequent runs, it pulls the latest translators via git pull before starting — so you always have up-to-date translators without manual intervention.

Prerequisites: git and node (v18+) must be available on your PATH.

Two Interfaces: CLI vs MCP

This package provides two ways to access Zotero's translation engine:

CLI (zotero-translator)MCP (zotero-translator-mcp)
Invocationnpx github:jooyoungseo/zotero-translator-mcp search "DOI"MCP protocol over stdio
Best forAI agents with Bash access, scripts, pipelinesMCP-native clients (Claude Code, VS Code, etc.)
Token costMinimal — one Bash call, direct outputHigher — JSON-RPC protocol overhead, tool schemas, handshake
Pipingsearch ... | export -f bibtexNot applicable
ComposabilityUnix pipes, shell scriptsMCP tool chaining

For AI agents, the CLI is significantly more token-efficient. A single Bash tool call replaces the MCP initialization handshake, tool listing, schema transfer, and JSON-RPC wrapping — saving hundreds of tokens per interaction.

Installation

CLI (via npx)

No installation needed — run directly:

npx -y github:jooyoungseo/zotero-translator-mcp get "10.1145/3613904.3642743"

Or install globally:

npm install -g github:jooyoungseo/zotero-translator-mcp
zotero-translator get "10.1145/3613904.3642743"

MCP Server — Claude Code

claude mcp add --transport stdio --scope user zotero-translator -- npx -y -p github:jooyoungseo/zotero-translator-mcp zotero-translator-mcp-server

MCP Server — Claude Desktop / VS Code / other MCP clients

Add to your MCP configuration:

{
  "mcpServers": {
    "zotero-translator": {
      "command": "npx",
      "args": ["-y", "-p", "github:jooyoungseo/zotero-translator-mcp", "zotero-translator-mcp-server"]
    }
  }
}

CLI Usage

The get command auto-detects the input type — URL, DOI, ISBN, PMID, or arXiv ID:

# DOI
zotero-translator get "10.1145/3613904.3642743"

# URL (auto-detected by https:// prefix)
zotero-translator get "https://dl.acm.org/doi/10.1145/3613904.3642743"

# ISBN
zotero-translator get "978-0-13-468599-1"

# Pipe to BibTeX
zotero-translator get "10.1145/3613904.3642743" | zotero-translator export -f bibtex

# Convert BibTeX to Zotero JSON
cat refs.bib | zotero-translator import

# Other export formats
zotero-translator get "10.1145/3613904.3642743" | zotero-translator export -f ris
zotero-translator get "10.1145/3613904.3642743" | zotero-translator export -f csljson

Run zotero-translator --help for full usage.

MCP Tools

zotero_translate_url

Extract bibliographic metadata from a webpage URL using Zotero's translation engine.

Input:  { "url": "https://dl.acm.org/doi/10.1145/3613904.3642743" }
Output: Zotero JSON array with title, authors, DOI, abstract, etc.

zotero_search_identifier

Look up metadata by DOI, ISBN, PMID, or arXiv ID.

Input:  { "identifier": "10.1145/3613904.3642743" }
Output: Zotero JSON array with resolved metadata

zotero_export_bibliography

Convert Zotero JSON to a supported export format (BibTeX, RIS, CSL-JSON, etc.).

Input:  { "items": "[...]", "format": "bibtex" }
Output: Formatted BibTeX string

Supported export formats:

FormatValue
BibTeXbibtex
BibLaTeXbiblatex
Bookmarks (HTML)bookmarks
COinScoins
CSL-JSONcsljson
CSVcsv
EndNote XMLendnote_xml
Evernote ENEXevernote
MODSmods
RDF/Bibliontologyrdf_bibliontology
RDF/Dublin Corerdf_dc
RDF/Zoterordf_zotero
Refer/BibIXrefer
RefWorks Taggedrefworks_tagged
RISris
TEItei
Wikipedia Citation Templateswikipedia

zotero_import_bibliography

Convert data in any supported import format (BibTeX, RIS, etc.) to Zotero JSON.

Input:  { "data": "@article{seo2024, title={...}, ...}" }
Output: Zotero JSON array

Configuration

All configuration is optional. The server works out of the box with no environment variables.

Environment VariableDefaultDescription
ZOTERO_TRANSLATION_SERVER_URLIf set, connects to an external translation server instead of auto-starting one
ZOTERO_TRANSLATION_SERVER_PORT1969Port for the auto-started translation server
ZOTERO_TRANSLATION_SERVER_DIR~/.cache/zotero-translator-mcpDirectory where the translation server is cloned

License

AGPL-3.0-only — same license as the Zotero Translation Server it wraps.

Acknowledgments

This project wraps the Zotero Translation Server by the Corporation for Digital Scholarship.

Reviews

No reviews yet

Sign in to write a review