list_papersLABSCO SUMMARY
Backup mode exists because EndNote will not let go of the file, and it is the mode to use.
Without it, having EndNote open means the tool cannot read anything — which is exactly when you would want to use it. Working from a copy solves that, at the cost of a refresh step you must run with EndNote closed. The other reason to install it is read_paper: the answer comes from the PDF's actual text, not from an abstract.
What it is
A Python server that reads an EndNote .enl library — which is SQLite underneath — together with its .Data folder, and exposes both the bibliographic records and the text of the attached PDFs. A backup mode exists specifically because EndNote locks the library file while it is open.
What you get
list_papers(offset=0, limit=10)enumerates references with paginationsearch_papers(query)does fuzzy matching on title or keywords, in English or Chineseread_paper(title)returns the metadata and the extracted full text of the attached PDF, matched by fuzzy titlerefresh_backup()re-copies the working.enl.backupfrom the original, when backup mode is on
Requirements
uv and Python 3.13+: the client entry starts the server through uv run, which follows the project file's requires-python = ">=3.13" (the README still says 3.10+) and installs fastmcp>=2.8.1 and pypdf>=5.6.0. Launch server.py with --enl-file pointing at your .enl and --data-folder at the matching .Data directory; --enable-log adds detail and --use-backup switches all database work onto a .enl.backup copy, refreshed automatically at startup. Refreshing that backup requires EndNote to be closed, because EndNote holds the file lock. The Python package is enl-reader-mcp, version 0.1.0.
Setup effort
Build from source — git clone https://github.com/DOGGY-SAINT/ENL-Reader-MCP.git
USE CASES
Finding the paper you half-remember
Fuzzy-search your own library by a fragment of the title rather than opening EndNote.
Asking a question of a paper's contents
Pull the PDF full text and reason over what the paper actually says.
Surveying what you have collected
Page through the library's records with an offset and limit.
Picking up references you just added
Close EndNote, refresh the backup, and search again.
4 tools
Listed in project docs. Your client may show a different list.
search_papersread_paperrefresh_backupBEFORE YOU INSTALL
What to know first
Tools you get
4 tools named in the project's documentation.
Requires
Python 3.13+
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
You clone this one yourself.
Server setup
pip install uv
git clone https://github.com/DOGGY-SAINT/ENL-Reader-MCP.git
cd ENL-Reader-MCPMCP Clients
Any MCP client
{
"mcpServers": {
"enl_reader_mcp": {
"command": "uv",
"args": [
"run",
"--directory",
"<YOUR_CLONE>",
"-m",
"server",
"-e",
"E:/EndNoteLib/<YOUR_LIBRARY_ENL>",
"-d",
"E:/EndNoteLib/<YOUR_LIBRARY_DATA>",
"-l",
"-b"
]
}
}
}