Obs 5m
БесплатноНе проверенMCP server for Open Bible Stories + Theological Formation (Five Movements) content, providing tools like fetch_obs_study_manual to retrieve study manuals, story
Описание
MCP server for Open Bible Stories + Theological Formation (Five Movements) content, providing tools like fetch_obs_study_manual to retrieve study manuals, story details, and PDF resources for translation workflows.
README
MCP server for Open Bible Stories + Theological Formation (Five Movements).
Content resolution: DCS catalog subject=OBS Theological Formation + topic=tc-ready (same defaults as Translation Helps MCP). English comes from Door43 unfoldingWord/en_obs_tf. When DCS has no entry (Indonesian today), tools use extracted text from self-hosted PDFs (R2) — not just a download link (bt-servant-engine#215).
Implements the study-manual surface requested in translation-helps-mcp#36 via fetch_obs_study_manual.
Content license: CC BY-SA 4.0 (unfoldingWord / partners).
Quick start
npm install
npm test # unit + contracts
npm run test:unit
npm run test:contracts
npm run dev # http://localhost:8790
# Chat UI (needs OPENAI_API_KEY in .dev.vars):
# http://localhost:8790/chat
# with wrangler running:
npm run test:smoke
Copy .dev.vars.example → .dev.vars and set OPENAI_API_KEY for the chat UI. Deployed: wrangler secret put OPENAI_API_KEY.
Endpoints:
| Path | Purpose |
|---|---|
/ |
Website home |
/docs |
Agent guide — how AI agents run translator sessions with these tools |
/chat |
Simple LLM chat UI (OpenAI + in-process MCP tools) |
/api/chat |
Chat SSE API (status / token / done; "debug": true for X-ray) |
/mcp |
MCP (Streamable HTTP / SSE via agents/mcp) |
/api |
JSON discovery (Accept: application/json on / also works) |
/api/mcp-manifest |
Tool catalog JSON |
/api/tool |
Direct tool invoke; pass "debug": true for X-ray traces |
/debug |
X-ray UI (tool runner + pipeline report) |
/assets/pdf/<r2Key> |
Stream self-hosted PDF from R2 |
/health |
Liveness |
Tests & X-ray
Modeled on translation-helps-mcp:
| Suite | Command | What it covers |
|---|---|---|
| Unit | npm run test:unit |
Parser, study manual, handlers (mocked Door43), X-ray events |
| Contracts | npm run test:contracts |
Tool module shape + outputSchema / RESOURCE_NOT_AVAILABLE |
| Smoke | npm run test:smoke |
Live /health, manifest, fetch_obs_study_manual + X-ray |
X-ray (pipeline transparency): POST /api/tool with "debug": true returns { result, xray, xrayReport }. Open /debug for an interactive panel. Chat also supports X-ray via the checkbox on /chat (or "debug": true on /api/chat).
Chat (LLM + MCP tools)
Cloned from Translation Helps /chat (SvelteKit + ChatDock + X-ray), rewired for OBS study-for-translation instead of scripture/TN/TW.
# Terminal A — MCP worker (tools, PDFs, docs)
npm run dev
# Terminal B — Svelte chat (primary UI)
npm run dev:web
# → http://localhost:8174/chat
- Study / Translate / Check map onto OBS sessionFlow parts (not Bible workflow modes).
- Session side panel replaces the TH Helps/scripture panel with Five Movements parts.
- API:
web/src/routes/api/chat→src/chat/chatHandler+ in-processTOOL_REGISTRY(OBS tools). - Worker
:8790/chatstill serves a slim HTML fallback if the Svelte app is not running.
Tools
Discovery: list_languages, list_resources, list_collections, list_stories
Study manual (#36): fetch_obs_study_manual
Helpers: get_framework, get_story, get_movement, get_devotional, get_study_guide, search_content
PDFs: get_pdf (Indonesian pack)
fetch_obs_study_manual (preferred for BT Servant)
{
"tool": "fetch_obs_study_manual",
"arguments": {
"reference": "1:1",
"language": "en",
"movement": 1,
"format": "json"
}
}
| Param | Description |
|---|---|
reference |
OBS story:frame — "1:1", "1" (whole story), "1:0" (intro). Optional obs prefix. |
language |
Default en (Door43 en_obs_tf). |
part |
Optional session slice: intro | frames | community | movement1–5 | drafting | checking | conclusion. Preferred for paced translator sessions. |
movement |
Optional 1–5 (same as part=movementN). Prefer part for drafting/checking/conclusion. |
format |
json (default), md, or text — md/text always render from the same parsed data (never falsely empty). |
Returns intro, frames, Community Study, Observation / Translation / Discourse / Theological / Journal, drafting, checking, Ministry / Mission, and conclusion — packaging resolved (shared TX and story-inline look the same). Response includes sections and sessionFlow for agent routing.
Related Translation Helps issues (out of scope here)
| Issue | Topic | Where it lives |
|---|---|---|
| #36 | en_obs_tf study manual |
This server (fetch_obs_study_manual) |
| #34 | OBS tn/tq/sn/sq format:md empty |
Translation Helps MCP (classic OBS TSV tools) |
| #35 | OBS translation-word links (en_obs-twl) |
Translation Helps MCP |
Indonesian PDFs → OBS-TF markdown (DCS fallback)
Used only when catalog search finds no OBS Theological Formation for id.
Canonical pipeline: PDF → font-aware plain MD → DCS-shaped MD (do not convert from coarse txt when plain MD is available).
# 1) PDF → plain MD (headings, **NN-NN** frames)
npm run plain-md -- --story=1
# 2) plain MD → en_obs_tf-shaped MD + transclusions
npm run convert:id -- --story=1
# Or generate missing plain MD then convert all:
npm run convert:id:from-pdf
# Force re-extract plain MD from PDF, then convert:
npm run convert:id -- --regen-plain --story=1
Setup steps:
- Download the zip from bt-servant-engine#215 (or Google Drive).
- Unpack PDFs into
data/incoming/(names likeOBS 1 (Indonesia).pdf). - Optional txt fallback:
npm run ingest:id -- --text-only→data/indonesian-text.json - Run the canonical pipeline above →
data/obs-tf-md/id/obs_story_N.mdwith unique sections (community study, divergent movements) inlined, shared movement/conclusion as![[…]]transclusions, plusstructure-report.json(soft metrics: translation terms, skeleton flags, shared-tx drift). --offlineuses the story-1 fixture for DCS compare when network is unavailable.- Upload PDF + text to R2:
npm run ingest:idor--localfor wrangler dev.
Structure cues live in data/structure-maps/id.json. Runtime prefers converted MD (sourceKind: local-md) over coarse PDF text. get_pdf still returns the file URL and extracted text.
Export a Door43 repo tree
After convert, build an upload-ready Resource Container folder (manifest + stories + transclusions):
npm run export:dcs
# or regenerate convert first:
npm run export:dcs -- --convert
# custom output:
npm run export:dcs -- --out=./tmp/id_obs_tf --force
Output: exports/id_obs_tf/ (gitignored). Create an empty Door43 repo, then git init / push from that folder — see exports/id_obs_tf/README.md.
Cloudflare setup
This app deploys as a Cloudflare Worker (MCP Durable Object + Workers Assets for the Ezer chat UI). That is the right host for MCP — not a static Pages site alone.
npx wrangler kv namespace create OBS_5M_CACHE
npx wrangler kv namespace create OBS_5M_CACHE --preview
# Optional (Indonesian PDF hosting) — enable R2 in the dashboard first:
npx wrangler r2 bucket create obs-5m-mcp-assets
Paste the KV ids into wrangler.toml, set PUBLIC_BASE_URL, then:
npm run deploy
npx wrangler secret put OPENAI_API_KEY
Chat: https://<worker>/chat · MCP: https://<worker>/mcp
BT Servant registration
- Deploy this worker.
- Register the MCP URL (
https://<worker>/mcp) in BT Servant admin (seebt-servant-workercurl examples). - Responses include
_meta.downstream_api_callsand_meta.cache_statusper MCP integration guidelines. - Smoke:
fetch_obs_study_manualwithreference: "1:1",language: "en";list_resourcesforid+get_pdf.
Architecture
Modeled on translation-helps-mcp v2: Cloudflare Worker + McpAgent Durable Object, Zod tools, RESOURCE_NOT_AVAILABLE with isError: false.
Установка Obs 5m
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/unfoldingWord/obs-5m-mcpFAQ
Obs 5m MCP бесплатный?
Да, Obs 5m MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Obs 5m?
Нет, Obs 5m работает без API-ключей и переменных окружения.
Obs 5m — hosted или self-hosted?
Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.
Как установить Obs 5m в Claude Desktop, Claude Code или Cursor?
Открой Obs 5m на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Obs 5m with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
