bibliome-mcp
an MCP (Model Context Protocol) server that lets any MCP client (claude code, claude desktop, codex) search and ask questions over your local Bibliome PDF library. it imports Bibliome's own on-device search/RAG engine straight out of your installed Bibliome.app, so whatever you indexed in the Mac app is exactly what this exposes.
requirements (read this first)
this connector doesn't vendor a search engine and doesn't index anything. it reads what's already there.
you must already have:
- Bibliome.app installed on this mac (Mac App Store, bundle id
com.langberg.mypdflibrarian). it must live in/Applications/Bibliome.app(or~/Applications/Bibliome.app). - at least one library already indexed in Bibliome. the app builds
embeddings.dbitself; this connector only reads from it. if you've never opened Bibliome and indexed PDFs, there's nothing for it to search.
if both are true, search_library and library_status work with no extra configuration. ask_library needs one more thing (see below).
install
pip install bibliome-mcp
this pulls in fastembed + numpy (the same lightweight, no-torch embedding stack Bibliome's own engine uses). they run search/rerank in this process, not inside the app. no Apple Silicon requirement for search.
for ask_library (RAG answers), also install one answer provider:
# on-device via Apple MLX (Apple Silicon only, matches Bibliome's own default)
pip install "bibliome-mcp[ask-mlx]"
# or: a local Ollama daemon instead (works on Intel too)
pip install "bibliome-mcp[ask-ollama]"
export PDF_ASK_PROVIDER=ollama # must also be set at runtime, not just installed
without either, ask_library still returns a graceful "couldn't start the local model" message with supporting citations instead of erroring. search_library is unaffected either way.
then bibliome-mcp is on your PATH and ready to be wired into a client.
setup
(a) claude code
claude mcp add bibliome-library -s user -- bibliome-mcp
(b) claude desktop
add this to claude_desktop_config.json (under the mcpServers block):
{
"mcpServers": {
"bibliome-library": {
"command": "bibliome-mcp"
}
}
}
(c) codex
add this to ~/.codex/config.toml:
[mcp_servers.bibliome-library]
command = "bibliome-mcp"
tools
-
search_library(q, k=20, folder=None): semantic search over your local PDF library; returns up tokmatching passages. -
ask_library(q, k=5, folder=None): ask a question, get an on-device RAG answer grounded in your PDFs (needsask-mlxorask-ollama, see Install).folder(optional, an absolute path inside your library) scopes either tool to the documents under that folder only. it is there for a library that holds notes as well as sources, so a client can ask "what have I written down about X" separately from "what do the documents say about X". without it the whole library is searched; there is no exclude (Bibliome's engine only has an allow-list). a missing or empty folder is an error, never a silent fall-back to searching everything. -
library_status(): reports whether Bibliome.app and anembeddings.dbwere found, plus a live engine health check. run this first when something looks wrong.
troubleshooting
"Bibliome not found" / bibliome_found: false
Bibliome.app must be at /Applications/Bibliome.app or ~/Applications/Bibliome.app. if it's elsewhere, point at it explicitly:
export BIBLIOME_APP_DIR="/Volumes/External/Bibliome.app"
no results / db_found: false
open Bibliome.app and index at least one PDF library. the app builds embeddings.db itself. if your embeddings.db is in a non-default location, point at it:
export BIBLIOME_DB_PATH="/path/to/embeddings.db"
how it works
this connector does not reimplement search and does not vendor any of Bibliome's proprietary code. it imports it directly from your installed copy, in-process, on the first tool call: it adds Bibliome.app/Contents/Resources/pdf_organizer (plain Python source, shipped inside every install) to sys.path and calls the engine's own Index/dispatch directly, pointed at your embeddings.db.
this is deliberately not a subprocess bridge to Bibliome's bundled interpreter. that binary carries the macOS sandbox entitlement com.apple.security.inherit, meaning it will only run as a child of the Bibliome.app process itself; any external launcher (including this one) gets killed by the sandbox before it starts. running the plain-source engine in-process, with fastembed/numpy installed in this environment, sidesteps that entirely.
because it's literally Bibliome's own engine code answering, search and RAG results always match what the app itself would produce.
privacy
everything stays local. no network calls, no telemetry, no data leaving your machine. search and ask both run fully on-device.
Metadata
Release files for bibliome-mcp 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bibliome_mcp-0.3.0.tar.gz | 14.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bibliome_mcp-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.6 kB
Release files / bibliome_mcp-0.3.0.tar.gz
| Download URL | bibliome_mcp-0.3.0.tar.gz |
|---|---|
| Size | 14.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c51127c0808ce28aea592d9d6cea081100385fd0556d088b0752c769ad5aedfa
|
|
BLAKE2b-256 checksum How to use checksums |
a05a5bd43d75abe904bbf25c1672119fdea28f0b4174aa31e5d253ee1fe4c6ff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / bibliome_mcp-0.3.0-py3-none-any.whl
| Download URL | bibliome_mcp-0.3.0-py3-none-any.whl |
|---|---|
| Size | 9.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7f0d20a414be2bec8685df8c06960414eae186ce14caa48c3f1fb344567e1757
|
|
BLAKE2b-256 checksum How to use checksums |
6aa654bd232424b4c04714d19371b2c1e49643435d06bdcddfcf3fb4a3220b2f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|