Skip to main content

jabref-mcp

A Model Context Protocol server that lets OpenCode (and other MCP clients) work with your JabRef 5.x bibliography:

  • Search your library (title / author / year / keywords / DOI / full text)
  • Read full records (BibTeX + abstract) and resolve attached PDF paths, so the assistant can read and summarize papers itself
  • Add new entries — only through JabRef's official import API, never by editing your .bib files

Why this shape (JabRef 5.x)

JabRef 5.x has no HTTP read API (that arrives in 6.x). So:

Operation Mechanism
Search / read / list parse your .bib file(s) locally
Add an entry jabref --importBibtex "<bibtex>" — the exact channel the official browser extension uses. With Remote operation enabled, the running JabRef imports into the currently open library, with its own duplicate detection.

Requirements

  • Python ≥ 3.10 and uv
  • JabRef installed, with jabref on PATH (or JABREF_MCP_JABREF_BIN set)
  • For adding entries: JabRef running with Listen to remote operation on port enabled (Preferences → Network — the same requirement as the official browser extension)

Configuration (environment variables)

Variable Default Meaning
JABREF_MCP_BIB_FILES *.bib in the working directory Comma-separated .bib paths
JABREF_MCP_PDF_ROOT — Optional base dir for resolving relative attached paths
JABREF_MCP_JABREF_BIN jabref / JabRef on PATH JabRef executable or command prefix (e.g. flatpak-spawn --host jabref)
JABREF_MCP_IMPORT_TIMEOUT 90 Import timeout (seconds)

Run / install

From a checkout (development):

uv sync
uv run jabref-mcp

From PyPI (published releases):

uvx jabref-mcp

Before a release is published, uvx can build straight from the GitHub repo:

uvx --from git+https://github.com/ast0815/jabref-mcp jabref-mcp

Register with OpenCode

A project-level registration is already provided in opencode.jsonc (it runs uvx jabref-mcp). To use it, start OpenCode from this directory. Alternatively register globally:

opencode mcp add jabref -- uvx jabref-mcp

(Add --global to make it available in every project; then set JABREF_MCP_BIB_FILES to your real libraries.) Check the connection with opencode mcp list — it should report connected. Tools appear under tools.jabref.*.

Tools

  • list_libraries — configured libraries and entry counts
  • list_entries — overview of every entry
  • search — keyword search with field / author / year / tag filters
  • get_entry — full BibTeX + resolved attached files for a citation key
  • get_pdf — absolute paths of the PDFs attached to an entry (feed to the assistant's PDF reader for summarizing)
  • add_entry — import BibTeX via the official JabRef CLI (the only write path)

Notes

  • The server reads the .bib files; it never writes to them. Additions go through JabRef. Petty duplicate detection, group assignment, etc. are handled by JabRef itself.
  • If your library changes in JabRef, re-run search/get_entry — the files are re-read per call.
  • JabRef 6.x will (eventually) ship its own REST API; this server is a drop-in for 5.x and can later be re-pointed at localhost:23119.

Release files for jabref-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jabref-mcp 0.1.0
File Size Uploaded
jabref_mcp-0.1.0.tar.gz 129.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jabref-mcp 0.1.0
File Interpreter ABI Platform
jabref_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 143.1 kB

Release files / jabref_mcp-0.1.0.tar.gz

Download URL jabref_mcp-0.1.0.tar.gz
Size 129.8 kB
Tags Source
SHA-256 checksum
How to use checksums
e21d44d5922fc2a4175d2db7b0d554109eaa66b0473d168c9e818e467a62ba7c
BLAKE2b-256 checksum
How to use checksums
eb1b679c2bee736f1284389f3de7bc556a2fc0c891b20f2194521096da140395
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release files / jabref_mcp-0.1.0-py3-none-any.whl

Download URL jabref_mcp-0.1.0-py3-none-any.whl
Size 13.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
53d5ab7855641dee741e159bdd1b29907f61df99fcd432d0cc7d8fd5f94622e8
BLAKE2b-256 checksum
How to use checksums
ac65f0e88c067b31534eedea511bc3cfc941ae2e7d09ef76f976b8cdd85b59ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page