Skip to main content
Glama
README.md
# Bible MCP Server

An MCP (Model Context Protocol) server that lets AI assistants fetch Bible verses, passages, and chapters from [MyBible](https://mybible.zone)-format SQLite databases.

## Features

- **list_bibles** — List all installed Bible translations
- **list_books** — List all books in a translation
- **get_passage** — Get a single verse or verse range (e.g., John 3:16, Romans 8:1-3)
- **get_chapter** — Get an entire chapter with section titles

## Setup

### Install dependencies

```bash
npm install
```

### Add Bible translations

Place MyBible `.SQLite3` files in the `Bibles/` directory, one folder per translation:

```
Bibles/
├── NIV'11/
│   ├── NIV'11.SQLite3
│   └── NIV'11.commentaries.SQLite3
├── KJV/
│   └── KJV.SQLite3
└── ...
```

Each subfolder must contain at least one `*.SQLite3` file (the main Bible database). Commentary databases (`*.commentaries.SQLite3`) are optional. The folder name becomes the translation ID used in tool calls.

### Configure with your AI client

Add to your MCP client config:

```json
{
  "mcpServers": {
    "bible": {
      "command": "node",
      "args": ["path/to/BibleMCP/dist/index.js"]
    }
  }
}
```

For development:

```json
{
  "mcpServers": {
    "bible": {
      "command": "npx",
      "args": ["tsx", "path/to/BibleMCP/src/index.ts"]
    }
  }
}
```

### Configuration

| Environment Variable | Default | Description |
|---------------------|---------|-------------|
| `BIBLES_DIR` | `./Bibles` | Path to the directory containing Bible translation folders |

## Development

```bash
npm run build      # Compile TypeScript to dist/
npm run dev        # Run server in dev mode (tsx)
npm test           # Run all tests
npm run test:watch # Run tests in watch mode
npm run typecheck  # Type-check without compiling
```

## MyBible Format

This server reads the standard MyBible SQLite schema:

- **info** table — metadata (description, language)
- **books** table — book numbers, short/long names (66 books, numbered 10–730)
- **verses** table — `book_number, chapter, verse, text` (text may contain HTML markup)
- **stories** table — section titles / pericopes
- **introductions** table — book introductions

Verse text is returned as clean plain text with all HTML markup stripped.

## License

This server code is licensed under the MIT License. See [LICENSE](LICENSE).

Bible translation modules in the `Bibles/` directory are **not** covered by this license — they are subject to their respective copyrights and are not distributed with this repository.

TDQS

A3.7/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct purpose: browsing translations, listing books, retrieving a specific passage, or fetching a full chapter. There is no overlap or ambiguity between them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (list_bibles, list_books, get_passage, get_chapter), making the set predictable and easy to navigate.

Tool Count4/5

With 4 tools, the server feels well-scoped for its purpose. While minimal, it covers browsing and reading operations without unnecessary bloat. One or two additional tools (e.g., search) could be expected but not required.

Completeness3/5

The server covers basic lookup workflows (list translations, list books, retrieve passages/chapters), but lacks search, cross-reference, or note capabilities. Users can successfully read verses but may encounter dead ends for discovery beyond hierarchical listing.

Maintenance

ActivitySlowing
ResponsivenessNo issues