FLOGVIT.bible

io.github.flogvitPublished by GitHub account flogvitv1.1.0Updated Oct 29, 2026

Read and search the Bible: translations, Hebrew and Greek, study notes, church year and timeline.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingKnowledge & Memory

Overview

AI-generated overview

Read and search the Bible through bible.flogvit.com: open translations, Hebrew and Greek source texts, cross-references and study material.

What you can do
  • Read passages side by side in several editions, with optional translators' notes, and list the editions and their licences
  • Search verses by words or phrases, and find every verse containing a given Hebrew or Greek word
  • Read the original Hebrew or Greek word by word, with cross-references and chapter or book study material
  • Look up people, topics, stories, numbers, prophecies, gospel parallels and timeline events
  • Check the Bible references in a piece of text, and get the Church of Norway readings for a day
  • Fetch the daily verse
When to use it
Useful when an assistant should quote Bible text accurately instead of from memory, compare translations or the original languages, or answer study questions about people, themes, prophecies and history. Also handy for checking the references cited in a sermon or article.
Requirements
A remote Streamable HTTP endpoint; no account, key or authentication. Any MCP client that supports remote connectors can add the address.
Before you install
Quoted translations are CC BY 4.0, so the attribution and source line returned with the text must follow it wherever the text is placed. Word explanations for the original texts are written in Norwegian and may need translating. The server is read-only and stateless.

Installation

In SourceWeft

  1. Open FLOGVIT.bible 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.flogvit%2Fbible/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": {
    "flogvit-bible": {
      "type": "http",
      "url": "https://mcp.bible.flogvit.com/mcp"
    }
  }
}

README

bible.flogvit.com MCP server

Lets an AI assistant read and search the Bible on bible.flogvit.com: the open OSNB, OSNN and OSEN translations, the Hebrew and Greek source texts, and the site's study material. Every answer links back to the page it came from.

Address: https://mcp.bible.flogvit.com/mcp — Streamable HTTP, no account, no key.

Connect an assistant

The full guide, for every client and in all eight languages, is bible.flogvit.com/en/mcp. A browser that opens https://mcp.bible.flogvit.com/ gets the short version of it. Both are rendered from ../src/lib/mcp-info.ts and the mcp.* keys in ../src/lib/dictionaries-mcp.ts, and test/landing.test.ts holds the tool list there against tools/list.

Claude (desktop app and claude.ai): Settings → Connectors → Add custom connector. Paste the address, leave authentication empty.

ChatGPT: turn on developer mode under Settings → Apps & Connectors, then create a connector with the address and no authentication.

Claude Code:

sh
claude mcp add --transport http flogvit-bible https://mcp.bible.flogvit.com/mcp

Cursor (~/.cursor/mcp.json):

json
{ "mcpServers": { "flogvit-bible": { "url": "https://mcp.bible.flogvit.com/mcp" } } }

VS Code (.vscode/mcp.json):

json
{ "servers": { "flogvit-bible": { "type": "http", "url": "https://mcp.bible.flogvit.com/mcp" } } }

Then ask as you normally would — "what does John 3:16 say in the Greek?", "where does the Bible talk about forgiveness?", "who was Tamar?". The assistant picks the tools itself.

Without MCP — in a terminal, a script, or an agent that reads skills — the same tools are the command line client flogvit-bible, with a skill and a Claude Code plugin around it: ../cli/README.md.

The tools

