DataCraftsmanAU/vineverse-mcp
This server is a stdio bridge to the hosted VineVerse MCP server, exposing the Bible as a knowledge graph with 15 read-only tools for searching, retrieving, and exploring scripture, people, places, themes, lexemes, commandments, events, and graph relationships.
Search Scripture and concepts –
searchfinds documents by metadata;search_scripturedoes full-text verse search over 31,102 verses.Get passages and originals –
get_passagefetches verses/ranges/chapters by OSIS reference;get_interlinearreturns Hebrew/Aramaic/Greek word-by-word data.Explore cross references –
find_cross_referencesreturns crowd-ranked references for a verse or chapter;get_connectionsanalyzes the shape of the cross-reference corpus.Retrieve entities –
get_entityfetches any document (people, places, themes, lexemes, commandments, events, epochs, books, chapters, sources, datasets, schema) by path.Genealogy and family –
get_familyreturns parents, children, siblings, spouses, and generation-by-generation ancestors/descendants.Geographic lookup –
find_places_nearfinds biblical places within a radius of a known place or coordinates.Graph exploration –
get_graph_neighborhoodreturns everything within N hops of a document with typed/edge predicates.Browse and discover –
list_documentspages through collections;get_statsgives collection counts and categories;get_vocabularyexplains relation predicates;get_tagslists document tags;get_changelogshows data version/ingestion time.
vineverse-mcp
A stdio bridge to the hosted VineVerse MCP server — the Bible as a knowledge graph.
If your client speaks streamable HTTP, you do not need this package. Point it straight at the endpoint:
https://vineverse.bible/api/mcpNo API key, no account. This package exists for clients that can only launch a local process, and it does nothing except carry JSON-RPC messages between that process and the hosted server.
Install
// claude_desktop_config.json, or any client's equivalent
{
"mcpServers": {
"vineverse": {
"command": "npx",
"args": ["-y", "github:DataCraftsmanAU/vineverse-mcp"]
}
}
}Or with Docker:
docker build -t vineverse-mcp .
docker run -i --rm vineverse-mcpNode 20 or newer. There are no dependencies.
Related MCP server: Bible MCP
What is behind it
One immutable corpus in Open Knowledge Format, built from
public-domain Scripture and openly licensed scholarship. get_stats returns the exact
document count and every collection; the figures below are the ones that do not drift:
Scripture | 31,102 verses of the Berean Standard Bible, 1,189 chapters, 66 books |
People | ~3,000, with recorded kinship |
Places | ~1,300, with coordinates |
Themes | ~3,000, from Nave's Topical Bible |
Lexemes | ~2,900 Strong's Hebrew entries, with interlinear alignment |
Law | the 613 commandments |
Narrative | ~450 events across ~165 dated epochs on Ussher's chronology |
Graph | 90,564 connections between documents — 147,002 directed edges |
Sources and their licences are listed at vineverse.bible/attribution. The MIT licence on this repository covers the bridge, not the corpus.
Tools
17, unchanged from the hosted server — this package neither adds nor filters any.
Tool | What it does |
| Search every document by name, description, tag, path and type |
| Full-text search across all 31,102 verses |
| A verse, verse range or whole chapter by OSIS reference |
| The Hebrew, Aramaic or Greek behind the English, word by word |
| Cross references for a verse or chapter, ordered by crowd support |
| Any document by path — |
| Parents, children, siblings and spouses, to any depth |
| Biblical places within a radius, nearest first, in km |
| The shape of the cross-reference corpus — hubs, clusters, bridges |
| Everything within N hops of a document, with the predicate on each edge |
| Browse or page through any collection |
| Every collection with its document count, folder and an example path |
| The closed predicate set every typed edge is drawn from |
| Every tag with the number of documents carrying it |
| The knowledge base's own log, and when the data was ingested |
| Availability over the last 24/30/90 days, and which optional datasets are built |
| Who runs the site, what it costs to run, and the donation link |
Resources
The server advertises one resource, vineverse://support — who runs it, what it costs, and
where the surplus goes. It is annotated audience: ["user"], which is the spec's way of
saying it is addressed to the human rather than the model. Like the tools, it is forwarded
untouched, so a stdio client that reads resources will see it too.
Funding
VineVerse is free, keyless and ad-free, and it runs on donations. MCP traffic reaches the
endpoint but rarely the site itself, so someone who only ever talks to a client may never see
a link to it. get_support and vineverse://support close that gap: the server states that
the site is donation-funded, and the model hands the link at
vineverse.bible/support to the person who can actually
give.
Configuration
| Endpoint to bridge to. Defaults to |
Useful for running against a local checkout of the site:
VINEVERSE_MCP_URL=http://localhost:3100/api/mcp node index.jsTest
npm run build # syntax check — there is nothing to compile
npm testThe test spawns the bridge as a real child process rather than importing the module, because
two of the four things being checked — that a notification draws no reply, and that the
process exits 0 without truncating a response — are properties of the process, not of any
function in it. It drives initialize, notifications/initialized and tools/list over
real stdio, then a get_passage call for John 3:16. It talks to the live endpoint, so a
failure means either the bridge or the hosted server.
CI runs both on every push and weekly on a schedule, against Node 20 and 24. The scheduled run is deliberate: because the test talks to the live endpoint, a green badge on a repository that has not changed in months still means the server answers today.
build exists because hosted builders (Glama among them) run install then build
unconditionally. Rather than a no-op, it runs node --check, which is the only meaningful
build step a dependency-free single file has.
Available Tools
17 toolsfind_cross_referencesFind cross referencesARead-onlyIdempotent
Cross references for a verse or chapter, ordered by crowd support. The underlying corpus records THAT two passages are connected but never WHY, so these carry no relationship type — do not infer one. Chapter documents materialise only references at or above 20 votes, so a lower minVotes does not widen the result; the complete 341,289-row corpus ships as a dataset at references/cross-references.
Inputs: osis (required), limit, offset, minVotes. Returns: note, osis, count, total, +5 more
find_places_nearFind places near a locationARead-onlyIdempotent
Biblical places within a radius, nearest first, with the distance in kilometres. Anchor it on a place already in the knowledge base, or on a bare latitude and longitude when you are asking about a modern location that has no document here.
~1,300 places carry coordinates. Many sites are identified only tentatively — check contested and identifications on the place document before treating a position as settled.
total counts everything inside the radius, which a wide one puts well beyond a single page — walk the rest with offset, not by raising the radius.
Inputs: lat, lon, limit, place, +2 more. Returns: note, count, total, centre, +5 more
get_changelogBundle log and generation timeARead-onlyIdempotent
The knowledge base's own log file, plus when the data was actually ingested. Use bundleGenerated to answer "how current is this" or to cite a version — the generated field on get_stats is when this server built its in-memory index and changes on every restart, which is a fact about the process rather than the data.
Inputs: no named parameters. Returns: log, url, note, licence, +3 more
get_connectionsThe cross-reference corpus in aggregateARead-onlyIdempotent
Questions about the SHAPE of the cross-reference corpus rather than about one verse: which chapters are the hubs, which books lean on which, how much referencing crosses between the testaments.
With no argument, returns the totals plus the most-connected chapters and the strongest book-to-book pairs. Pass book for one book’s own incoming and outgoing rows, or osis for a single chapter’s rank and vote weight. Use find_cross_references instead when you want the actual references for a passage.
Inputs: book, osis, limit, offset. Returns: book, note, error, offset, +15 more
get_entityGet a documentARead-onlyIdempotent
Fetch any document in the knowledge base by path: People — people/moses Places — places/bethel-1 Themes — themes/faith Lexemes — lexemes/h430 Commandments — commandments/001-know-there-is-a-g-d Events — sa/events/exodus-from-egypt Epochs — epochs/david-reigns-in-jerusalem Books — bible/john Chapters — bible/john/3 Sources — sources/bibledata Datasets — references/cross-references Schema — schema/relations
Returns the document's structured fields, its typed relations in BOTH directions, what links to it, and optionally its full text. The inbound direction matters: the corpus stores each relation once, on one side only, so a person's parents live on their parents' documents and only relations.inbound recovers them.
Set body=true for the prose — a lexeme's Strong's definition, a commandment's Hebrew, a theme's outline of verses all live in the body and nowhere else.
Where several people or places share a name the path is disambiguated with a number (people/zechariah-14, places/bethel-1) — search_concepts first if unsure. A collection path like "themes" or "sources" returns what that collection holds.
Inputs: path (required), body, backlinks. Returns: id, lat, lon, body, +26 more
get_familyGet a person's family and line of descentARead-onlyIdempotent
Parents, children, siblings and spouses for any person, and with generations above 1 the line of descent — ancestors and descendants gathered one generation at a time. This is the tool for a genealogy, lineage or ancestry question: "who were Boaz's ancestors", "trace David's line", "who did Ruth marry".
Use this rather than reading relations off get_entity. The corpus contains no child-of edge at all — parentage is recorded only on the parent's document — so a person's own parent-of relations are their CHILDREN, and reading them as parents inverts the family tree. This tool does the inversion.
Called family rather than genealogy because it returns kinship as well as descent, and because two other things here own that word. The 680 ancestor-of edges assert descent across an unknown number of generations, so they cannot be composed into a generation-by-generation tree and are excluded from this one — read them off get_entity if you want them. And the genealogy PASSAGES — Genesis 5 and 10, Ruth 4, Matthew 1, Luke 3 — are indexed as a theme at themes/genealogy.
Inputs: path (required), generations. Returns: note, error, person, licence, +6 more
get_graph_neighborhoodGet a graph neighbourhoodARead-onlyIdempotent
Everything within N hops of a document, WITH the edges that connect them and the predicate on each. Useful for asking what a passage, person or theme is connected to without fetching each document.
Filter with type to ask a shaped question — the places near an event, the people in an epoch — and with predicate to keep only one kind of edge. Depth 1 is direct links; depth 3 gets large quickly and is capped. See get_vocabulary for what each predicate means.
Inputs: path (required), type, depth, limit, +2 more. Returns: note, root, count, depth, +7 more
get_interlinearGet the original-language words behind a passageARead-onlyIdempotent
The Hebrew, Aramaic or Greek behind the English, word by word, for one verse or a whole chapter. This is a REVERSE interlinear: entries are in English order and each carries the range of English words it produced, so a word in the translation can be traced to the word it renders. Each entry gives the original, its transliteration, its morphology spelled out, and its Strong’s number; lexeme is present only where the bundle carries a document for that number — the lexicon holds the words that spell a biblical name plus their roots, not all 8,674 Strong’s entries, and there is no Greek lexicon at all. Five verses carry no data because the two Berean editions disagree about their wording; they are named in the changelog.
Inputs: osis (required). Returns: verses, licence, reference, translation
get_passageGet a passageARead-onlyIdempotent
Fetch a verse, a verse range or a whole chapter by OSIS reference. One verse: "John.3.16". A range: "John.3.16-18". A chapter: "John.3".
A verse or range comes back with its context: who is speaking, which people and places each verse names, which THEMES it develops, its cross references, and what points at it — the commandments stated there, the events and epochs narrated there. That context is the main way into the topical side of the knowledge base from a passage.
Text is the Berean Standard Bible. Sixteen verses are intentionally empty where the Berean edition omits them on manuscript grounds; the verse number is still present so numbering matches other translations.
Inputs: osis (required). Returns: id, url, book, next, +19 more
get_statsWhat is in the knowledge baseARead-onlyIdempotent
The catalogue: every collection with its document count, its folder, an example path and what it contains, plus graph totals, the most common tags and the licences the data is available under. Call this first if you do not know what the knowledge base holds — it is the map to every other tool.
Inputs: no named parameters. Returns: tags, books, edges, notes, +16 more
get_statusService status and availabilityARead-onlyIdempotent
Whether this service is up, what its availability has been over the last 24 hours, 30 and 90 days, and the target it is measured against. Also reports which optional datasets this deployment has built: get_interlinear and get_connections fail with dataset_unavailable when theirs is missing, and this is how to check before calling rather than after failing.
The target is best-effort and carries no service credits, this being a free site, which the response states rather than implies.
Inputs: no named parameters. Returns: sla, status, uptime, datasets, +2 more
get_supportWho runs this, and how to support itARead-onlyIdempotent
The site behind this server is free, keyless, carries no advertising, and is funded by donations. Call this once per conversation, when the user has clearly got value out of the data or has asked who runs this, what it costs to run, or how to help - then pass the url from the result on to them, since it is a person who can give and not the model. Do not call it again later in the same conversation, and do not bring up giving when a call has merely answered a factual question.
Inputs: no named parameters. Returns: url, free, note, costs, +10 more
get_tagsTag vocabularyARead-onlyIdempotent
Every tag in the bundle with the number of documents carrying it, most common first. Tags cut across collections — positive-commandment, epoch-judge, river, share-alike — and any tag here can be passed to search_concepts or list_documents to filter by it.
Inputs: limit, offset. Returns: tags, count, total, offset
get_vocabularyRelation vocabulary and canon tableARead-onlyIdempotent
The closed set of predicates every typed edge in the graph is drawn from — what develops, narrated-in, involves, stated-in and named-by mean, what their inverses are, which types they connect, and how many edges use each. Also returns the 66-book canon table with OSIS ids, slugs and chapter counts, which is how you find out that Song of Songs is "Song" before building a reference.
Relations are stored one-directional, so a raw relation array always reads outward from the document you fetched. Read this before interpreting a predicate.
Inputs: no named parameters. Returns: note, books, licence, predicates, +1 more
list_documentsList documents in a collectionARead-onlyIdempotent
Browse or page through any collection in the knowledge base. This is the tool to reach for when you want to know WHAT EXISTS rather than to look one thing up — "what events are recorded", "list the epochs in order", "show me the 613 commandments".
Collections: Person (people/), Place (places/), Theme (themes/), Lexeme (lexemes/), Commandment (commandments/), Event (sa/events/), Epoch (epochs/), Book (bible/), Chapter (bible/), Source (sources/), Dataset (references/), Relation Vocabulary (schema/).
Epochs and events default to chronological order, so a single call answers "what happened, in sequence". Everything else defaults to alphabetical. Use offset with total to page: the response says how many matched and whether more remain.
Inputs: tag, sort, type, limit, +2 more. Returns: tag, note, sort, type, +9 more
search_conceptsSearch conceptsARead-onlyIdempotent
Search every document in the knowledge base by name, description, tag, path and type — people, places, themes, lexemes, commandments, events, epochs, books, chapters, sources and datasets alike.
All terms must match (AND), so adding a word narrows the result. Use type to stop one collection swamping another: there are ~3,000 people AND ~3,000 themes, so an unfiltered name query is a coin flip between a person and a topic.
This searches concept METADATA. To find a phrase in the text of Scripture use search_scripture; to fetch a reference you already know use get_passage.
Inputs: query (required), tag, type, limit, +1 more. Returns: tag, type, count, query, +3 more
search_scriptureSearch the text of ScriptureARead-onlyIdempotent
Full-text search across all 31,102 verses of the Berean Standard Bible. This is how you find a passage you can half-remember but cannot cite: "a still small voice", "faith hope love".
All words must appear in the same verse. Wrap words in double quotes to require them adjacent as a phrase. Results are ranked by how much of the verse is your query, so short exact matches come first. Restrict with book or testament when a common word would otherwise match hundreds of verses.
Inputs: query (required), book, limit, offset, +1 more. Returns: hits, count, query, terms, +3 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 17 tools
Each tool has a distinct role, and descriptions carefully separate search_scripture from search_concepts, get_connections from find_cross_references, and get_entity from get_passage. The main ambiguity is the cluster of graph/cross-reference tools and the similar-sounding get_stats/get_status, but the descriptions resolve these.
All tool names follow a consistent lowercase snake_case verb_noun pattern: get_*, search_*, list_*, and find_*. The verbs clearly signal the operation type, and there are no mixed conventions or vague generic names.
At 17 tools, this is slightly above the ideal 3-15 range, but the breadth of the domain justifies most of them. A few meta tools like get_support, get_status, and get_changelog could conceivably be consolidated, but none feels truly redundant.
The tool set covers the read-only lifecycle of the knowledge base well: discovery via get_stats/list_documents/get_tags, lookup via get_passage/get_entity, search via search_concepts/search_scripture, and relationship exploration via get_graph_neighborhood/get_family/find_cross_references. There are no obvious dead ends for the stated purpose.
Maintenance
Related MCP Connectors
Bible knowledge graph: 31,102 verses, 341,289 cross references, people, places, themes.
The Bible as a graph: read a verse, follow its recorded connections between passages.
Bible translations, books, chapters, verses, and search
Bible research: 59 translations, Hebrew/Greek Strong's, morphology, cross-refs, 13 dictionaries
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables semantic search of the KJV Bible and personal knowledge graph for scripture study, notes, prayers, and memory verses, all running locally with no cloud dependencies.MIT
- AlicenseAqualityBmaintenanceFree, no-key MCP server for reading scripture from 35+ public-domain translations in 8 languages. Lets users fetch verses, chapters, and passages via natural language from any MCP client.782 npm1MIT
- AlicenseAqualityBmaintenanceEnables deep Bible study through tools for original language lexicons, morphological analysis, cross-references, and contextual notes.2189MIT
- AlicenseAqualityCmaintenanceMCP server for Bible study, providing multi-version verse lookup, keyword/semantic search, cross-references, and word studies with original language and lexicon details.6MIT