VineVerse

Bible MCP server

Connect an AI assistant straight to a knowledge graph of the Bible. It can then look up passages, trace cross references and walk relationships itself, rather than guessing from memory. Free, keyless, nothing to install. 31,102 verses, 341,289 cross references, 3,009 people and 1,342 places, over fifteen tools.

What you can ask it

Every one of these is a question the server can answer from the data rather than from a model’s recollection. A model asked about Scripture without tools will answer confidently either way; with these it can check.

  • Who is mentioned in John 3, and where else does each of them appear?
  • Find every place within 50km of Jerusalem, nearest first.
  • Trace Ruth’s line of descent down to David.
  • What does the Hebrew behind “In the beginning God created” actually say, word by word?
  • Which chapters cross-reference Isaiah 53 most heavily?
  • Show me every verse that mentions a vineyard.
  • Which of the 613 commandments are stated in Leviticus 19?
  • What was happening in the same epoch as the reign of Hezekiah?
  • Give me every passage Nave’s Topical Bible files under mercy.
  • How many separate people in the Bible are called Zechariah?
  • Which two books of the Bible reference each other most?
  • What are the coordinates of Capernaum, and does anyone dispute them?

The answers come back as structured data with the source and licence attached, not as prose for the model to paraphrase.

Connecting

Two kinds of client ask for two different things. An MCP client speaks a protocol: it posts to one endpoint and asks it what tools exist. An OpenAPI client wants a document: it appends /openapi.json to whatever base you give it and reads the tools out of the file. Both are served here, at different addresses. Handing one the other’s address is the mistake worth anticipating, because it surfaces as a 404 rather than as an explanation.

MCP clients

Claude Desktop, Cursor, VS Code, Zed, and anything else that speaks the protocol.

{
  "mcpServers": {
    "vineverse": {
      "type": "http",
      "url": "https://vineverse.bible/api/mcp"
    }
  }
}

Claude Code can add it in one command instead:

claude mcp add --transport http vineverse https://vineverse.bible/api/mcp

type is redundant for clients that work the transport out from url, and required by the ones that do not. Stating it costs a line and removes a class of silent failure.

OpenAPI tool servers

Open WebUI, and anything that asks you for a schema URL.

URL
https://vineverse.bible/api/v1
Auth
None

Auth is the field you have to change. Several clients, Open WebUI among them, default to expecting a bearer token and will ask you for a key; there is none to give, and left at that default it is the difference between the whole toolset appearing and nothing appearing. The document declares security: [], meaning no scheme is required rather than unstated, but that is a statement a client is free to ignore.

If yours wants the schema URL itself rather than a base to append to, it is at /api/v1/openapi.json, also served from /openapi.json. Every operation is named to match its MCP tool, so the same capabilities arrive under the same names whichever way you come in.

Anything else

Plain HTTP, from a shell or from any language.

curl https://vineverse.bible/api/v1/passage/John.3.16

Every endpoint is a GET and needs no key. The Bible API lists them all.

Stateless Streamable HTTP. No key, no account, nothing to install. Every protocol revision from 2024-10-07 through 2025-11-25 is served from the same endpoint, and a client that asks for something newer is negotiated down to 2025-11-25 rather than refused.

Also listed in the official MCP registry as bible.vineverse/vineverse, and on Smithery. Both point back to the same endpoint above; there is nothing different about connecting through them.

Tools

get_stats
The catalogue: every collection, its size and what it holds.
list_documents
Page through any collection: events, epochs, themes, commandments, lexemes.
search_concepts
Find people, places, themes, lexemes and the rest by name, description, tag or path.
search_scripture
Full-text search across all 31,102 verses.
get_passage
A verse, range or chapter, with the people, places and themes it touches and what is recorded there.
get_interlinear
The Hebrew, Aramaic or Greek behind the English, word by word, with morphology and Strong’s numbers.
find_cross_references
Cross references ranked by crowd support: the 20-votes-and-up subset.
get_entity
Any document, with typed relations in both directions, and its full text on request.
get_family
A person’s parents, children, siblings and spouses.
find_places_near
Biblical places within a radius, nearest first, with distances.
get_connections
The cross-reference corpus in aggregate: hub chapters, book-to-book flows.
get_graph_neighborhood
Everything within N hops of a document, with the edges.
get_vocabulary
What each relation predicate means, and the 66-book canon table.
get_tags
The tag vocabulary, with document counts.
get_changelog
When the data was last ingested, and what changed.
get_status
Whether the service is up, its measured uptime, and which datasets this deployment has.
get_support
Who runs the site, what it costs to run, and how to help fund it.