ToolWhat it answers
get_passageOne or more passages, side by side in up to five editions, optionally with the translators' notes
search_bibleVerses containing all the given words, in one edition, optionally one book or testament
get_original_textThe Hebrew or Greek of a passage, word by word with explanations (in Norwegian)
search_original_wordEvery verse where a Hebrew or Greek word occurs
get_cross_referencesRelated passages for each verse
get_chapter_studySummary, context, key words, people, themes, stories, prophecies, parallels and timeline for a chapter
get_book_overviewAn introduction to a book
search_people, get_personPeople of the Bible, their family and key events
search_topics, get_topicStories, themes, prophecies and gospel parallels
get_daily_verseToday's verse
check_referencesEvery Bible reference in a piece of text — line, column, the verses, and a problem for one that does not exist
get_church_year_readingsThe Church of Norway's readings for a Sunday or feast day, by date or by the day's name (Norwegian, or English for the major feasts), optionally quoted
get_timelineTimeline events for a period, a span of years, or a person or place named in them; the Bible's timeline or the world's alongside it
get_propheciesProphecies made or fulfilled in a passage, or in a category, with their fulfilment and optionally both texts
get_storyA Bible story by name, where it is told, and the text
get_numberWhat a number means in the Bible and where it occurs; with no number, every number that has an entry
get_gospel_parallelsThe gospel parallels that cover a passage, every Gospel's passage side by side, optionally quoted one after the other
list_editionsThe editions and their licences
list_verse_mappingsThe 1158 verse numberings (KVN mappings) the mapping argument takes, found by edition name or language

References are read in English and Norwegian style alike — John 3:16-18, Joh 3,16.18, 1 Cor 13:4-7, Gen 1:1-2:3, several separated by ; — and book names in all eight site languages, plus the Norwegian letter names («Romerbrevet»).

Verse numbering. Every tool that takes or gives a verse reference has a mapping argument: an id from list_verse_mappings (english_kj, dnb2024_nb, …) or a short name (kjv, dnb2024). A reference is read in that numbering and the answer is numbered in it, so "Mal 4:5" with kjv is osnb's Malachi 3:23. The tools do no remapping of their own: a reference goes through mapChapter(), as /api/chapter?mapping= does, and an osnb address comes out through osnbToMapping(), the cross mapping /api/mappings/kvn/:id builds its verseMap from (src/lib/verse-mapper.ts). Unlike the API, which only knows the 13 named numberings, the MCP takes any of the 1158 mapping files. That is why the caches in verse-mapper.ts have a cap (32).

Quoted Bible text carries its source line. The translations are CC BY 4.0, and the attribution has to follow the text wherever the assistant puts it.

Releasing a new version

Every change a client can see — a tool added or removed, an argument, a description — is a release, and the directories that list the server have to follow it. They do not all get their data the same way:

