Bible Mcp

io.github.nirajagarwalPublished by GitHub account nirajagarwalv0.15.0Updated Oct 29, 2026

Bible corpus MCP server: scripture, Greek/Hebrew interlinear data, cross-refs, semantic search.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingKnowledge & MemoryAI & ML

Overview

AI-generated overview

Read-only Bible study server: scripture text, original-language word study, cross-references, entities, concepts and semantic search over a bundled corpus.

What you can do
  • Read passages in BSB and WEB and compare the two side by side
  • Search scripture and prose works by keyword with phrases and AND/OR/NOT, or by meaning with hybrid semantic search
  • Study original languages: word study by Strong's number, lemma or transliteration, plus word-by-word interlinear text
  • Look up cross-references, patristic citations, and people, places, events and theological concepts linked to a passage
  • Read prose works such as Augustine, à Kempis, Bunyan, Julian, the Apostolic Fathers and Easton's Dictionary by paragraph range
  • Inspect the corpus contents, layers and licenses
When to use it
Useful for study, teaching or research that needs Bible text, original-language detail, thematic or parallel passage finding, and patristic or classical cross-links in one place.
Requirements
Can be used as a hosted remote endpoint with no install, or run locally over stdio with Python and the mcp package; the optional semantic tier needs fastembed and numpy and downloads an embedding model (~65MB) on first use. The local route needs the prebuilt SQLite database (~400MB) or a rebuild from the source data. No accounts, keys or headers are declared.
Before you install
The server is read-only on its database, but the hosted endpoint sends your queries to a third-party service. Licensing is layered: sources are public domain or CC BY / CC BY-SA, the code is PolyForm Noncommercial and the compiled data is CC BY-NC 4.0, so commercial use is restricted. Citation coverage is sparse by design, and stemming can conflate related word forms.

Installation

In SourceWeft

  1. Open Bible Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.nirajagarwal%2Fbible-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "bible": {
      "type": "http",
      "url": "https://bible-mcp-server.fly.dev/mcp"
    }
  }
}

README

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.15)

