streamable-httpupdated 1mo ago
An MCP server for Christian scholarship and research. Non-commercial, aiming to become a public resource. See corpus-survey.md for the full source/license landscape and ROADMAP.md for direction.
What can you do with bible mcp?
bible-mcp
An MCP server for Christian scholarship and research. Non-commercial, aiming to become a public resource. See corpus-survey.md for the full source/license landscape and ROADMAP.md for direction.
What's in it (v0.11)
| Data | Source | License |
|---|---|---|
| Berean Standard Bible (66 books) | berean.bible | Public Domain |
| World English Bible, Ecumenical (83 books incl. Apocrypha) | ebible.org | Public Domain |
| Septuagint (Brenton translation, 1851) β OT + Apocrypha, incl. Susanna/Bel and the Dragon/Epistle of Jeremiah as separate books; Psalms remapped to standard English/KJV numbering (LXX's own numbering diverges throughout most of the Psalter β verified verse-by-verse against WEB); Jeremiah, Daniel-Greek, Exodus, Job, Esther-Greek, and Baruch retain Brenton's native LXX chapter/verse structure, which differs from BSB/WEB in these books (reordering and/or length, not just numbering) | ebible.org | Public Domain |
Septuagint, Greek text (Swete edition, Cambridge 1887β1894) β Genesis through Malachi plus Apocrypha, Theodotion Daniel/Susanna/Bel; same Psalms remap and native-structure caveats as the English Brenton text above. Word-level (surface form only, no lemma/Strong's/morphology), powers get_interlinear alongside the Hebrew/Aramaic OT and Greek NT |
Open Greek and Latin Project / First1KGreek, via github.com/nathans/lxx-swete | CC BY-SA 4.0 |
| 613,690 original-language words: Greek NT + Hebrew/Aramaic OT with lemmas, Strong's, morphology, glosses, semantic domains | MACULA (Clear-Bible/Biblica) | CC BY 4.0 |
| ~345,000 ranked cross-references | openbible.info | CC BY |
| ~4,800 people/places/events/groups + 53,000 verse links | Theographic Bible Metadata | CC BY-SA 4.0 |
| Six PD classics: Augustine's Confessions, Imitation of Christ, Pilgrim's Progress, Practice of the Presence of God, Julian's Revelations, Chesterton's Orthodoxy | Project Gutenberg | Public Domain |
| The Apostolic Fathers, ten works: 1 & 2 Clement, Epistle of Barnabas, Polycarp to the Philippians, Martyrdom of Polycarp, Epistles of Ignatius (shorter recension), Martyrdom of Ignatius, Epistle to Diognetus, Pastor of Hermas, Fragments of Papias | ANF (Roberts-Donaldson-Crombie), Project Gutenberg #77576 | Public Domain |
Irenaeus: Against Heresies, Books IβV + Fragments β 806 sections addressed as IREN-AH<book>.<chapter>.<section> so standard citations (AH 3.3.4) resolve directly; 1,598 tier-1 scripture citations |
ANF vol. I (Roberts-Rambaut), Wikisource transcription | Public Domain |
| Justin Martyr: First Apology, Second Apology, Dialogue with Trypho, Martyrdom of Justin β 423 sections, ~408 tier-1 citations | ANF vol. I, Wikisource transcription | Public Domain |
| Tier-1 citation graph: scripture citations extracted from the translators' own footnotes across the patristic shelf (see DESIGN.md Β§4) | β | β |
| Versemap: 988 empirically derived MT/NA β English verse alignments across 31 books (Joel 2β4, Malachi 3β4, Hosea, Isaiah 64, Kings/Chronicles/Nehemiah seams, 3 John, Acts 19, Rev 12β¦), gloss-validated; plus the Psalms superscription offsets | derived from corpus | β |
Research outputs layer (layer='output'): Layer 0 corpus surveys + Layer 2 research briefs for potter-and-clay, living water, wilderness β searchable, embedded, with draws_on links back to their grounding refs |
generated in-project | β |
| ~112,400 embeddings (verse/window/paragraph) for semantic + hybrid search across every layer | bge-small-en-v1.5, generated locally | β |
All in one SQLite file (db/bible.db, ~230MB) with FTS5 full-text search. Prose works are addressed as WORK.chapter.paragraph. See DESIGN.md for the architecture rationale.
Tools
get_passage(reference, version="BSB")β Bible text for a reference, e.g.John 3:16,John 3:16-18,Genesis 1. Versions: BSB, WEB (Apocrypha requiresversion="WEB").search(query, version="BSB", book="", limit=20)β Full-text search, stemmed and ranked (BM25). Supports quoted phrases and AND/OR/NOT, e.g.faith AND works NOT law.versionalso takes any prose work id. Note: stemming conflates related surface forms (e.g. "desert" also matches "deserted") β quote exact phrases or add AND-terms to disambiguate.semantic_search(query, top_k=12, kind="", hybrid=True)β Meaning-based search across the whole corpus (scripture + prose), hybrid-fused with keyword search (RRF) by default. Finds passages on a theme even with no shared words, e.g. "divine self-emptying".kindoptional: verse | window | paragraph.find_similar(reference, top_k=10)β Nearest passages by embedding to a given verse or prose paragraph, across scripture, Apocrypha, and the classics. Powers parallel-finding across corpus layers.word_study(query, language="", limit=15)β Original-language word study by Strong's number (zero-padding optional), lemma (pointed or unpointed), Hebrew/Aramaic transliteration (e.g.miqweh, macrons optional), or English gloss. Returns occurrence counts, gloss range, book distribution, and sample verses. Lettered homograph variants (e.g. H4723 vs H4723a β same written form, different word) are surfaced together.languageoptional: grc | hbo | arc.get_interlinear(reference)β Word-by-word original language for a verse or short range: surface form, lemma, Strong's, gloss, morphology (Hebrew/Aramaic OT, Greek NT). Versemap-corrected across all books, not just Psalms. For OT verses also shows Septuagint Greek surface text where available (no lemma/Strong's/morphology in that source).get_cross_references(reference, limit=20)β Cross-references for a verse (OpenBible.info, ranked by community votes), with the target text included.get_citations(reference, limit=20)β Where a verse is cited by name in the patristic corpus, extracted from the translators' own footnotes (tier 1). Complementsget_cross_references(scriptureβscripture); this is patristic textβscripture. Coverage is sparse by design β an empty result doesn't mean uncited; full-textsearchwithin the patristic works is the thorough probe.get_entity(name, entity_type="")β Look up a biblical person, place, event, or people group by name (Theographic knowledge graph); returns details and where they appear.entity_typeoptional: person | place | event | people_group.entities_in_passage(reference)β People, places, and events linked to a verse or chapter, e.g.Genesis 14.read_work(work, chapter=1, start=1, end=5)β Read a prose work by paragraph range (CONFESSIONS, IMITATION, PILGRIM, PRESENCE, JULIAN, ORTHODOXY, 1CLEMENT, BARNABAS, and others β seecorpus_info()for the full list). Usesearch(version=<WORK>)to find passages first.compare_versions(reference)β A verse or short range in BSB and WEB, side by side.corpus_info()β What's in the corpus: documents, layers, licenses, and counts.
Prompts
The server also exposes the synthesis pipeline as MCP prompts, generated from .claude/skills/ (the source of truth): corpus_survey(theme) β Layer 0 raw reading discipline; corpus_composer(theme) β Layer 2 research-brief composition. Any MCP client that installs bible-mcp gets the discipline bundled with the data.
Setup
pip install -r requirements.txt # core: just `mcp`
pip install fastembed numpy # optional semantic tier (semantic_search, find_similar)
python3 scripts/build_db.py # rebuild db from data/sources (optional; db ships built)
python3 scripts/embed.py # regenerate embeddings (optional; ships built; resumable)
The first semantic query downloads the embedding model (~65MB, one time). Without fastembed/numpy installed, all non-semantic tools work normally. See DESIGN.md for architecture decisions (model choice, chunking, hybrid retrieval).
Claude Desktop / Cowork β add to MCP config:
{
"mcpServers": {
"bible-mcp": {
"command": "python3",
"args": ["/path/to/bible-mcp/server.py"]
}
}
}
Layout
data/sources/ raw acquired sources (immutable; re-derive, never edit)
data/versemap.tsv derived MT/NA <-> English verse alignments
data/additions-*.json prepared incremental ingestions (applied via scripts/ingest_additions.py)
scripts/ schema.sql, lib_refs.py, build_db.py, build_versemap.py, align_splits.py, ingest_additions.py
db/bible.db the built corpus (SQLite + FTS5)
outputs/ synthesis-pipeline artifacts (Layer 0 surveys, Layer 2 briefs, reports)
.claude/skills/ corpus-survey + corpus-composer (pipeline skills; source for MCP prompts)
server.py MCP server (FastMCP, read-only on the db)
Public edition
This is a non-commercial public resource. Licensing is layered β sources keep
their own licenses (all PD / CC BY / CC BY-SA); the code is PolyForm Noncommercial
1.0.0; the compilation and derived data (versemap, citation graph, embeddings,
outputs layer) are CC BY-NC 4.0. Full details: LICENSE.md, attributions in
NOTICE.md.
Three ways to use it:
- Remote (no install) β add the hosted endpoint as a custom connector in any
MCP client (Claude: Settings β Connectors β Add custom connector):
https://bible-mcp-server.fly.dev/mcp - Local (stdio) β clone, download
db/bible.dbfrom the latest GitHub Release (or rebuild fromdata/sources/), add the config above. - Self-host β
Dockerfileships the Streamable-HTTP server; seeDEPLOY.md.
Design notes
- Canonical addressing: OSIS-style refs (
Gen.1.1) everywhere; every table keys on them. - Provenance: every document row carries source, license, and license tier (A=free, B=share-alike, C=non-commercial, D=closed β we are non-commercial, so C is usable).
- The 16 verses "missing" from BSB (Matt 17:21, John 5:4, Acts 8:37β¦) are the standard critical-text omissions, not bugs.
- Versification:
versemap(all books) +psalm_offsets(superscriptions) align MACULA's MT/NA numbering to English. Both derived empirically from the corpus's own two witnesses and validated by gloss-text overlap; the table schema is TVTMS-compatible so the STEPBible data can extend it to other traditions (LXX, Vulgate) later. - Ignatius ships in the shorter (Middle) recension only; the ANF longer recension is a later expansion and would duplicate every chapter in search.
- The research outputs layer is generated, clearly tagged (
layer='output'), and can never be confused with primary sources;draws_onlinks tie each artifact to its grounding refs. - Next per ROADMAP.md: Irenaeus (source acquisition), tier-2 citation shingling (three confirmed footnote-index misses as fixtures), TVTMS proper.
Install
Add bible mcp to your client. Pick the one you use.
claude mcp add --transport http bible-mcp https://bible-mcp-server.fly.dev/mcpcodex mcp add bible-mcp --url https://bible-mcp-server.fly.dev/mcp{
"mcpServers": {
"bible-mcp": {
"url": "https://bible-mcp-server.fly.dev/mcp"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"bible-mcp": {
"type": "http",
"url": "https://bible-mcp-server.fly.dev/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"bible-mcp": {
"url": "https://bible-mcp-server.fly.dev/mcp"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"bible-mcp": {
"serverUrl": "https://bible-mcp-server.fly.dev/mcp"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
Score
39 / 100
Incomplete
- Documentation21/25
- Maintenance25/25
- Trust6/20
- Capability0/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 26 days ago
- Has a release history
- Repository is not archived
- No licence detected
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 6 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint β no local install
Version history
| Versions | Published |
|---|---|
| 0.11.0Latest | Aug 6, 2026 |
| 0.10.0 | Aug 4, 2026 |
| 0.9.1 | Aug 4, 2026 |
| 0.9.0 | Aug 3, 2026 |