bible-mcp

Servidor MCP para la erudición e investigación cristiana: Escrituras, datos de palabras en griego/hebreo, referencias cruzadas, textos patrísticos y búsqueda semántica.

Documentación

bible-mcp

Un servidor MCP para la erudición e investigación cristiana. Sin fines comerciales, con el objetivo de convertirse en un recurso público. Consulta corpus-survey.md para el panorama completo de fuentes y licencias, y ROADMAP.md para la dirección del proyecto.

Qué incluye (v0.12)

DatosFuenteLicencia
Berean Standard Bible (66 libros)berean.bibleDominio público
World English Bible, Ecuménica (83 libros, incl. Apócrifos)ebible.orgDominio público
Septuaginta (traducción de Brenton, 1851) — AT + Apócrifos, incl. Susana/Bel y el Dragón/Epístola de Jeremías como libros separados; Salmos reasignados a la numeración estándar inglesa/KJV (la numeración propia de la LXX diverge en la mayor parte del Salterio — verificado versículo por versículo contra WEB); Jeremías, Daniel-Griego, Éxodo, Job, Ester-Griego y Baruc conservan la estructura nativa de capítulos/versículos de la LXX de Brenton, que difiere de BSB/WEB en estos libros (reordenamiento y/o extensión, no solo numeración)ebible.orgDominio público
Septuaginta, texto griego (edición de Swete, Cambridge 1887–1894) — Génesis hasta Malaquías más Apócrifos, Daniel/Susana/Bel de Teodoción; misma reasignación de Salmos y mismas advertencias de estructura nativa que el texto inglés de Brenton arriba. Nivel de palabra (solo forma superficial, sin lema/Strong/morfología), potencia get_interlinear junto con el AT hebreo/arameo y el NT griegoOpen Greek and Latin Project / First1KGreek, vía github.com/nathans/lxx-sweteCC BY-SA 4.0
613,690 palabras en lengua original: NT griego + AT hebreo/arameo con lemas, Strong, morfología, glosas, dominios semánticosMACULA (Clear-Bible/Biblica)CC BY 4.0
Léxico Hebreo e Inglés Brown-Driver-Briggs (1906, 9,290 entradas) + Diccionario Hebreo de Strong (1890, revisado, 8,674 entradas) — entradas académicas completas (etimología, divisiones de sentido, citas de versículos) claveadas por número de Strong, incluyendo los homógrafos con letras propios de BDB (p. ej. H2617a "misericordia" vs H2617b "reproche" — palabras genuinamente diferentes, misma ortografía); aparece en word_study junto con la glosa breve existenteOpenScriptures HebrewLexiconCC BY 4.0 (marcado; el texto subyacente de BDB/Strong es de dominio público)
Léxico Manual Griego del Nuevo Testamento de Abbott-Smith (1922, 517 entradas) — mismo tratamiento para palabras griegas del NTFirst1KGreek / Open Greek and Latin Project, vía github.com/biblicalhumanities/Abbott-SmithDominio público
~345,000 referencias cruzadas clasificadasopenbible.infoCC BY
~4,800 personas/lugares/eventos/grupos + 53,000 enlaces de versículosTheographic Bible MetadataCC BY-SA 4.0
Seis clásicos de dominio público: Confesiones de Agustín, Imitación de Cristo, Progreso del Peregrino, Práctica de la Presencia de Dios, Revelaciones de Juliana, Ortodoxia de ChestertonProject GutenbergDominio público
Los Padres Apostólicos, diez obras: 1 y 2 Clemente, Epístola de Bernabé, Policarpo a los Filipenses, Martirio de Policarpo, Epístolas de Ignacio (recensión breve), Martirio de Ignacio, Epístola a Diogneto, Pastor de Hermas, Fragmentos de PapíasANF (Roberts-Donaldson-Crombie), Project Gutenberg #77576Dominio público
Ireneo: Contra las Herejías, Libros I–V + Fragmentos — 806 secciones abordadas como IREN-AH<book>.<chapter>.<section> para que las citas estándar (AH 3.3.4) resuelvan directamente; 1,598 citas de escritura de nivel 1ANF vol. I (Roberts-Rambaut), transcripción de WikisourceDominio público
Justino Mártir: Primera Apología, Segunda Apología, Diálogo con Trifón, Martirio de Justino — 423 secciones, ~408 citas de nivel 1ANF vol. I, transcripción de WikisourceDominio público
Grafo de citas de nivel 1: citas de escritura extraídas de las notas al pie de los propios traductores en toda la estantería patrística (ver DESIGN.md §4)——
Versemap: 988 alineaciones de versículos MT/NA ↔ inglés derivadas empíricamente en 31 libros (Joel 2–4, Malaquías 3–4, Oseas, Isaías 64, costuras de Reyes/Crónicas/Nehemías, 3 Juan, Hechos 19, Apoc 12…), validadas por glosa; más los desplazamientos de los sobrescritos de los Salmosderivado del corpus—
Capa de resultados de investigación (layer='output'): encuestas de corpus de Capa 0 + informes breves de investigación de Capa 2 para alfarero-y-barro, agua viva, desierto — buscables, incrustados, con enlaces draws_on de vuelta a sus referencias fundamentalesgenerado en el proyecto—
~112,400 incrustaciones (versículo/ventana/párrafo) para búsqueda semántica e híbrida en cada capabge-small-en-v1.5, generado localmente—