DataSourceLicense
Berean Standard Bible (66 books)berean.biblePublic Domain
World English Bible, Ecumenical (83 books incl. Apocrypha)ebible.orgPublic 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.orgPublic 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 NTOpen Greek and Latin Project / First1KGreek, via github.com/nathans/lxx-sweteCC BY-SA 4.0
613,690 original-language words: Greek NT + Hebrew/Aramaic OT with lemmas, Strong's, morphology, glosses, semantic domainsMACULA (Clear-Bible/Biblica)CC BY 4.0
Brown-Driver-Briggs Hebrew and English Lexicon (1906, 9,290 entries) + Strong's Hebrew Dictionary (1890, revised, 8,674 entries) — full scholarly entries (etymology, sense divisions, verse citations) keyed by Strong's number, including BDB's own lettered homographs (e.g. H2617a "lovingkindness" vs H2617b "reproach" — genuinely different words, same spelling); surfaces in word_study alongside the existing short glossOpenScriptures HebrewLexiconCC BY 4.0 (markup; underlying BDB/Strong's text is Public Domain)
Abbott-Smith's Manual Greek Lexicon of the New Testament (1922, 517 entries) — same treatment for Greek NT wordsFirst1KGreek / Open Greek and Latin Project, via github.com/biblicalhumanities/Abbott-SmithPublic Domain
~345,000 ranked cross-referencesopenbible.infoCC BY
~4,800 people/places/events/groups + 53,000 verse linksTheographic Bible MetadataCC 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 OrthodoxyProject GutenbergPublic 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 PapiasANF (Roberts-Donaldson-Crombie), Project Gutenberg #77576Public 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 citationsANF vol. I (Roberts-Rambaut), Wikisource transcriptionPublic Domain
Justin Martyr: First Apology, Second Apology, Dialogue with Trypho, Martyrdom of Justin — 423 sections, ~408 tier-1 citationsANF vol. I, Wikisource transcriptionPublic 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 offsetsderived 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 refsgenerated in-project—
~112,400 embeddings (verse/window/paragraph) for semantic + hybrid search across every layerbge-small-en-v1.5, generated locally—
Easton's Bible Dictionary (1897 3rd edition, 2,491 entries) — a full corpus document like the PD classics above: searchable (search(version="EASTON")), readable (read_work("EASTON", ...)), embedded for semantic searchTheographic's structured JSON re-derivationPublic Domain
OT+NT concept graph: 5,718 concept nodes (theological themes + lexical keywords, seeded from Easton's Bible Dictionary) and ~175,000 typed/associated edges (broader/narrower/causes/part_of/symbol_of/fulfills/same_as/contrasts/associated) linking concepts to each other, to entities, and to verse anchors across both Testaments; ~440 typed edges hand-reviewed against cited evidence (Phase 5/6), each served with its reason, the rest mechanical associated overlap counts served with the shared verse or cross-reference behind them. Live via get_concept/concepts_in_passage/get_concept_relations, see DESIGN.md §5derived from corpus + Easton's Bible Dictionary—

All in one SQLite file (db/bible.db, ~400MB) 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 requires version="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. version also 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". kind optional: 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, a full scholarly lexicon entry when available (BDB/Strong's for Hebrew, Abbott-Smith for Greek — richer than the gloss, truncated to ~700 chars), and sample verses. Lettered homograph variants (e.g. H4723 vs H4723a — same written form, different word) are surfaced together. language optional: 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). Complements get_cross_references (scripture→scripture); this is patristic text→scripture. Coverage is sparse by design — an empty result doesn't mean uncited; full-text search within 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_type optional: person | place | event | people_group.
  • entities_in_passage(reference) — People, places, and events linked to a verse or chapter, e.g. Genesis 14.
  • get_concept(name, concept_type="") — Look up a theological concept or lexical keyword in the OT+NT concept graph (seeded from Easton's Bible Dictionary); returns its definition, verse anchors, same-as equivalents, instantiating entities, and a relation-count summary. Follows Easton's own "See X" cross-references (Righteousness → Justification). concept_type optional: theme | keyword. Also accepts a Strong's number.
  • concepts_in_passage(reference) — Theological concepts and keywords linked to a verse or chapter, e.g. Genesis 15. Complements entities_in_passage.
  • get_concept_relations(name, verb="", limit=20) — Typed relations for a concept: broader/narrower/causes/part_of/symbol_of/fulfills/same_as/contrasts, hand-reviewed against cited evidence, each with the reason (why:) it was assigned. Excludes the much larger mechanical associated tier by default — pass verb="associated" to include it, each edge shown with the shared verse or cross-reference that produced it.
  • read_work(work, chapter=1, start=1, end=5) — Read a prose work by paragraph range (CONFESSIONS, IMITATION, PILGRIM, PRESENCE, JULIAN, ORTHODOXY, 1CLEMENT, BARNABAS, EASTON, and others — see corpus_info() for the full list). Use search(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

bash
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:

json
{  "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 alignmentsdata/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.pydb/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:

  1. 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
  2. Local (stdio) — clone, download db/bible.db from the latest GitHub Release (or rebuild from data/sources/), add the config above.
  3. Self-host — Dockerfile ships the Streamable-HTTP server; see DEPLOY.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_on links 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.

Source: README.md at commit aa35075

Tools

16

get_passage

Get Bible text for a reference like 'John 3:16', 'John 3:16-18', 'Genesis 1', or 'Tobit 4:5' (Apocrypha requires version='WEB'). Versions: BSB, WEB.

Parametersversionreferencerequired

get_cross_references

Cross-references for a verse (OpenBible.info, ranked by community votes), with the target text included. E.g. reference='Romans 5:12'.

Parameterslimitreferencerequired

get_entity

Look up a biblical person, place, event, or people group by name (Theographic knowledge graph). Returns details and where they appear. entity_type optional: person | place | event | people_group.

Parametersnamerequiredentity_type

entities_in_passage

List the people, places, and events linked to a verse or chapter, e.g. 'Genesis 14' or 'John 3:16'.

Parametersreferencerequired

get_concept

Look up a theological concept or lexical keyword in the OT+NT concept graph (~5,700 nodes seeded from Easton's Bible Dictionary — see DESIGN.md #5). Returns its definition (with a pointer to the full Easton entry), verse anchors, same-as equivalents, and entities that instantiate it (e.g. Abraham for Covenant). Easton cross-reference stubs are followed (Righteousness -> Justification). concept_type optional: theme | keyword. A Strong's number ('G225') also resolves directly to its keyword node. For typed relations to OTHER concepts (broader/narrower/ causes/part_of/symbol_of/fulfills/associated), use get_concept_relations(name).

Parametersnamerequiredconcept_type

concepts_in_passage

List theological concepts and lexical keywords linked to a verse or chapter via the OT+NT concept graph (seeded from Easton's Bible Dictionary), e.g. 'Genesis 14' or 'John 3:16'. Complements entities_in_passage (people/places/ events) with abstract themes and keyword nodes.

Parametersreferencerequired

get_concept_relations

Typed relations for a concept in the OT+NT concept graph: broader/narrower (taxonomy), causes, part_of, symbol_of, fulfills, same_as (alternate name or translation equivalent, e.g. Christ/Messiah), contrasts — each hand-reviewed against cited evidence and returned with that reason ('why:'), see DESIGN.md #5. Excludes the much larger 'associated' tier by default (~143,000 mechanical shared-evidence edges, mostly unreviewed) — pass verb='associated' for it; each associated edge shows the shared verse or cross-reference that produced it. verb optional: restrict to one verb (broader | narrower | causes | part_of | symbol_of | fulfills | same_as | contrasts | associated).

Parametersnamerequiredverblimit

compare_versions

Show a verse or short range in both BSB and WEB side by side.

Parametersreferencerequired

word_study

Original-language word study across the whole Bible. Query by Strong's number ('G26', 'H2617', zero-padding optional — 'H953' works), lemma (pointed or unpointed: 'חֶסֶד' or 'חסד', accented or bare Greek), Hebrew/Aramaic transliteration ('miqweh' finds מִקְוֶה, macrons optional), or English gloss ('lovingkindness'). Returns occurrence counts, gloss range, book distribution, a full scholarly lexicon entry for the top-matching word (BDB and/or Strong's for Hebrew/Aramaic, Abbott-Smith for Greek, when available — richer than the gloss, truncated to ~700 chars), and sample verses. NOTE: homographs are split by letter-suffixed Strong's variants (e.g. H4723 'hope' vs H4723a 'gathering of waters' — same written form) — when a gloss range looks too narrow for a word you suspect is richer, probe the lettered variants; the output lists every variant lemma it finds under your query. Gloss-keyed queries match substrings and may conflate lemmas — prefer Strong's or lemma queries for exact counts. language optional: grc | hbo | arc.

Parameterslimitqueryrequiredlanguage

get_interlinear

Word-by-word original language for a verse or short range: surface form, lemma, Strong's, gloss, morphology (Hebrew/Aramaic OT, Greek NT). For OT verses also shows Septuagint Greek surface text where available (Swete edition — Genesis-Malachi plus Apocrypha, Theodotion Daniel/Susanna/Bel; no lemma/Strong's/ morphology in that source, surface form only). E.g. 'John 1:1' or 'Genesis 1:1-3'.

Parametersreferencerequired

read_work

Read a prose work from the corpus by paragraph range. Works: CONFESSIONS (Augustine), IMITATION (à Kempis), PILGRIM (Bunyan), PRESENCE (Brother Lawrence), JULIAN (Julian of Norwich), ORTHODOXY (Chesterton), 1CLEMENT (Clement of Rome), BARNABAS (Epistle of Barnabas). Chapters = books/chapters of the work; use search(version=<WORK>) to find passages first, or corpus_info() for the full list.

Parametersendworkrequiredstartchapter

find_similar

Find passages semantically similar to a given verse or prose paragraph ref — across scripture, Apocrypha, and the classics. E.g. 'Philippians 2:7' or 'JULIAN.27.2'. Powers parallel-finding across corpus layers.

Parameterstop_kreferencerequired

get_citations

Where a Bible verse is cited by name in the patristic corpus, extracted from the translators' own footnotes (tier 1). E.g. reference='Ephesians 5:21'. Complements get_cross_references, which links scripture to scripture; this links patristic text to scripture. COVERAGE NOTE: footnote extraction has known recall gaps — an empty result is normal and does NOT mean the verse is uncited; full-text `search` within the patristic works is the thorough probe (verbatim quotations are regularly found that the footnote index missed).

Parameterslimitreferencerequired

corpus_info

What's in the corpus: documents, layers, licenses, and counts.

Takes no parameters.

Version history

4
  1. v0.15.0LatestOct 29, 2026
  2. v0.14.1Sep 29, 2026
  3. v0.14.0Sep 28, 2026
  4. v0.12.0Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.