Questions

How do I connect Claude to a Bible MCP server?
Paste the mcpServers block above into Claude Desktop’s configuration file, or run the claude mcp add one-liner in Claude Code. There is no account step in between, because the endpoint is public.
Does it need an API key?
No. There is no key to issue, no account to hold one and no rate-limit tier. If a client asks you for a token, set its auth type to None. The prompt is the client’s default, not a requirement from here. There is one ceiling, and it is an abuse backstop rather than a quota: 600 requests a minute from a single address, published on every response as X-RateLimit-Limit. Nothing you can do with these tools comes close to it.
Which Bible translation does it serve?
The Berean Standard Bible, which is public domain, in full: all 31,102 verses with paragraphing, poetry lineation, section headings and the words of Christ preserved. One translation, not a choice of several.
Can I use it with ChatGPT, Cursor or Open WebUI?
Yes. Cursor and VS Code speak MCP and take the same config block. ChatGPT and Open WebUI want an OpenAPI document instead; point them at https://vineverse.bible/api/v1 with auth set to None. The operation names match the tool names, so both routes give you the same fifteen capabilities.
Is it free, and can I build on the data?
Free, and yes. The text is public domain; nearly all the data is CC BY 4.0, which needs attribution. The 450 events under /sa/ are CC BY-SA 4.0, which is viral, so see attribution before you redistribute.
Does it work offline, or do I need to run a server?
Neither. It is hosted here over HTTP, so there is nothing to install and nothing to keep running. That also means it needs a network connection. There is no stdio build.

If it does not connect

404 on /api/mcp/openapi.json
An OpenAPI client pointed at the MCP endpoint. MCP has no schema document, because tools are discovered by asking the endpoint, so there is nothing to serve there. Use the v1 base above instead.
The client asks for an API key
Set its auth type to None. There is no key to issue and no account to hold one, so any value you invent will be ignored and any prompt you cannot dismiss is the client’s own default rather than a requirement from here.
405 on GET /api/mcp
Correct, and not a fault. The endpoint answers POST; opening it in a browser will always show this. Nothing needs fixing.
Nothing appears, and no error either
Check for a trailing slash. /api/mcp/ answers with a 308 to the unslashed path, which most clients follow and a few do not.

Two things worth telling your assistant

Cross references record that two passages are connected, never why. The corpus carries no relationship type, so a model should not present a connection as a claim about meaning that the data does not make.

Relations are stored one-directional, and the one that catches people is family. There is no child-of edge anywhere in the corpus, not a rare one but none at all, so a person’s own parent-of relations are their children. Read them as parents and the family tree comes out upside down. get_family exists to do that inversion; a model reading raw relations off get_entity will not do it on its own.

Two collections also carry the assumptions of the sources they came from. Epoch dates are Ussher’s chronology, one seventeenth-century reckoning rather than a scholarly consensus, and themes are Nave’s Topical Bible of 1897, whose groupings are Nave’s own editorial judgement. Both are served as bare structured data, so a model has nothing in the payload to tell it either is interpretive.

The server says the first two of these in its own instructions, but a client that ignores instructions will never show them to the model.

Most of what comes back is CC BY 4.0. The 450 events under /sa/, and the source record describing the dataset they came from, are CC BY-SA 4.0, which is viral. A response about one document carries licence.document naming the licence that actually applies; a listing or a search covers many documents at once, so there each share-alike entry is flagged shareAlike: true instead. Trust either over the blanket line beside it. See attribution. There is a plain Bible API too if you would rather call it directly.

VineVerse is free, keyless and funded by donations: what it costs to run, what it has taken in and where the surplus goes are itemised on /support, which is also what the get_support tool and the vineverse://support resource answer from. Nothing is paywalled, and giving buys no feature.