A Model Context Protocol server that exposes Bible content from bible-api.com for Large Language Models like Claude.
- 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
"Bible MCP": {
"command": "uvx",
"args": [
"bible-mcp"
]
}
The simplest way to install Bible MCP is via pip:
pip install bible-mcp
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
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.
To use this server with Claude Desktop:
mcp install bible_server.py
After installation, you can access Bible content in your Claude conversations.
You can also run the server directly:
python -m bible_server
Bible MCP provides the following resources:
bible://{translation}/{book}/{chapter}
Example: bible://web/JHN/3
(John chapter 3 from the World English Bible)
bible://{translation}/{book}/{chapter}/{verse}
Example: bible://kjv/JHN/3/16
(John 3:16 from the King James Version)
bible://random/{translation}
Example: bible://random/web
(Random verse from the World English Bible)
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_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() -> str
Returns a formatted list of all available Bible translations.
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(topic: str) -> str
Creates a prompt for finding verses on a specific topic.
Example:
find_verses_on_topic_prompt("love")
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.
When running mcp dev bible_server.py
, you can navigate to the Web UI and:
- Select the "Resources" tab
- Enter
bible://web/JHN/3/16
in the URI field - Click "Read Resource"
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())
See CONTRIBUTING.md for details on how to contribute to this project.
This project uses the Bible API service provided by bible-api.com.
MIT