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
From PyPI (recommended)
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:
- Select the "Resources" tab
- Enter
bible://web/JHN/3/16in the URI field - 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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| bible_mcp-1.0.0.tar.gz | 19.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.