DirectoryWhere its data comes fromWhat a release needs
MCP Registryserver.json, published by uspublish the new version
mcptry.comname, description and version copied from the registry every 30 minutes; the tool list from its own scheduled tools/list check of the live servernothing to submit — it follows the registry and the server
Glama, PulseMCPthe registrynothing
mcpservers.orga form submitted by hand once; the page text is a copy of websiteUrl (https://bible.flogvit.com/en/mcp)press Request update on the listing (no login, one click, sent at once) after the site is out
  1. In the PR that changes the tools, raise the version — SERVER_VERSION in src/server.ts and version in server.json, which test/landing.test.ts holds equal. The registry never accepts the same version twice. A new tool or argument is a minor version (1.1.0 → 1.2.0); a removed tool or argument a major one. Change description in server.json too if what the server does has changed: it is what every directory shows, and at most 100 characters.
  2. Merge. The orchestra's deployer rolls out bibel and bibel-mcp from the same commit.
  3. After the rollout, publish to the registry:
    sh
    cd mcp && bun --env-file=../.env scripts/listings.ts publish
    It refuses while the live server still runs another version or other tools, so it cannot announce what is not out. It logs in with gh auth token (gh must be logged in as flogvit; the namespace is io.github.flogvit) and needs nothing installed.
  4. Press Request update on https://mcpservers.org/servers/bible-flogvit-com-en-mcp. It is anonymous and takes effect at once, so press it only after the site is out — pressed earlier, they re-read the old page. Their review takes up to two weeks. The short description there is the one submitted in the form; whether Request update refreshes it too is not known. To change it, email [email protected].
  5. Check, about 30 minutes later:
    sh
    cd mcp && bun --env-file=../.env scripts/listings.ts check
    Every line should say ok. mcptry tools follows mcptry's own schedule and can lag; "Connect live" on its page refreshes it. mcpservers.org sits behind a Cloudflare check and cannot be read by the script: open the page and see that the tool list matches.

Where it is listed, and how to take it down

The namespace is GitHub (io.github.flogvit/…), not DNS (com.flogvit/…): flogvit.com's DNS is edited by hand at Domeneshop, and a GitHub login is something a script can do.

WhereStatus (2026-10-26)Take it down
MCP Registrypublished; the current version is what scripts/listings.ts check reportsmcp-publisher status --status deleted --all-versions --message "<why>" io.github.flogvit/bible (brew install mcp-publisher, mcp-publisher login github --token "$(gh auth token)") — hides it; --status active brings it back. The registry never deletes metadata.
Glamalisted, read from the registrygoes with the registry entry
PulseMCPreads the registry by itself (its own form is closed)goes with the registry entry
mcptry.comlisted, read from the registry; checks the live server on a schedulegoes with the registry entry
mcp.sosubmitted: chatmcp/mcpso#6153close the issue and ask there
mcpservers.orglisted (submitted through the free form)email [email protected]
awesome-remote-mcp-serversPR punkpeye/awesome-remote-mcp-servers#2991, from the fork flogvit/awesome-remote-mcp-serversclose the PR; once merged, a PR removing the three lines. Remote-only servers go in this list, not in awesome-mcp-servers — its CONTRIBUTING says so.
Smitherynot submitted — needs a login as flogvitdelete the server in Smithery's settings
cursor.directorynot submitted — needs a loginremove it there
Claude's connector directorynot submitted — only a Pro/Max/Team account can submit, at claude.ai/directory/manage → Submit new → MCP connectorremove the listing in the same portal

The three that are not submitted need nothing but the login: the address, the description and every field Anthropic's form asks for (one-liner, description, documentation and privacy URLs, support contact, use cases, example prompts) are written out in issue #157.

What each one got, and when, is in issue #157 on GitHub.

The guide page is /mcp in ../src/routes/pages/mcp.tsx. Removing it means removing the route, the footer link in ../src/views/layout.tsx, /mcp in ../src/lib/sitemap-paths.ts and test/pages.ts, and the pointer in llms.txt (../src/routes/seo.ts) — then deploying bibel.

Run it locally

Needs the local database the site uses (../.env, DB_PORT=3326).

sh
cd mcpbun installbun run dev            # http://localhost:8080/mcp

Try it with the MCP Inspector (npx @modelcontextprotocol/inspector, transport Streamable HTTP, URL http://localhost:8080/mcp), or by hand:

sh
curl -s -X POST localhost:8080/mcp \  -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' \  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_passage","arguments":{"reference":"John 3:16"}}}'

GET /healthz checks that the database user can read every content table and reads John 3:16: 200 with the verse, or 503 with the reason — a missing grant is named.

Tests

sh
cd mcp && bun run test && bun run typecheck

test/server.test.ts calls every tool over HTTP against the local database and checks that each answer links only to localised pages on bible.flogvit.com (or the sources the licence names) and never shows the site's [ref:…] markup. test/grants.test.ts creates a local MySQL user with exactly the grants the server gets in production, runs every tool as that user, and checks that the user tables refuse it — a tool that needs a table outside the grants fails there — and that /healthz names a table whose grant is revoked. test/books.test.ts checks that every book name and abbreviation the site shows, in every language, finds its own book. test/find-references.test.ts finds every book by every name inside a sentence, and its last verse as the last. test/cli.test.ts runs the command line client (../cli/) as its own program, with node and bun, against a listening server. test/lookups.test.ts holds the six direct lookups to every row of their tables. test/mapping.test.ts holds mapping to mapChapter() over every chapter where the King James numbering differs from osnb, plus Malachi 4, cross-references in and out, and check_references. test/tool-quality.test.ts reads tools/list and fails on a tool without a title, a description or all four annotation hints, an argument or output field without a description, an optional argument that does not say its default, or an allowed value its description does not name — what a client, and mcptry.com's Tool quality score, read before calling anything.

bibel's own bun test in the repo root does not run these (bunfig.toml): this package has its own dependencies.

How it is built

  • Its own package, its own image. @modelcontextprotocol/sdk and its dependencies live here and never reach the site's image. The image is built from the repo root (docker build -f mcp/Dockerfile .) because the server reads the database through the site's own getters in src/lib/ — an answer here is the page there.
  • The image carries the vendored @free-bible/kvn (kvn-package/, 109 MB of mapping files), for the verse numberings. Stage it first — bun run oppsett in bibel, which bibel's deploy does before it builds — or the build stops at the COPY. test/image.test.ts follows every import from src/index.ts and fails when the image would lack a file or a package; the tests themselves cannot see it, since they resolve through bibel's own node_modules.
  • Its own database user, read-only on content. src/grants.ts grants SELECT on the tables the import owns (CONTENT_TABLES) and nothing else, so users' notes, manuscripts and shares are out of reach.
  • Stateless. One MCP server per request; any request can land on any process.
  • A global cap, not a per-IP one. Claude and ChatGPT call connectors from their own servers, so one IP is many users. Over the cap the server answers 503 with Retry-After instead of queueing without end. The command line client is the one caller it can tell apart, and the one most likely to come in a loop, so it may hold only MCP_MAX_CONCURRENT_CLI of the slots.

Configuration

VariableDefault
PORT8080
DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAMEas the sitethe database user should have only grantStatements()
DB_TLSoff1 connects over TLS — for a database user that is refused in plain text
DB_POOL_MAX5
MCP_MAX_CONCURRENT4requests served at once
MCP_MAX_CONCURRENT_CLI2of those, how many the command line client may hold (User-Agent: flogvit-bible-cli/…)

bun scripts/grants.ts <database> prints the GRANT statements for the database user. They are derived from CONTENT_TABLES, but applied only when someone runs them: when the import gets a new content table, run them again as the database admin. Until then /healthz answers 503 and names the table.

Source: mcp/README.md at commit 50395b1

Tools

21

list_editions

List Bible editions

The Bible editions available, with language and licence. OSNB (Norwegian Bokmål), OSNN (Norwegian Nynorsk) and OSEN (English) are open translations made by the free-bible project directly from the Hebrew and Greek; SBLGNT (Greek New Testament) and Tanach (Hebrew Old Testament, Leningrad Codex) are the source texts.

Takes no parameters.

list_verse_mappings

List verse numberings

The verse numberings (KVN mappings) the tools can read references in and number answers in, for the mapping argument of get_passage, get_original_text, get_cross_references, check_references and others. Bible editions number some verses differently — whether a psalm heading is a verse, where a chapter breaks — and a reference copied from one edition can point at another verse in the site's own numbering (osnb). Find the id by the edition's name or language, e.g. "king james", "dnb2024", "german", "swahili".

Parametersquery

get_passage

Read a Bible passage

Returns the text of one or more passages, side by side in the requested editions, with a link to the chapter on bible.flogvit.com. Use include_notes for the translators' footnotes (translation choices, Greek/Hebrew linguistics, textual criticism, history, theology) and alternative renderings.

Parametersmappingeditionslanguagereferencerequiredinclude_notes

search_bible

Search the Bible text

Finds verses containing ALL the given words in one edition. Words match as substrings, so a stem finds its forms ("forgiv" finds forgive, forgiven, forgiveness). Put a phrase in double quotes to match it exactly. Search the edition in the language of the words: osen for English, osnb/osnn for Norwegian, sblgnt/tanach for Greek/Hebrew spellings.

Parametersbooklimitqueryrequiredoffseteditionmappinglanguagetestament

get_original_text

Hebrew or Greek source text

The Hebrew (Old Testament, Leningrad Codex) or Greek (New Testament, SBLGNT) text of a passage, optionally word by word with an explanation of each word. The word explanations are written in Norwegian; translate them for the user when needed.

Parametersmappinglanguagereferencerequiredword_by_word

search_original_word

Find a Hebrew or Greek word

Finds every verse where a Hebrew or Greek word occurs, ignoring accents and cantillation (e.g. ἀγάπη, λόγος, חֶסֶד). Returns the source text and the translation side by side.

Parameterswordrequiredlimitoffseteditionmappinglanguage

get_cross_references

Cross-references

Other passages that relate to each verse of a passage, with a short note on how. Read them with get_passage (several references in one call, separated by ";").

Parametersmappinglanguagereferencerequired

get_chapter_study

Study notes for a chapter

Everything bible.flogvit.com has about one chapter: summary, historical context, key words, the people in it, themes, stories, prophecies, gospel parallels and timeline events. Give a chapter ("Rom 8"); verses are ignored.

Parametersmappinglanguagereferencerequired

get_book_overview

Introduction to a book

An introduction to a whole book of the Bible: author, date, audience, structure and main themes.

Parametersbookrequiredlanguage

search_people

Find people in the Bible

Finds people by name or by what is said about them ("king Judah", "prophetess"). Returns ids for get_person.

Parametersqueryrequiredlanguage

get_person

A person in the Bible

One person: summary, family, related people and key events with the passages where they happen.

Parametersidrequiredmappinglanguage

search_topics

Find stories, themes and prophecies

Searches the study material: Bible stories (e.g. "prodigal son"), themes (e.g. "forgiveness"), prophecies and their fulfilment, gospel parallels and timeline events. Returns ids for get_topic.

Parametersqueryrequiredlanguage

get_topic

A story, theme, prophecy or gospel parallel

The full entry for an id from search_topics or get_chapter_study, with the passages it is built on.

Parametersidrequiredkindrequiredmappinglanguage

get_daily_verse

Verse of the day

Today's verse on bible.flogvit.com, with a short note.

Parameterseditionmappinglanguage

check_references

Check the Bible references in a text

Finds every Bible reference in a piece of running text — a sermon, a manuscript, an article — and says for each one where it stands (line and column), whether it exists, and what the verses say, so a quotation can be compared with the text it cites. A reference that points past the end of a chapter or book is reported as a problem. Book names must be capitalised, as in text written for a reader.

Parameterstextrequirededitionmappinglanguagefirst_lineinclude_text

get_church_year_readings

Readings for a Sunday or feast day

The Bible readings the Church of Norway (Den norske kirke) appoints for a Sunday or feast day, from the lectionary bible.flogvit.com shows: each reading with its title and passage (alternatives marked "or"), the year's text series, and what the day is about. Give a date, a day's name, or nothing for the next day with readings. The lectionary runs from Advent 2025 to the end of 2028. Day names and reading titles are in Norwegian; translate them for the user when needed.

Parametersdatenameeditionmappinglanguageinclude_text

get_timeline

The Bible timeline

Events in the order they happened, with year, description and the passages they are told in: for a period ("the exile"), a span of years, or events that mention a person or place. Called with no arguments, it lists the periods with their years. Years before Christ are negative. The world timeline gives what happened in the world around at the same time.

Parametersqueryperiodmappingto_yearlanguagetimelinefrom_year

get_prophecies

Prophecies and their fulfilment

Prophecies in the Bible with the passage that makes them, the passages that fulfil them, and an explanation: those made or fulfilled in a passage ("Isa 53", "Matt 2"), those in a category, or all of them by category when called with no arguments.

Parameterseditionmappingcategorylanguagereferenceinclude_text

get_story

A Bible story

A Bible story by its name: what happens, where it is told, and the text itself, e.g. "The Prodigal Son", "David and Goliath", "Jonah". Names in English and Norwegian both work. Other stories the name could mean are listed with their ids.

Parametersnamerequirededitionmappinglanguageinclude_text

get_number

A number in the Bible

What a number means in the Bible (e.g. 7, 12, 40, 666) and every passage where it carries that meaning. Called with no number, it lists every number that has an entry, with its meaning.

Parametersnumbermappinglanguage

get_gospel_parallels

Gospel parallels

The same event as Matthew, Mark, Luke and John each tell it: the parallels that cover a passage, with every Gospel's passage side by side and, if asked, each text in turn. Called with no reference, it lists all the parallels by section.

Parameterseditionmappinglanguagereferenceinclude_text

Version history

2
  1. v1.1.0LatestOct 29, 2026
  2. v1.0.0Oct 26, 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.