Todo en un solo archivo SQLite (db/bible.db, ~370MB) con búsqueda de texto completo FTS5. Las obras en prosa se abordan como WORK.chapter.paragraph. Consulta DESIGN.md para la justificación de la arquitectura.

Herramientas

  • get_passage(reference, version="BSB") — Texto bíblico para una referencia, p. ej. John 3:16, John 3:16-18, Genesis 1. Versiones: BSB, WEB (los Apócrifos requieren version="WEB").
  • search(query, version="BSB", book="", limit=20) — Búsqueda de texto completo, con derivación y clasificación (BM25). Admite frases entre comillas y AND/OR/NOT, p. ej. faith AND works NOT law. version también acepta cualquier id de obra en prosa. Nota: la derivación combina formas superficiales relacionadas (p. ej. "desierto" también coincide con "desierta") — cita frases exactas o añade términos AND para desambiguar.
  • semantic_search(query, top_k=12, kind="", hybrid=True) — Búsqueda basada en significado en todo el corpus (escritura + prosa), fusionada híbridamente con búsqueda por palabras clave (RRF) por defecto. Encuentra pasajes sobre un tema incluso sin palabras compartidas, p. ej. "auto-vaciamiento divino". kind opcional: versículo | ventana | párrafo.
  • find_similar(reference, top_k=10) — Pasajes más cercanos por incrustación a un versículo o párrafo de prosa dado, en escritura, Apócrifos y clásicos. Potencia el hallazgo de paralelos entre capas del corpus.
  • word_study(query, language="", limit=15) — Estudio de palabras en lengua original por número de Strong (relleno con ceros opcional), lema (con o sin puntuación), transliteración hebrea/aramea (p. ej. miqweh, macrones opcionales) o glosa en inglés. Devuelve conteos de aparición, rango de glosas, distribución por libros, una entrada léxica académica completa cuando está disponible (BDB/Strong's para hebreo, Abbott-Smith para griego — más rica que la glosa, truncada a ~700 caracteres) y versículos de muestra. Las variantes homógrafas con letras (p. ej. H4723 vs H4723a — misma forma escrita, palabra diferente) se muestran juntas. language opcional: grc | hbo | arc.
  • get_interlinear(reference) — Lengua original palabra por palabra para un versículo o rango corto: forma superficial, lema, Strong, glosa, morfología (AT hebreo/arameo, NT griego). Corregido por Versemap en todos los libros, no solo en los Salmos. Para versículos del AT también muestra el texto superficial griego de la Septuaginta cuando está disponible (sin lema/Strong/morfología en esa fuente).
  • get_cross_references(reference, limit=20) — Referencias cruzadas para un versículo (OpenBible.info, clasificadas por votos de la comunidad), con el texto del destino incluido.
  • get_citations(reference, limit=20) — Dónde un versículo es citado por nombre en el corpus patrístico, extraído de las notas al pie de los propios traductores (nivel 1). Complementa a get_cross_references (escritura→escritura); esto es texto patrístico→escritura. La cobertura es escasa por diseño — un resultado vacío no significa que no esté citado; la búsqueda de texto completo search dentro de las obras patrísticas es la sonda exhaustiva.
  • get_entity(name, entity_type="") — Busca una persona, lugar, evento o grupo de personas bíblico por nombre (grafo de conocimiento Theographic); devuelve detalles y dónde aparecen. entity_type opcional: person | place | event | people_group.
  • entities_in_passage(reference) — Personas, lugares y eventos vinculados a un versículo o capítulo, p. ej. Genesis 14.
  • read_work(work, chapter=1, start=1, end=5) — Lee una obra en prosa por rango de párrafos (CONFESSIONS, IMITATION, PILGRIM, PRESENCE, JULIAN, ORTHODOXY, 1CLEMENT, BARNABAS y otras — ver corpus_info() para la lista completa). Usa search(version=<WORK>) para encontrar pasajes primero.
  • compare_versions(reference) — Un versículo o rango corto en BSB y WEB, lado a lado.
  • corpus_info() — Qué hay en el corpus: documentos, capas, licencias y conteos.

Prompts

El servidor también expone el pipeline de síntesis como prompts de MCP, generados desde .claude/skills/ (la fuente de verdad): corpus_survey(theme) — disciplina de lectura cruda de Capa 0; corpus_composer(theme) — composición de informes breves de investigación de Capa 2. Cualquier cliente MCP que instale bible-mcp obtiene la disciplina incluida con los datos.

Configuración

pip install -r requirements.txt   # core: just `mcp`
pip install fastembed numpy       # optional semantic tier (semantic_search, find_similar)
python3 scripts/build_db.py       # rebuild db from data/sources (optional; db ships built)
python3 scripts/embed.py          # regenerate embeddings (optional; ships built; resumable)

La primera consulta semántica descarga el modelo de incrustación (~65MB, una sola vez). Sin fastembed/numpy instalados, todas las herramientas no semánticas funcionan normalmente. Consulta DESIGN.md para las decisiones de arquitectura (elección de modelo, fragmentación, recuperación híbrida).

Claude Desktop / Cowork — añade a la configuración de MCP:

{
  "mcpServers": {
    "bible-mcp": {
      "command": "python3",
      "args": ["/path/to/bible-mcp/server.py"]
    }
  }
}

Estructura

data/sources/   raw acquired sources (immutable; re-derive, never edit)
data/versemap.tsv        derived MT/NA <-> English verse alignments
data/additions-*.json    prepared incremental ingestions (applied via scripts/ingest_additions.py)
scripts/        schema.sql, lib_refs.py, build_db.py, build_versemap.py, align_splits.py, ingest_additions.py
db/bible.db     the built corpus (SQLite + FTS5)
outputs/        synthesis-pipeline artifacts (Layer 0 surveys, Layer 2 briefs, reports)
.claude/skills/ corpus-survey + corpus-composer (pipeline skills; source for MCP prompts)
server.py       MCP server (FastMCP, read-only on the db)

Edición pública

Este es un recurso público sin fines comerciales. Las licencias están en capas — las fuentes conservan sus propias licencias (todas PD / CC BY / CC BY-SA); el código es PolyForm Noncommercial 1.0.0; la compilación y los datos derivados (versemap, grafo de citas, incrustaciones, capa de resultados) son CC BY-NC 4.0. Detalles completos: LICENSE.md, atribuciones en NOTICE.md.

Tres formas de usarlo:

  1. Remoto (sin instalación) — añade el endpoint alojado como conector personalizado en cualquier cliente MCP (Claude: Configuración → Conectores → Añadir conector personalizado): https://bible-mcp-server.fly.dev/mcp
  2. Local (stdio) — clona, descarga db/bible.db de la última Release de GitHub (o reconstruye desde data/sources/), añade la configuración anterior.
  3. Autoalojado — Dockerfile incluye el servidor Streamable-HTTP; ver DEPLOY.md.

Notas de diseño

  • Direccionamiento canónico: referencias estilo OSIS (Gen.1.1) en todas partes; cada tabla se clavea en ellas.
  • Procedencia: cada fila de documento lleva fuente, licencia y nivel de licencia (A=libre, B=compartir-igual, C=sin fines comerciales, D=cerrada — somos sin fines comerciales, así que C es utilizable).
  • Los 16 versículos "faltantes" de BSB (Mat 17:21, Juan 5:4, Hechos 8:37…) son las omisiones estándar del texto crítico, no errores.
  • Versificación: versemap (todos los libros) + psalm_offsets (sobrescritos) alinean la numeración MT/NA de MACULA al inglés. Ambos derivados empíricamente de los dos testigos propios del corpus y validados por superposición de texto de glosa; el esquema de tabla es compatible con TVTMS para que los datos de STEPBible puedan extenderlo a otras tradiciones (LXX, Vulgata) más adelante.
  • Ignacio se incluye solo en la recensión breve (media); la recensión larga de ANF es una expansión posterior y duplicaría cada capítulo en la búsqueda.
  • La capa de resultados de investigación se genera, está claramente etiquetada (layer='output') y nunca puede confundirse con fuentes primarias; los enlaces draws_on vinculan cada artefacto a sus referencias fundamentales.
  • Siguiente según ROADMAP.md: Ireneo (adquisición de fuentes), shingling de citas de nivel 2 (tres fallos confirmados de índice de notas al pie como fixtures), TVTMS propiamente dicho.