Content
# bibelstudium-mcp
[](https://github.com/fidpa/bibelstudium-mcp/releases)
[](LICENSE)
[](https://www.typescriptlang.org/)
[](https://bun.sh/)
[](https://bun.sh/)
[](https://github.com/fidpa/bibelstudium-mcp/commits/)

Lokaler MCP-Server für wortgetreue Bibelarbeit auf Deutsch: vier frei lizenzierte Übersetzungen, der Grundtext Wort für Wort über vier Editionen mit vollständiger Morphologie, Konkordanz, Querverweise, Volltextsuche und textkritischer Editionsvergleich — komplett offline, in einer einzigen SQLite-Datei.
> **Sprachhinweis**: Diese Dokumentation ist durchgehend deutsch, weil sich der
> Server an den deutschsprachigen Raum richtet. Tool-Namen und Feldbezeichner
> bleiben englisch bzw. deutsch wie im Code — sie sind API-Oberfläche, keine
> Prosa (siehe [Designentscheidungen](#designentscheidungen)).
## Das Problem
Sprachmodelle zitieren die Schrift aus dem Gedächtnis. Sie mischen Übersetzungen, paraphrasieren und erfinden gelegentlich ganze Verse — genau das, was nicht passieren darf, wenn es auf den Wortlaut ankommt. Und sobald eine Frage den Grundtext berührt („steht da Singular oder Plural?", „welche Handschriften enthalten diesen Vers?"), kann ein Modell ohne Daten nur raten.
Dieser Server gibt dem Modell stattdessen die Daten: exakten deutschen Verstext, den griechischen bzw. hebräischen Grundtext mit aufgelöster Morphologie und die Bezeugung jedes einzelnen Wortes über acht Editionen — jede Aussage gegen eine lokale Datenbank prüfbar.
## Funktionen
- **Exakter deutscher Verstext** (`bible_lookup`) — vier frei lizenzierte Übersetzungen: Luther 1912 (Voreinstellung), Schlachter 1951, Elberfelder 1871, Menge
- **Grundtext Wort für Wort** (`bible_original`) — ganze Bibel: hebräischer Westminster Leningrad Codex (AT), griechischer Byzantinischer Mehrheitstext / SBLGNT / Textus Receptus (NT); jedes Wort mit Grundform, Strong-Nummer und vollständig dekodierter Morphologie (drei native Morphologie-Schemata: Robinson, MorphGNT, OSHB)
- **Konkordanz / Wortstudie** (`bible_concordance`) — alle Vorkommen eines Grundtext-Wortes nach Strong-Nummer oder Grundform, mit Verteilung je Buch, Flexionsformen und Lexikondaten (Tyndale-Gloss, Strong-Definition, vollständiger Abbott-Smith-Eintrag fürs Griechische)
- **Querverweise** (`bible_crossrefs`) — Treasury of Scripture Knowledge (erweitert, OpenBible.info), nach Community-Stimmen gewichtet, jeweils mit deutschem Zieltext; mehrversige Ziele zusätzlich versweise aufgeschlüsselt (`verse_einzeln`)
- **Volltextsuche** (`bible_search`) — FTS5 mit Umlautfaltung, Phrasen- und Präfixsuche, filterbar nach Übersetzung und Buch; `treffer` zählt Verse, `vorkommen_gesamt` die Wortvorkommen, Fundstellen im Verstext mit `⟦…⟧` markiert
- **Editionsvergleich** (`bible_compare`) — Wort-für-Wort-Diff eines NT-Verses über drei vollständige griechische Editionen **plus Bezeugung jedes Wortes über acht Editionen** (NA27/28, Tyndale House, SBL, Westcott-Hort, Tregelles, TR, Byzantinisch; STEPBible TAGNT) — zeigt Varianten wie das Comma Johanneum mit ihrem vollständigen Zeugenbestand
- **Geführte Arbeitsabläufe** — drei MCP-Prompts (`word-study`, `variant-check`, `translation-compare`), die die Werkzeuge zu vollständigen Studien-Abläufen verketten
- **Herkunftsnachweis eingebaut** — jeder Download protokolliert Quell-URL, Anzahl der Anfragen und SHA-256-Prüfsumme in der Datenbank
## Bekannte Grenzen
> **WICHTIG**: Dieses Repository liefert **keine Datenbank** mit. Der erste Aufbau
> lädt alle Daten von den Originalquellen (~20–25 Minuten, ~145 MB fertige
> Datenbank). Das ist Absicht: STEPBible bittet darum, ihre Datendateien nicht
> weiterzuverbreiten — und die Download-Skripte plus Herkunftstabelle machen den
> Aufbau reproduzierbar und überprüfbar.
>
> - Die **Lexikondaten** (Strong, Abbott-Smith, Glossen) sind **englisch** — ein frei lizenziertes deutsches Lexikon vergleichbarer Tiefe existiert nicht
> - Die NT-Voreinstellung ist der **Byzantinische Mehrheitstext** — eine dokumentierte redaktionelle Entscheidung, keine Aussage über den Forschungskonsens; SBLGNT (kritisch) und Textus Receptus sind einen Parameter entfernt
> - Die vier deutschen Übersetzungen sind älteren Datums (1871–1951); zeitgenössische Übersetzungen sind nicht frei lizenziert
> - Tool-Namen und Tool-Beschreibungen sind **englisch** (Entwickler-Oberfläche), die Ausgabefelder deutsch (`bedeutung`, `bezeugung`, `verweise`, …)
## Voraussetzungen
| Anforderung | Zweck |
|-------------|-------|
| [Bun](https://bun.sh/) 1.2+ | Führt TypeScript direkt aus, SQLite eingebaut — kein Build-Schritt, kein Compiler. 1.2 ist die Untergrenze, weil das Repository das Text-`bun.lock` mitliefert |
| `unzip` | Für den Querverweis-Download. Auf macOS vorinstalliert, in minimalen Linux-Images nicht (`sudo apt install unzip`) |
| ~1 GB freier Speicher | ~145 MB fertige Datenbank plus temporäre Kopie beim Aufbau |
| Internetzugang | Nur für den einmaligen Datenaufbau — danach läuft der Server vollständig offline |
## Schnellstart
```bash
git clone https://github.com/fidpa/bibelstudium-mcp.git
cd bibelstudium-mcp
bun install # eine Laufzeit-Abhängigkeit: @modelcontextprotocol/sdk
# Datenbank aufbauen — streng der Reihe nach, niemals parallel:
bun run download # 4 deutsche Übersetzungen (~20 min) — MUSS zuerst laufen
bun run download:byz # Griechisch: Byzantinischer Mehrheitstext (Edition 'byzantine')
bun run download:sblgnt # Griechisch: SBLGNT + MorphGNT (Edition 'sblgnt')
bun run download:tr # Griechisch: Textus Receptus (Edition 'tr')
bun run download:heb # Hebräisch: Westminster Leningrad Codex (Edition 'wlc')
bun run download:crossrefs # Querverweise (OpenBible.info)
bun run download:tagnt # Bezeugung über acht Editionen (STEPBible TAGNT)
bun run download:lexicon # Lexika (Strong + STEPBible-Glossen/Abbott-Smith)
```
Warum sequentiell? Jedes Skript arbeitet auf einer Kopie der aktuellen Datenbank und tauscht sie am Ende atomar aus. Laufen zwei gleichzeitig, gewinnt der letzte Austausch — die Daten des anderen sind weg.
Server im MCP-Client registrieren, z. B. `.mcp.json` für Claude Code:
```json
{
"mcpServers": {
"bibelstudium": {
"command": "bun",
"args": ["run", "/pfad/zu/bibelstudium-mcp/server.ts"]
}
}
}
```
Der Pfad zur Datenbank wird relativ zum Skript aufgelöst — das Arbeitsverzeichnis des Clients spielt keine Rolle.
## Verwendung
Im Normalfall rufst du die Werkzeuge nicht selbst auf: Du stellst dem Assistenten eine Frage, und er holt sich die Daten. Ein paar Beispiele, was damit möglich wird:
> „Was steht in Johannes 1,1 wörtlich im Griechischen?"
Der Assistent ruft `bible_original` auf und bekommt jedes Wort einzeln aufgeschlüsselt (gekürzt):
```json
{
"reference": "Johannes 1,1",
"texttyp": "byzantine",
"edition": "Byzantinischer Mehrheitstext (Robinson-Pierpont 2005)",
"woerter": [
{ "wort": "εν", "grundform": "ἐν", "morphologie": "Präposition", "strong": "G1722" },
{ "wort": "αρχη", "grundform": "ἀρχή", "morphologie": "Substantiv Dativ Singular feminin", "strong": "G746" },
{ "wort": "ην", "grundform": "εἰμί", "morphologie": "Verb Imperfekt Aktiv Indikativ 3. Person Sing.", "strong": "G1510" },
{ "wort": "λογος", "grundform": "λόγος", "morphologie": "Substantiv Nominativ Singular maskulin", "strong": "G3056" }
]
}
```
> „Ist das Comma Johanneum in 1. Johannes 5,7 echt?"
`bible_compare` stellt die Editionen gegenüber und liefert die Bezeugung dazu — der Zusatz steht nur im Textus Receptus, alle betroffenen Wörter tragen `typ: "K"` (KJV-/TR-Tradition) und als Bezeugung ausschließlich `TR`:
```json
{
"reference": "1 Johannes 5,7",
"vergleiche": [
{ "paar": "byzantine ↔ sblgnt", "ergebnis": "identisch (nach Normalisierung)" },
{ "paar": "byzantine ↔ tr",
"unterschiede": ["nur in tr: \"εν τω ουρανω ο πατηρ ο λογος και το αγιον πνευμα …\""] }
],
"bezeugung": {
"woerter_gesamt": 22,
"von_allen_acht_bezeugt": 5,
"abweichend": [
{ "wort": "οὐρανῷ", "typ": "K", "editionen": "TR" },
{ "wort": "πατήρ", "typ": "K", "editionen": "TR" }
]
}
}
```
Weitere typische Fragen: „Wo kommt ἀγάπη im Neuen Testament überall vor?" (`bible_concordance`) · „Zeig mir Johannes 3,16 in allen vier Übersetzungen" (Prompt `translation-compare`) · „Welche Verse sprechen von Gnade?" (`bible_search`) · „Welche Querverweise gibt es zu Römer 8,1?" (`bible_crossrefs`).
Zum Testen ohne MCP-Client lassen sich JSON-RPC-Zeilen direkt in den Server leiten — siehe [AGENTS.md](AGENTS.md) § Testen.
## Werkzeuge
| Werkzeug | Zweck |
|----------|-------|
| `bible_lookup` | Exakter Verstext nach Stellenangabe (Buch/Kapitel/Verse, Übersetzung wählbar) |
| `bible_original` | Ein Vers Wort für Wort auf Hebräisch/Griechisch mit Grundform, Strong-Nummer, dekodierter Morphologie |
| `bible_concordance` | Alle Vorkommen eines Grundtext-Wortes (Strong/Grundform) mit Statistik und Lexikondaten |
| `bible_crossrefs` | Querverweise zu einem Vers, nach Stimmen gewichtet, mit deutschem Zieltext |
| `bible_search` | Volltextsuche (Wörter, „Phrasen", Präfix*), umlautfaltend, je Übersetzung/Buch |
| `bible_compare` | Wort-Diff eines NT-Verses über 3 griechische Editionen + Bezeugung über 8 Editionen |
## Prompts
| Prompt | Argumente | Ablauf |
|--------|-----------|--------|
| `word-study` | `word` (Pflicht), `reference` | Grundtext-Wort → Konkordanz → Schlüsselstellen → Bedeutungsspektrum |
| `variant-check` | `reference` (Pflicht) | Editions-Diff → Bezeugung → Lesarten je Edition → nüchterne Einordnung |
| `translation-compare` | `reference` (Pflicht) | Alle geladenen Übersetzungen nebeneinander, gegen den Grundtext geprüft |
## Übersetzungen
| Kürzel | Übersetzung | Lizenz |
|--------|-------------|--------|
| `LUT` | Luther 1912 (Voreinstellung) | Public Domain |
| `SCH` | Schlachter 1951 | CC BY 4.0 (Genfer Bibelgesellschaft) |
| `ELB` | Elberfelder 1871 | Public Domain |
| `MB` | Menge | Public Domain |
## Editionen & Voreinstellungen
`bible_original` deckt die ganze Bibel ab und leitet nach Buch weiter:
| `texttyp` | Edition | Umfang | Rolle |
|-----------|---------|--------|-------|
| `wlc` | Westminster Leningrad Codex (masoretisch, OSHB-Morphologie) | AT (Bücher 1–39) | einzige AT-Quelle → primär |
| `byzantine` | Mehrheitstext (Robinson-Pierpont 2005) | NT (40–66) | **NT-Voreinstellung** |
| `sblgnt` | SBL Greek New Testament (kritisch, Nestle-Aland-nah) | NT | sekundär / Vergleich |
| `tr` | Textus Receptus (Scrivener-/Stephanus-Tradition) | NT | Vergleich (TR-eigene Lesarten) |
`bible_compare` meldet zusätzlich je Wort, welche von acht Editionen es bezeugen (NA28, NA27, Tyndale House, SBL, Westcott-Hort, Tregelles, TR, Byzantinisch — Daten aus STEPBible TAGNT).
Die Variantennotizen von TAGNT nennen nur die Zeugen des eigenen Apparats, und dessen „Byz" ist nicht deckungsgleich mit dem hier geladenen Robinson-Pierpont 2005. Der Server gleicht deshalb jede Notiz gegen die tatsächlich vorhandenen Editionstexte ab: `in_dieser_db` nennt je Form die Editionen, die sie wirklich lesen, `abgleich` die Widersprüche. Beispiel 1. Timotheus 3,16 — TAGNT vermerkt `TR: ἀνελήφθη`, obwohl der Mehrheitstext hier ebenso liest; ohne diesen Abgleich lädt die Notiz zum Fehlschluss ein, der Mehrheitstext folge dem kritischen Text. Über 400 zufällige NT-Verse gemessen betrifft das rund 11 % der Verse. Widersprüche stehen zusätzlich als `warnung`/`quellenkonflikte` ganz oben in der Antwort, damit sie beim Wiedergeben nicht untergehen.
## Architektur
| Datei | Aufgabe |
|-------|---------|
| `server.ts` | MCP-Server: sechs Werkzeuge, drei Prompts, drei Morphologie-Dekoder, Editions-/Testament-Routing |
| `translations.ts` | Übersetzungs-Registry (Kürzel, Namen, Lizenzen, Aliase) |
| `schema.ts` | Tabellen-Schemata + FTS-Neuaufbau |
| `atomic-db.ts` | Atomare Datenbank-Schreibvorgänge (temporäre Kopie + Umbenennen) — sicher bei parallelen Lesern |
| `provenance.ts` | Quellen-/Prüfsummen-Protokoll für jeden Download |
| `aliases.ts` | Deutsche Buchnamen/Abkürzungen → Buch-IDs |
| `download*.ts` | Ein Skript je Datenquelle, additiv, atomarer Austausch |
| `data/bible.db` | SQLite (gitignored, lokal aufgebaut) |
### Designentscheidungen
**Warum keine mitgelieferte Datenbank?** Drei Gründe: STEPBible bittet darum, ihre Datendateien nur aus dem eigenen Repository zu verbreiten; eine selbst aufgebaute Datenbank mit `provenance`-Tabelle (Quell-URL + SHA-256 je Download) ist auf eine Weise überprüfbar, wie es ein heruntergeladener Datenklumpen nie sein kann; und die Aufbau-Skripte dokumentieren zugleich, woher jedes einzelne Wort stammt.
**Warum Luther 1912 als Voreinstellung?** Es ist die bekannteste gemeinfreie deutsche Übersetzung. Schlachter 1951 (CC BY), Elberfelder 1871 und Menge sind einen Parameter entfernt — und `translation-compare` stellt sie nebeneinander.
**Warum ist der Byzantinische Mehrheitstext die NT-Voreinstellung?** Der Server dient wortgetreuer Arbeit, und die hier mitgelieferten deutschen Übersetzungen stehen in der Mehrheitstext-Tradition (Luther und Schlachter folgen der TR-/byzantinischen Linie). Der kritische SBLGNT ist über `texttyp: "sblgnt"` vollständig verfügbar — und `bible_compare` zeigt genau, wo die Editionen auseinandergehen, samt Bezeugung zur Beurteilung jeder Lesart.
**Warum englische Tool-Namen bei deutscher Ausgabe?** MCP-Tool-Namen sind Entwickler-Oberfläche (englische Konvention); der Inhalt, den ein Mensch liest, ist deutsch, weil der ausgelieferte Bibeltext deutsch ist.
**Warum nur eine Abhängigkeit und kein Build-Schritt?** `bun:sqlite` steckt in Bun, und Bun führt TypeScript direkt aus. Die einzige Laufzeit-Abhängigkeit ist das MCP-SDK. Weniger Angriffsfläche, nichts zu kompilieren, nichts, was kaputtgehen kann.
## Dokumentation
| Dokument | Inhalt |
|----------|--------|
| [docs/FEHLERBEHEBUNG.md](docs/FEHLERBEHEBUNG.md) | Fehlerbilder beim Datenaufbau und Serverstart, jeweils mit Ursache und Behebung |
| [docs/TYPESCRIPT.md](docs/TYPESCRIPT.md) | Code-Stil-Regeln, Typecheck, bewusst nicht übernommene Konventionen |
| [AGENTS.md](AGENTS.md) | Arbeitsregeln im Repository: Befehle, Architektur, gemessene Fallstricke |
| [CONTRIBUTING.md](CONTRIBUTING.md) | Mitwirken: Grundregeln, Prüfschritte, Pull-Request-Ablauf |
| [THIRD_PARTY_LICENSES.md](THIRD_PARTY_LICENSES.md) | Vollständige Quellen- und Lizenztabelle aller Bibeldaten |
| [SECURITY.md](SECURITY.md) | Sicherheitsmodell und Meldeweg für Schwachstellen |
## Datenquellen & Lizenzen
Alle Datenquellen sind Public Domain oder CC-BY(-SA); die vollständige Tabelle steht in [THIRD_PARTY_LICENSES.md](THIRD_PARTY_LICENSES.md) — einschließlich der vorgeschriebenen Namensnennung für Schlachter 1951 (CC BY 4.0, © Genfer Bibelgesellschaft) und des STEPBible-Hinweises zur Weiterverbreitung.
## Mitwirken
Beiträge sind willkommen — siehe [CONTRIBUTING.md](CONTRIBUTING.md). Bitte beachte die Datenqualitäts-Regel: Jede Aussage über den Text muss gegen die Datenbank überprüfbar sein (die Hausregel lautet „Belege statt Behauptungen").
## Lizenz
MIT-Lizenz — siehe [LICENSE](LICENSE). Die Lizenz deckt den Code; die Bibeldaten werden lokal heruntergeladen und unterliegen ihren eigenen Lizenzen (siehe oben).
## Autor
**Marc Allgeier** ([@fidpa](https://github.com/fidpa))
**Warum ich das gebaut habe**: Ich wollte einen KI-Assistenten, der mit der Schrift so umgeht wie ein sorgfältiger Leser — exakt zitieren, im Grundtext nachsehen statt zu raten, und ehrlich benennen, wo die Handschriften auseinandergehen. Im öffentlichen MCP-Ökosystem gab es englische Server mit guten Lexika, aber nichts Deutsches, nichts Offline-Fähiges mit mehreren Grundtext-Editionen und nichts, was Textvarianten mit ihren Zeugen zeigen konnte. Diese Lücke schließt der Server.
## Siehe auch
- [lydia-bible-bot](https://github.com/fidpa/lydia-bible-bot) — Sicherheitsgehärteter KI-Bibelassistent für Telegram-Gruppen (nutzt eine frühere, eingebettete Fassung dieses Servers)
- [cc-telegram-bot](https://github.com/fidpa/cc-telegram-bot) — Telegram-Bot-Grundgerüst für Claude Code
- [bash-production-toolkit](https://github.com/fidpa/bash-production-toolkit) — Produktionsreife Bash-Patterns
MCP Config
Below is the configuration for this MCP Server. You can copy it directly to Cursor or other MCP clients.
mcp.json
Connection Info
You Might Also Like
No recommendations available