Search, cite, and read PDFs from your EndNote library in Claude Desktop
Connect your EndNote reference library to Claude AI. Search references, read PDFs, format citations, find related papers, and generate bibliographies — all directly in Claude Desktop conversations.
Once set up, you can ask Claude things like:
Claude searches your local library — nothing is uploaded to the cloud beyond the normal conversation.
EndNote Library → XML Export → endnote-mcp index → SQLite Database (FTS5 + Embeddings)
↕
Claude Desktop ← MCP Server (12 tools)
Your references and PDF text are indexed into a local SQLite database with full-text search. Optionally, AI embeddings enable semantic search — finding papers by meaning, not just keywords. When semantic dependencies are installed, new references are automatically embedded during indexing. Claude connects through the Model Context Protocol (MCP).
The bundle installer below has no other prerequisites — Claude Desktop manages Python and dependencies. The CLI install path additionally needs Python 3.10+ and uv (or pip).
The fastest install for non-engineers. No Python or terminal required.
endnote-mcp.mcpb from the latest release..mcpb file (or in Claude Desktop: Settings → Extensions → Install Extension…).<library>.Data/PDF/ next to your .enl file, or PDF/ inside an .enlp package.That's it. Try asking Claude "Search my library for grounded theory".
The bundle keeps its own configuration (config-mcpb.yaml), so installing it will not disturb an existing CLI setup. Both default to the same database, so if you already indexed with the CLI the bundle reuses that index rather than building a second copy.
Maintainers (or anyone working from source) can build it with:
bash scripts/build_mcpb.sh
# → dist/endnote-mcp.mcpb
The build is a single cross-platform .mcpb file (~36 KB). Dependencies resolve at install time via the uv runtime bundled with Claude Desktop.
The format was called DXT and used the
.dxtextension until it was renamed upstream to MCPB (MCP Bundles). See modelcontextprotocol/mcpb.
Prefer the terminal? This path gives you the endnote-mcp CLI for indexing and embedding.
# With uv (recommended)
uv tool install endnote-mcp
# Or with pip
pip install endnote-mcp
In EndNote: File → Export → choose XML format → save to a convenient location (e.g., Desktop).
endnote-mcp setup
The wizard will:
Quit and reopen Claude Desktop. You'll see "EndNote Library" in your MCP connectors.
Enable meaning-based search that finds references even when they use different terminology than your query. For example, searching "how companies prepare for uncertain futures" finds papers on scenario planning and strategic foresight.
# Install semantic search dependencies
pip install endnote-mcp[semantic]
# Generate embeddings (~3 min for 4,000 references)
endnote-mcp embed
This uses the lightweight all-MiniLM-L6-v2 model locally — no API keys needed, everything stays on your machine.
| Command | What It Does |
|---|---|
endnote-mcp setup | Interactive setup wizard |
endnote-mcp index | Re-index after adding new references (incremental) |
endnote-mcp index --full | Full re-index from scratch |
endnote-mcp index --skip-pdfs | Index metadata only (fast, ~1 sec) |
endnote-mcp index --embed | Re-index and generate embeddings |
endnote-mcp embed | Generate semantic search embeddings |
endnote-mcp embed --full | Regenerate all embeddings from scratch |
endnote-mcp status | Show index statistics |
endnote-mcp install | Add to Claude Desktop config |
endnote-mcp serve | Start MCP server (used by Claude Desktop automatically) |
| Tool | Description |
|---|---|
search_references | Search by author, title, year, keywords, abstract (BM25 ranked, with DOI links) |
search_fulltext | Search inside PDF content — find concepts, quotes, methods |
search_library | Combined metadata + PDF search in one call |
search_semantic | Search by meaning using AI embeddings (requires endnote-mcp[semantic]) |
get_reference_details | Full metadata for a reference (abstract, keywords, DOI, etc.) |
get_citation | Format as APA 7th, Harvard, Vancouver, Chicago, or IEEE |
get_bibtex | Export references as BibTeX entries for LaTeX |
get_bibliography | Generate a formatted bibliography for multiple references |
find_related | Find similar references (uses embeddings when available) |
read_pdf_section | Read specific pages from a PDF attachment |
list_references_by_topic | Broad topic-based listing |
rebuild_index | Re-index after updating your EndNote library |
When you add new references to your EndNote library:
endnote-mcp index from a terminal, orIndexing is incremental — it only processes new references and PDFs, not the entire library again. If semantic search is installed, new references are automatically embedded.
| Operation | Time (4,000 references) |
|---|---|
| Metadata indexing | ~1 second |
| PDF extraction (first time) | ~1 min per 100 PDFs |
| PDF extraction (incremental) | Only new PDFs |
| Embedding generation | ~3 minutes |
| Keyword search | < 50 ms |
| Semantic search | < 200 ms |
Config is stored at:
~/Library/Application Support/endnote-mcp/config.yaml%APPDATA%/endnote-mcp/config.yaml~/.config/endnote-mcp/config.yamlendnote_xml: /path/to/your/library.xml
pdf_dir: /path/to/your/Library.Data/PDF
db_path: /path/to/library.db # auto-set by setup
max_pdf_pages: 30 # max pages per read request
search_notes: false # include the EndNote Notes field in searches
EndNote's Research Notes — where you keep your own summaries and judgments — is indexed and searched by default, ranked just below keywords and above the abstract.
The plain Notes field is indexed but excluded from matching, because
reference managers use it as a dumping ground on import: author affiliations,
email addresses, thesaurus terms. Set search_notes: true to include it. The
setting takes effect immediately — no re-index needed.
Five built-in styles:
get_citation(rec_number=42, style="apa7")style="harvard"style="vancouver"style="chicago"style="ieee"Use get_bibliography to format multiple references at once, sorted by author or year.
Export references as BibTeX entries for use in LaTeX:
get_bibtex tool directly with comma-separated record numbersGenerates complete entries with proper entry types (@article, @book, @inproceedings, etc.), cite keys, and all available fields.
"No configuration found" — Run endnote-mcp setup
"XML file not found" — Re-export from EndNote: File → Export → XML format
"PDF not found" — Check that pdf_dir in your config points to the correct .Data/PDF directory
Search returns no results — Run endnote-mcp index to rebuild the database
Claude Desktop doesn't show the tool — Run endnote-mcp install, then restart Claude Desktop
"Semantic search is not available" — Run pip install endnote-mcp[semantic] then endnote-mcp embed
Client reports the server "failed to connect" / CONNECTION_CLOSED — The client hides the underlying error. Run echo '' | endnote-mcp serve to see the real traceback (the JSON decode error it prints afterwards is just the empty input, not a fault).
Publishing runs on a tag push via .github/workflows/release.yml, which uploads to PyPI and the MCP Registry using OIDC — no API tokens are stored in the repository.
The version lives in seven places, and the registry rejects a server.json that does not exactly match the published PyPI release. Bump all of them, then verify before tagging:
# pyproject.toml, server.json (x2), CITATION.cff, the README citation
# block, mcpb/manifest.json and mcpb/pyproject.toml
python scripts/check_version.py v1.4.12
git commit -am "Bump version to 1.4.12"
git tag v1.4.12 && git push origin main --tags
If you use this tool in your research, please cite it:
Gokmen, G. (2026). EndNote MCP: Connecting EndNote Reference Libraries to Claude AI (Version 1.4.12) [Computer software]. https://doi.org/10.5281/zenodo.18617546
Or use the "Cite this repository" button on GitHub for BibTeX/APA formats.
AGPL-3.0 — free to use, modify, and distribute. See LICENSE for details.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
uvx endnote-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-gokmengokhan-endnote-mcp": {
"command": "uvx",
"args": [
"endnote-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referenceendnote-mcppypiio.github.gokmengokhan/endnote-mcp works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.