FLOGVIT.bible

io.github.flogvit由 GitHub 帳號 flogvit 發布v1.1.0更新於 Oct 29, 2026

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

已驗證Streamable HTTP可網頁執行網頁搜尋與抓取知識與記憶

概覽

AI 產生的概覽

透過 bible.flogvit.com 閱讀與檢索聖經:開放譯本、希伯來文與希臘文原文、交叉引用和研經資料。

可以做什麼
  • 並排閱讀多個譯本的經文,可選擇顯示譯者註釋,並列出各譯本及其授權
  • 依詞語或片語檢索經文,找出包含某個希伯來文或希臘文詞語的所有經文
  • 逐詞閱讀希伯來文或希臘文原文,取得交叉引用以及整章或整卷的研經資料
  • 查詢人物、主題、故事、數字、預言、福音書平行經文與時間軸事件
  • 檢查一段文字中的聖經引用,並取得挪威教會某日的經課
  • 取得每日經文
適用情境
適合需要助理準確引用經文而非憑記憶作答、比較不同譯本或原文語言,或回答關於人物、主題、預言與歷史的研經問題時使用。也方便核對講章或文章中引用的經文出處。
執行需求
遠端 Streamable HTTP 端點,不需帳號、金鑰或身分驗證。任何支援遠端連接器的 MCP 用戶端都可加入該位址。
安裝前請注意
所引譯文採 CC BY 4.0 授權,回傳的來源列與署名必須隨經文一併保留。原文的逐詞解釋以挪威文撰寫,可能需要翻譯。此伺服器為唯讀且無狀態。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 FLOGVIT.bible,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.flogvit%2Fbible/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "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.

來源:mcp/README.md,提交 50395b1

工具

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.

無需輸入參數。

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".

輸入參數query

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.

輸入參數mappingeditionslanguagereference必填include_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.

輸入參數booklimitquery必填offseteditionmappinglanguagetestament

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.

輸入參數mappinglanguagereference必填word_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.

輸入參數word必填limitoffseteditionmappinglanguage

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 ";").

輸入參數mappinglanguagereference必填

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.

輸入參數mappinglanguagereference必填

get_book_overview

Introduction to a book

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

輸入參數book必填language

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.

輸入參數query必填language

get_person

A person in the Bible

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

輸入參數id必填mappinglanguage

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.

輸入參數query必填language

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.

輸入參數id必填kind必填mappinglanguage

get_daily_verse

Verse of the day

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

輸入參數editionmappinglanguage

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.

輸入參數text必填editionmappinglanguagefirst_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.

輸入參數datenameeditionmappinglanguageinclude_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.

輸入參數queryperiodmappingto_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.

輸入參數editionmappingcategorylanguagereferenceinclude_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.

輸入參數name必填editionmappinglanguageinclude_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.

輸入參數numbermappinglanguage

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.

輸入參數editionmappinglanguagereferenceinclude_text

版本歷史

2
  1. v1.1.0最新Oct 29, 2026
  2. v1.0.0Oct 26, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。