Skip to main content

Bible MCP Server

A Model Context Protocol server that exposes Bible content from bible-api.com for Large Language Models like Claude.

Features

  • Access Bible verses and chapters as resources
  • Tools for retrieving verses by reference and getting random verses
  • Support for multiple translations
  • Prompt templates for Bible study
  • True random verse generation from any book in the Bible
  • Testament filtering (OT/NT) for random verses
  • Comprehensive error handling

Add to Claude config

"Bible MCP": {
    "command": "uvx",
    "args": [
    "bible-mcp"
    ]
}

Installation

The simplest way to install Bible MCP is via pip:

pip install bible-mcp

From Source

Clone the repository and install dependencies:

git clone https://github.com/trevato/bible-mcp.git
cd bible-mcp
pip install -e .

Requirements:

  • Python 3.10+
  • Dependencies are managed via pyproject.toml

Usage

Running with MCP Development Tools

The fastest way to test the server is with the MCP Inspector:

mcp dev bible_server.py

This will run the server and open a web interface for testing.

Installing in Claude Desktop

To use this server with Claude Desktop:

mcp install bible_server.py

After installation, you can access Bible content in your Claude conversations.

Direct Execution

You can also run the server directly:

python -m bible_server

Available Resources

Bible MCP provides the following resources:

Chapter Resource

bible://{translation}/{book}/{chapter}

Example: bible://web/JHN/3 (John chapter 3 from the World English Bible)

Verse Resource

bible://{translation}/{book}/{chapter}/{verse}

Example: bible://kjv/JHN/3/16 (John 3:16 from the King James Version)

Random Verse Resource

bible://random/{translation}

Example: bible://random/web (Random verse from the World English Bible)

Available Tools

Get Verse by Reference

get_verse_by_reference(reference: str, translation: str = "web") -> str

Parameters:

  • reference: Bible reference (e.g., "John 3:16", "Matthew 5:1-10")
  • translation: Translation ID (default: "web")

Example:

get_verse_by_reference("Psalm 23:1", "kjv")

Get Random Verse

get_random_verse_tool(translation: str = "web", testament: Optional[str] = None) -> str

Parameters:

  • translation: Translation ID (default: "web")
  • testament: Optional filter for "OT" (Old Testament) or "NT" (New Testament)

Example:

get_random_verse_tool(translation="web", testament="NT")

List Available Translations

list_available_translations() -> str

Returns a formatted list of all available Bible translations.

Prompts

Analyze Verse Prompt

analyze_verse_prompt(reference: str) -> str

Creates a prompt for analyzing a specific Bible verse.

Example:

analyze_verse_prompt("John 3:16")

Find Verses on Topic Prompt

find_verses_on_topic_prompt(topic: str) -> str

Creates a prompt for finding verses on a specific topic.

Example:

find_verses_on_topic_prompt("love")

Supported Translations

Bible MCP supports multiple translations through the bible-api.com service:

  • World English Bible (web) - Default
  • King James Version (kjv)
  • American Standard Version (asv)
  • Bible in Basic English (bbe)
  • And many more...

Run the list_available_translations tool to see all available translations.

Examples

Example: Getting John 3:16 from the Web UI

When running mcp dev bible_server.py, you can navigate to the Web UI and:

  1. Select the "Resources" tab
  2. Enter bible://web/JHN/3/16 in the URI field
  3. Click "Read Resource"

Example: Using Bible MCP in an LLM Tool

from mcp import ClientSession, StdioServerParameters
import asyncio

async def use_bible_mcp():
    server_params = StdioServerParameters(
        command="python",
        args=["bible_server.py"],
    )
    
    async with ClientSession.from_stdio_server(server_params) as session:
        # Initialize session
        await session.initialize()
        
        # Get a verse
        content, _ = await session.read_resource("bible://web/JHN/3/16")
        print(content)
        
        # Use a tool
        result = await session.call_tool(
            "get_random_verse_tool", 
            {"testament": "NT"}
        )
        print(result.content[0].text)

if __name__ == "__main__":
    asyncio.run(use_bible_mcp())

Development

See CONTRIBUTING.md for details on how to contribute to this project.

Credits

This project uses the Bible API service provided by bible-api.com.

License

MIT

Metadata

Release files for bible-mcp 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bible-mcp 1.0.0
File Size Uploaded Provenance
bible_mcp-1.0.0.tar.gz 19.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for bible-mcp 1.0.0
File Interpreter ABI Platform
bible_mcp-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 50.8 kB

Release files / bible_mcp-1.0.0.tar.gz

Download URL bible_mcp-1.0.0.tar.gz
Size 19.7 kB
Tags Source
SHA-256 checksum
How to use checksums
56d1570e1e5399556f0bd54ff09daf15cfcd18c67ced96e5454bf432e6b150a9
BLAKE2b-256 checksum
How to use checksums
182fc2e6f9e3582d5ad7409a2502bac3ac3ae44d75928e563bb8c897d89c9a72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.3

Release files / bible_mcp-1.0.0-py3-none-any.whl

Download URL bible_mcp-1.0.0-py3-none-any.whl
Size 31.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
86c7dc2e86a09c956b077823ad279fc87657f56cbf9cf33a83558f6ec25953e1
BLAKE2b-256 checksum
How to use checksums
cf941874ba318ec5db59bc3283933c6f10eb6dc23899d504ed51af5ff2f7acfa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.3

Security for bible-mcp 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page