Bible MCP Server
Uses FastAPI framework to provide REST API endpoints alongside MCP protocol support for Bible passage retrieval
Integrates with GitHub Copilot to enable AI-assisted Bible passage lookup and retrieval through natural language queries
Uses Pydantic models for data validation and type safety in Bible passage requests and configuration management
Built with Python 3.10+ runtime environment for Bible passage retrieval and MCP server functionality
Provides OpenAPI documentation through Swagger UI for exploring and testing Bible passage retrieval REST API endpoints
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Bible MCP Servershow me John 3:16 in ESV"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Bible MCP Server
A Model Context Protocol (MCP) server that provides Bible passage retrieval functionality using the mcp-weather core infrastructure.
This server enables AI assistants to access Bible passages from various translations, with support for multiple deployment modes:
--mode stdio(default): MCP protocol over stdin/stdout for direct AI assistant integration--mode mcp: MCP protocol over HTTP for networked AI assistant access--mode rest: Both REST API and MCP protocol over HTTP for maximum flexibility
Features
The Bible MCP Server provides:
MCP Tools (for AI assistants)
get_passage(passage, version)- Retrieve Bible passages. Supports multiple passages separated by semicolons (e.g., "John 3:16; Romans 8:28").
REST API Endpoints
GET /health- Health checkGET /info- Service informationPOST /passage- Get Bible passageGET /docs- OpenAPI documentation (Swagger UI)
Supported Bible Versions
ESV (English Standard Version)
NIV (New International Version)
KJV (King James Version)
NASB (New American Standard Bible)
NKJV (New King James Version)
NLT (New Living Translation)
AMP (Amplified Bible)
MSG (The Message)
Related MCP server: bible-mcp
Installation
Prerequisites
Python 3.10+
uvpackage manager
Installing uv
On Linux/macOS:
curl -LsSf https://astral.sh/uv/install.sh | shOn Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Alternatively, you can install uv using pip:
pip install uvAfter installation, restart your terminal or run source ~/.bashrc (Linux/macOS) or restart your command prompt (Windows).
Step 1: Install Dependencies
# From this directory
cd mcp-bible
# Install dependencies
uv syncStep 2: Configure Environment
# Copy example configuration
cp .env.example .env
# Edit .env with your settings
vi .envUsage
The Bible MCP server supports three deployment modes via command-line arguments:
Mode 1: stdio (Default) - Direct AI Assistant Integration
# Default mode - MCP over stdin/stdout
uv run mcp-bible
# Explicitly specify stdio mode
uv run mcp-bible --mode stdioPerfect for direct integration with AI assistants like GitHub Copilot, Claude Desktop, etc.
Mode 2: mcp - MCP Protocol over HTTP
# MCP-only server on HTTP (no REST API)
uv run mcp-bible --mode mcp --port 3000 --no-authProvides MCP protocol over HTTP at http://localhost:3000/mcp for networked AI assistant access.
Mode 3: rest - Full HTTP Server (REST + MCP)
# Full server with both REST API and MCP protocol
uv run mcp-bible --mode rest --port 3000 --no-authThe server will start at http://localhost:3000 with:
MCP endpoint:
http://localhost:3000/mcpREST API:
http://localhost:3000/*API docs:
http://localhost:3000/docsHealth check:
http://localhost:3000/health
Test the MCP Tools
You can test the MCP tools by connecting GitHub Copilot or using a test client:
// .vscode/mcp.json
{
"servers": {
"bible": {
"type": "http",
"url": "http://localhost:3000/mcp"
}
}
}Then ask Copilot:
"Show me John 3:16"
"What does Romans 8 say?"
"Read Psalm 23 in NIV"
Test the REST API
# Health check
curl http://localhost:3000/health
# Get service info
curl http://localhost:3000/info
# Get a Bible passage
curl -X POST "http://localhost:3000/passage" \
-H "Content-Type: application/json" \
-d '{
"passage": "John 3:16",
"version": "ESV"
}'
# Get multiple passages
curl -X POST "http://localhost:3000/passage" \
-H "Content-Type: application/json" \
-d '{
"passage": "John 3:16; Romans 8:28; Philippians 4:13",
"version": "NIV"
}'
# Get an entire chapter
curl -X POST "http://localhost:3000/passage" \
-H "Content-Type: application/json" \
-d '{
"passage": "Mark 2",
"version": "ESV"
}'CLI Help and Options
# See all available options
uv run mcp-bible --help
# Usage examples:
uv run mcp-bible # stdio mode (default)
uv run mcp-bible --mode stdio # stdio mode
uv run mcp-bible --mode mcp --port 4000 # MCP-only HTTP on port 4000
uv run mcp-bible --mode rest --port 4000 # REST+MCP HTTP on port 4000
uv run mcp-bible --mode rest --no-auth # Disable authenticationEnvironment Variables (Alternative to CLI)
You can also configure the server using environment variables:
# Alternative: Set environment variables
export MCP_TRANSPORT=http # stdio or http
export MCP_ONLY=false # true for MCP-only, false for REST+MCP
export MCP_HOST=0.0.0.0 # Host to bind to
export MCP_PORT=3000 # Port number
export AUTH_ENABLED=false # Enable/disable authentication
# Then run without arguments
uv run mcp-bibleTest All Modes
Run the comprehensive test suite:
uv run tests/test_modes.pyOr try the interactive curl examples:
./examples/curl_examples.shProject Structure
mcp_bible/
├── __init__.py # Package metadata
├── config.py # Configuration management (extends mcp-weather core)
├── bible_service.py # Business logic (Bible API client)
├── service.py # MCP service wrapper (with automatic feature discovery)
├── server.py # Server implementation (CLI mode support)
├── features/ # Feature modules (MODULAR PATTERN)
│ ├── __init__.py
│ └── get_passage/ # Get passage feature
│ ├── __init__.py
│ ├── instructions.md # 📝 Comprehensive documentation (core.utils)
│ ├── models.py # Feature-specific models
│ ├── tool.py # MCP tool definition (uses @inject_docstring)
│ └── routes.py # REST API endpoints (uses load_instruction)
├── shared/ # Shared models and utilities
│ ├── __init__.py
│ └── models.py # Base models, error types
├── tests/ # Test suite
│ └── test_modes.py # Mode support testing
└── examples/ # Usage examples
└── curl_examples.sh # Interactive REST API examplesCore.utils Integration
This project uses the core.utils pattern from mcp-weather for dynamic documentation:
instructions.md: Comprehensive feature documentation in markdown@inject_docstring: Dynamically injects markdown into MCP tool docstringsload_instruction: Loads markdown for REST API documentationSingle source of truth: Same documentation for both MCP tools and REST endpoints
How It Works
Features Pattern (Automatic Discovery)
This server uses automatic feature discovery - just like mcp-weather!
Add a new feature in 4 steps:
Create feature directory:
features/my_feature/Add instructions.md: Comprehensive documentation in markdown
Add tool.py: With
register_tool(mcp, service)function using@inject_docstringAdd routes.py (optional): With
create_router(service)function usingload_instruction
Example feature structure:
# features/my_feature/tool.py
from core.utils import inject_docstring, load_instruction
@mcp.tool()
@inject_docstring(lambda: load_instruction("instructions.md", __file__))
async def my_tool(param: str) -> dict:
"""Documentation loaded from instructions.md"""
return {"result": param}
# features/my_feature/routes.py
from core.utils import load_instruction
@router.post("/endpoint", description=load_instruction("instructions.md", __file__))
async def endpoint():
"""Same documentation for REST API"""
return {"data": "value"}That's it! The service automatically:
Discovers your feature
Registers MCP tools from
tool.pyIncludes REST routes from
routes.pyLoads documentation from
instructions.md
No manual registration needed!
1. Configuration Layer (config.py)
Extends core configuration classes with service-specific settings:
from core.config import BaseServerConfig
class BibleAPIConfig(BaseModel):
base_url: str
supported_versions: List[str]
class AppConfig(BaseModel):
server: ServerConfig
bible_api: BibleAPIConfig2. Business Logic Layer (bible_service.py)
Pure business logic, independent of MCP/REST:
class BibleService:
async def fetch_passage(self, passage: str, version: str) -> dict:
# Bible passage retrieval logic here
...3. MCP Service Wrapper (service.py)
Implements BaseService to expose business logic via MCP:
from core.server import BaseService
class BibleMCPService(BaseService):
def register_mcp_tools(self, mcp: FastMCP) -> None:
# Automatic feature discovery and registration4. Server Implementation (server.py)
Extends BaseMCPServer to create the complete server:
from core.server import BaseMCPServer
class BibleMCPServer(BaseMCPServer):
@property
def service_title(self) -> str:
return "Bible MCP Server"
def create_router(self) -> APIRouter:
# Add REST endpoints
...Key Benefits of Using mcp-weather Core
By using mcp-weather as a dependency, you get:
✅ No boilerplate - Server infrastructure is ready to use
✅ Multiple deployment modes - stdio, MCP-only HTTP, REST+MCP HTTP via CLI
✅ Dynamic documentation - Markdown-based docs via core.utils
✅ Dual interfaces - MCP + REST API automatically
✅ Configuration - Environment variable management
✅ Error handling - Comprehensive exception handling
✅ Type safety - Full Pydantic models and type hints
✅ Async support - Async-first design throughout
✅ Logging - Structured logging built-in
✅ CORS - Configurable CORS support
✅ Health checks - Standard endpoints
✅ Testing - Comprehensive test suite included
Customization
Add New MCP Tools
Edit mcp_bible/service.py:
def register_mcp_tools(self, mcp: FastMCP) -> None:
@mcp.tool()
async def my_new_tool(param: str) -> dict:
"""Tool description for AI"""
return {"result": "value"}Add New REST Endpoints
Edit mcp_bible/server.py:
def create_router(self) -> APIRouter:
router = APIRouter()
@router.get("/my-endpoint")
async def my_endpoint():
return {"data": "value"}
return routerAdd New Configuration
Edit mcp_bible/config.py:
class BibleAPIConfig(BaseModel):
my_new_field: str = Field(default="value")Troubleshooting
Import Errors
Make sure you're importing from core, not mcp_weather.core:
from core.server import BaseMCPServer # ✅ Correct
from mcp_weather.core.server import BaseMCPServer # ❌ WrongModule Not Found
Make sure mcp-weather is installed:
uv pip list | grep mcp-weatherIf not installed, install it:
uv sync # Installs from pyproject.tomlFeatures Implemented ✅
✅ Multiple deployment modes (stdio, mcp, rest)
✅ CLI interface with comprehensive help
✅ Dynamic documentation using core.utils
✅ Bible passage retrieval from BibleGateway.com
✅ 8 Bible translations supported
✅ Multiple passage support (semicolon-separated)
✅ Comprehensive test suite with mode testing
✅ REST API examples and curl scripts
✅ Auto-discovery of features
✅ Structured logging throughout
Next Steps
Add authentication providers (Authentik integration)
Add more Bible API sources (Bible API, ESV API)
Implement passage search and concordance
Add daily verses and reading plans
Add Redis caching for performance
Add metrics and monitoring
Add Docker deployment examples
Learn More
License
This project is provided as-is for use and modification.
Available Tools
1 toolget_passageA
Bible Passage Retrieval Tool
Get Bible passages from multiple translations with automatic content parsing and cleaning.
This tool retrieves Bible passages from BibleGateway.com, supporting multiple Bible versions and passage formats. The content is automatically cleaned and formatted for easy reading.
Legal Notice: All Bible text content is sourced from BibleGateway.com. All copyright, licensing, and other legal concerns regarding the Bible translations and text content are covered by BibleGateway.com's terms of service and licensing agreements with the respective publishers. This tool serves as an interface to publicly available content and respects all applicable copyright restrictions.
Parameters
passage (required)
Type: string
Description: Bible reference(s) to retrieve
Format: Book Chapter:Verse or Book Chapter
Examples:
"John 3:16"- Single verse"John 3:16-21"- Verse range"John 3"- Entire chapter"Mark 2:1-12"- Specific verse range"John 3:16; Romans 8:28"- Multiple references
version (optional)
Type: string
Default: "ESV"
Description: Bible translation version
Supported versions: ESV, NIV, KJV, NASB, NKJV, NLT, AMP, MSG
Usage Examples
Single verse:
{
"passage": "John 3:16",
"version": "NIV"
}Chapter range:
{
"passage": "Mark 2:1-12",
"version": "ESV"
}Entire chapter:
{
"passage": "Psalm 23",
"version": "KJV"
}Multiple passages:
{
"passage": "John 3:16; Romans 8:28; Philippians 4:13",
"version": "ESV"
}Response Format
Returns a structured response containing:
success: Whether the request was successfulpassage: The requested Bible referenceversion: The Bible version usedtext: The passage text (cleaned and formatted)error: Error message if request failed
Supported Bible Versions
ESV - English Standard Version (default)
NIV - New International Version
KJV - King James Version
NASB - New American Standard Bible
NKJV - New King James Version
NLT - New Living Translation
AMP - Amplified Bible
MSG - The Message
When to Use This Tool
Scripture study and research
Sermon preparation and biblical analysis
Cross-referencing verses across translations
Gathering biblical supporting material
Comparing different translation renderings
Content Processing
The tool automatically:
Removes HTML formatting and ads
Cleans up spacing and formatting
Preserves verse numbers and structure
Handles chapter headings appropriately
Supports multi-passage requests
Legal Compliance and Copyright
Content Source: All Bible text is retrieved from BibleGateway.com (https://www.biblegateway.com/)
Copyright Protection: BibleGateway.com handles all copyright, licensing, and legal compliance for Bible translations. Each translation (ESV, NIV, KJV, etc.) has specific copyright holders and licensing terms that are managed and enforced by BibleGateway.com.
Fair Use: This tool accesses publicly available content through BibleGateway.com's web interface for educational, research, and personal study purposes. All copyright and licensing obligations are covered by BibleGateway.com's agreements with publishers.
Compliance: Users should be aware that while this tool provides access to Bible content, all legal responsibilities regarding copyright, attribution, and proper use remain with the respective copyright holders as managed by BibleGateway.com.
| Name | Required | Description | Default |
|---|---|---|---|
| passage | Yes | ||
| version | No | ESV |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and excels by disclosing critical behavioral traits: it specifies the data source (BibleGateway.com), describes content processing (removes HTML, cleans spacing), handles multi-passage requests, and includes legal compliance details like copyright management and fair use. This provides comprehensive operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Parameters, Usage Examples, Response Format, etc.), but it is overly verbose with redundant information (e.g., listing supported versions twice) and extensive legal disclaimers that could be condensed. While front-loaded with purpose, some sentences like the repeated version lists do not earn their place efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (external API integration, content processing) and lack of annotations, the description is highly complete: it covers purpose, usage, parameters, examples, response format, legal compliance, and processing details. The output schema is noted as present, so the description appropriately focuses on operational context without needing to explain return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description fully compensates with detailed parameter documentation: it explains the 'passage' parameter with format rules, examples, and support for multiple references, and the 'version' parameter with default value, supported versions list, and optional status. This adds substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('retrieves', 'get') and resources ('Bible passages', 'BibleGateway.com'), including key capabilities like multiple translations and content cleaning. It distinguishes itself by mentioning automatic parsing and cleaning, which is specific and actionable for an AI agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides a 'When to Use This Tool' section with specific scenarios like 'Scripture study and research', 'Sermon preparation', and 'Cross-referencing verses across translations'. It also includes legal context about when usage is appropriate (educational, research, personal study), offering clear guidance despite no sibling tools to differentiate from.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
- First observed
get_passage
TDQS
With only one tool, there is no possibility of confusion or overlap between tools. The tool 'get_passage' has a clearly defined and singular purpose of retrieving Bible passages, making disambiguation perfect.
Since there is only one tool, naming consistency is inherently perfect. The tool name 'get_passage' follows a clear verb_noun pattern, but with no other tools to compare, consistency is not applicable in a meaningful way.
A single tool for a Bible server is too minimal for the domain's scope. While 'get_passage' handles retrieval well, typical Bible-related tasks like searching, comparing translations, or accessing metadata are missing, making the tool count feel insufficient and limiting for comprehensive use.
The server is severely incomplete for a Bible domain. It only provides passage retrieval, lacking essential operations such as search, cross-referencing, translation comparison, or access to book/chapter lists. This creates significant gaps that will hinder agents in performing common Bible study tasks.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Bible MCP — wraps the Bible API (free, no auth)
Scripture-cited answers to any Bible question, plus verse text and study pages, for AI agents.
Bible corpus MCP server: scripture, Greek/Hebrew interlinear data, cross-refs, semantic search.
Bible translations, books, chapters, verses, and search
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceProvides structured access to Scripture through the BibleBridge API, enabling semantic search, contextual verse retrieval, and cross-reference analysis. It supports natural language reference normalization and comparative theological exploration across different passages.1-
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to look up Bible verses, search across translations, and compare different versions locally without API keys.-
- AlicenseAqualityAmaintenanceFree, no-key MCP server for reading scripture from 35+ public-domain translations in 8 languages. Lets users fetch verses, chapters, and passages via natural language from any MCP client.7MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI to access Bible translations in hundreds of languages, original Greek and Hebrew texts with morphology, word-level interlinear alignments, and lexicons.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/geosp/mcp-bible'
If you have feedback or need assistance with the MCP directory API, please join our Discord server