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.
README
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:
| Capability | Existing Zotero MCPs | This project |
|---|---|---|
| Extract metadata from a URL | Requires Zotero API key | No account needed |
| Look up a DOI/ISBN/PMID | Requires Zotero API key | No account needed |
| Convert Zotero JSON to BibTeX/RIS | Not available | Yes |
| Convert BibTeX/RIS to Zotero JSON | Not available | Yes |
| Search/manage a Zotero library | Yes | Not 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:
- Clones the Zotero Translation Server to
~/.cache/zotero-translator-mcp/ - Installs its dependencies
- 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) |
|
|---|---|---|
| Invocation | npx github:jooyoungseo/zotero-translator-mcp search "DOI" |
MCP protocol over stdio |
| Best for | AI agents with Bash access, scripts, pipelines | MCP-native clients (Claude Code, VS Code, etc.) |
| Token cost | Minimal — one Bash call, direct output | Higher — JSON-RPC protocol overhead, tool schemas, handshake |
| Piping | search ... | export -f bibtex |
Not applicable |
| Composability | Unix pipes, shell scripts | MCP 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:
| Format | Value |
|---|---|
| BibTeX | bibtex |
| BibLaTeX | biblatex |
| Bookmarks (HTML) | bookmarks |
| COinS | coins |
| CSL-JSON | csljson |
| CSV | csv |
| EndNote XML | endnote_xml |
| Evernote ENEX | evernote |
| MODS | mods |
| RDF/Bibliontology | rdf_bibliontology |
| RDF/Dublin Core | rdf_dc |
| RDF/Zotero | rdf_zotero |
| Refer/BibIX | refer |
| RefWorks Tagged | refworks_tagged |
| RIS | ris |
| TEI | tei |
| Wikipedia Citation Templates | wikipedia |
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 Variable | Default | Description |
|---|---|---|
ZOTERO_TRANSLATION_SERVER_URL |
— | If set, connects to an external translation server instead of auto-starting one |
ZOTERO_TRANSLATION_SERVER_PORT |
1969 |
Port for the auto-started translation server |
ZOTERO_TRANSLATION_SERVER_DIR |
~/.cache/zotero-translator-mcp |
Directory 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.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.