BibleMCP
Click on "Deploy 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., "@BibleMCPsearch for verses about love in BSB"
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.
BibleMCP
Production-ready MCP server that lets LLMs explore, analyze, and reason over the Bible using local ChromaDB stores and Mistral embeddings.
Supported translations
Each translation is stored in its own isolated local Chroma directory (never mixed):
Alias | helloao ID | Display name |
|
| Berean Standard Bible |
|
| American Standard Version (1901) |
|
| Bible in Basic English |
|
| King James (Authorized) Version |
Related MCP server: miniMCP
Architecture
MCP client (Cursor / Claude Desktop)
│ stdio
▼
biblemcp/server.py → tools → services → storage (Chroma per translation)
↓
helloao API (ingest)
Mistral API (embeddings)Setup
1. Install
uv sync --extra devThis creates .venv, installs the project in editable mode, and adds dev dependencies (pytest).
Note:
onnxruntimeis pinned to<=1.19.2because newer releases dropped Intel Mac (x86_64) wheels. BibleMCP uses Mistral for embeddings, not Chroma's built-in ONNX embedder — this pin only satisfies ChromaDB's install requirement.
Run project commands through uv without activating the venv:
uv run biblemcp ingest --help
uv run pytest
uv run python -m biblemcp.server2. Configure environment
Copy .env.example to .env and set your Mistral key:
cp .env.example .envRequired for ingest and semantic search:
MISTRAL_API_KEY
Optional:
BIBLEMCP_DATA_DIR(default./data/chroma)BIBLEMCP_DEFAULT_TRANSLATION(defaultBSB)
3. Ingest Bible text
Before semantic tools work, populate the local databases:
uv run biblemcp ingest --translation BSB
uv run biblemcp ingest --allThis fetches text from helloao, embeds verses with mistral-embed, and upserts into data/chroma/{bsb,asv,bbe,kjav}/.
Re-running ingest is safe (upsert).
MCP client configuration
Cursor
Add to your MCP settings:
{
"mcpServers": {
"biblemcp": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/BibleMCP", "run", "python", "-m", "biblemcp.server"],
"env": {
"MISTRAL_API_KEY": "your_key",
"BIBLEMCP_DATA_DIR": "/absolute/path/to/BibleMCP/data/chroma"
}
}
}
}Claude Desktop
{
"mcpServers": {
"biblemcp": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/BibleMCP", "run", "python", "-m", "biblemcp.server"],
"env": {
"MISTRAL_API_KEY": "your_key",
"BIBLEMCP_DATA_DIR": "/absolute/path/to/BibleMCP/data/chroma"
}
}
}
}Use absolute paths for --directory and BIBLEMCP_DATA_DIR. If uv is not on your PATH for the MCP host, use the full path to the uv binary.
Screenshots
Configured in Cursor
Once connected, biblemcp shows as active with all 10 tools available:

In action
Ask for verses on a theme — the agent searches and fetches passages through the MCP tools:


The 10 tools
Tool | What it does |
| Semantic keyword/phrase search |
| Exact single-verse lookup |
| Exact verse range within a chapter |
| Semantic neighbors for a reference (not curated TSK) |
| Semantic topic search |
| Semantic search framed by a term (not Strong's) |
| Relevant verses about a character (no biography DB) |
| Relevant verses for an event (no date database) |
| Chapter text + instructions for the host LLM to summarize |
| Primary + related passages + question for host LLM analysis |
All tools accept an optional translation field (BSB, ASV, BBE, KJAV).
Development
Run tests:
uv run pytestRun the server locally:
uv run python -m biblemcp.serverCLI help:
uv run biblemcp ingest --helpProject layout
src/biblemcp/
bible/ # book aliases, reference parsing
clients/ # helloao + Mistral embeddings
models/ # Pydantic types
services/ # ingest, retrieval, search, context
storage/ # per-translation Chroma store
tools/ # MCP tool schemas, handlers, registry
server.py # FastMCP entrypoint
cli.py # ingest CLI
tests/ # unit, service, and tool tests
data/chroma/ # local vector stores (gitignored)License
Apache-2.0 — see LICENSE.
Available Tools
10 toolscharacter_profileARead-only
Return verses about a biblical character (no curated biography database).
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds that it returns verses, which is consistent, but provides no additional behavioral context such as rate limits, error handling, or what happens for non-existent characters.
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 a single, focused sentence with no fluff. It immediately conveys the core functionality and a key differentiator.
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 that an output schema exists, the description doesn't need to detail return format. However, it omits how the tool handles ambiguous names, or how it selects verses (e.g., by direct mention or broader association). This leaves gaps for an AI agent to resolve, especially alongside similar sibling tools.
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?
Schema description coverage is 0% for parameters, meaning the schema itself lacks meaningful descriptions. The tool description does not mention any parameter details (name, limit, translation) or how they affect results, forcing the agent to infer from parameter names and constraints.
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 returns verses about a biblical character and explicitly distinguishes itself from a curated biography database. This verb+resource combination is specific and differentiates from sibling tools like search_verse or get_verse.
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 implies usage for retrieving raw verses rather than biography, but it does not explicitly state when to use this tool versus alternatives like search_verse or topic_lookup. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cross_referenceARead-only
Find semantically related verses for a reference (not a curated cross-ref index).
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, so the agent knows the operation is safe. The description adds value by clarifying the tool uses semantic matching ('not a curated cross-ref index'), which is a behavioral trait beyond the annotation. No contradictions.
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 a single, front-loaded sentence with no wasted words. The parenthetical adds essential clarification without bloat. It earns its place.
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?
Despite having an output schema (reducing need to explain returns), the description does not address the input structure or constraints. It lacks guidance on how to use parameters like limit or translation, making it incomplete for a tool with moderate complexity.
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 description does not mention any parameters or their roles. Schema description coverage is 0% (the tool description lacks param info), and while the schema itself has some field descriptions, the tool description adds no meaning beyond the schema. For a tool with three sub-parameters, this is insufficient.
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 'Find semantically related verses for a reference', specifying the verb ('Find') and resource ('semantically related verses'). It also distinguishes itself from a curated cross-ref index, differentiating it from siblings like search_verse or topic_lookup.
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 implies usage for finding related verses via semantic similarity rather than a curated index, but it does not explicitly state when to prefer this over alternatives like search_verse or topic_lookup. No exclusions or contextual conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_passageARead-only
Retrieve a contiguous range of verses within one chapter.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, so the description does not need to reiterate safety. However, no additional behavioral traits (e.g., error handling, missing chapters) are disclosed beyond the basic operation.
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?
Single sentence, concise, front-loaded with key action and scope. No wasted words.
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?
With an output schema present, return format is covered, but the description omits details like translation default (null) and book name expectations. Adequate for a simple tool but could be more complete.
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?
Schema description coverage is 0% (no property descriptions except translation). The description does not elaborate on parameter semantics (e.g., book format, verse numbering conventions), forcing reliance on the schema alone.
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?
Description explicitly states 'retrieve a contiguous range of verses within one chapter', clearly defining the verb and resource, and implicitly distinguishes from sibling tools like get_verse (single verse) and search_verse.
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?
No explicit guidance on when to use this tool versus alternatives, though the sibling names provide context. The description lacks when-not-to-use or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_verseARead-only
Retrieve the exact text of a single verse.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, confirming safe read-only behavior. The description adds 'exact text' but no further behavioral traits (e.g., default translation, rate limits, or auth requirements). It is consistent but does not significantly augment the annotations.
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 a single, front-loaded sentence with no extraneous words. Every word earns its place.
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?
For a simple tool like this, with existing output schema and annotations, the description is sufficient. It clearly states the core functionality without needing elaboration.
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 input schema already includes descriptions for 'book' and 'translation' parameters. The description adds no new semantic information beyond the schema. Schema description coverage is partial; the description does not compensate for the missing chapter/verse descriptions.
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 explicitly states 'Retrieve the exact text of a single verse,' with a specific verb+resource combination that clearly distinguishes it from sibling tools like 'get_passage' (multiple verses) or 'search_verse' (search across verses).
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?
No guidance is provided on when to use this tool versus alternatives. The description does not mention sibling tools or specify conditions for use (e.g., when you need a single exact verse vs. a passage).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
original_language_lookupARead-only
Explore a Greek/Hebrew term via related English passages (not a Strong's lexicon).
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already indicates the tool is non-destructive. The description adds no further behavioral details (e.g., performance, required permissions, output format), but does not contradict the annotation.
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 a single, front-loaded sentence with no extraneous words. It efficiently conveys the tool's purpose and differentiator.
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?
With an output schema available and unambiguous annotations, the description provides adequate context for a focused lookup tool. It could briefly explain what 'related English passages' means, but the core purpose is clear.
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 description mentions the core parameter 'term' but adds no details about 'limit', 'testament', or 'translation' beyond what the input schema already provides. Since the schema contains descriptions for most parameters, the description does not significantly enhance understanding.
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 function: 'Explore a Greek/Hebrew term via related English passages'. It distinguishes itself from a Strong's lexicon and, by implication, from sibling tools like search_verse or cross_reference.
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 gives a negative hint ('not a Strong's lexicon') but lacks explicit when-to-use or when-not-to guidance. It does not reference alternative sibling tools or specify conditions for this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_verseBRead-only
Find Bible verses by keyword or phrase using semantic search.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, so the tool's read-only nature is covered. The description adds 'semantic search' which hints at behavior, but does not disclose result behavior (e.g., empty results, ranking). No contradiction with annotations.
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 a single concise sentence with no wasted words. However, it may be too brief for a search tool, lacking parameter context.
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 has multiple parameters and siblings of various lookup types, the description is incomplete. It does not mention the translation option, limit behavior, or when to prefer this over other lookup tools. The presence of an output schema reduces the need for return value description, but parameter usage guidance is missing.
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?
Schema description coverage is 0%, and the description provides no parameter information. The schema includes query (required), limit (default 5, max 20), and translation (enum of 4), but the description adds no meaning to these parameters.
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 'Find Bible verses by keyword or phrase using semantic search' clearly states the verb (find), resource (Bible verses), and method (keyword/phrase semantic search). This distinguishes it from siblings like get_verse (exact verse retrieval) and get_passage (passage by reference).
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 implies usage for keyword/phrase searching, but lacks explicit guidance on when to use versus alternatives like get_verse or cross_reference. No when-not or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
summarize_passageBRead-only
Fetch chapter text and instructions for the host model to summarize it.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only (readOnlyHint: true). The description adds value by clarifying that summarization is performed by the host model, not the tool itself, and that it returns text and instructions.
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?
One sentence, concise but lacks detail. It is not precisely front-loaded and sacrifices completeness for brevity.
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 sibling tools, the description does not sufficiently differentiate use cases. Without more context about what 'instructions' are or how the output is structured (despite having an output schema), the description feels incomplete.
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?
Schema description coverage is 0% per context, meaning the tool description does not explain parameters. The schema itself has some descriptions (e.g., translation and style), but the tool description fails to compensate for the lack of parameter documentation.
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 fetches chapter text and instructions for summarization, distinguishing it from get_passage which likely only retrieves text. However, 'instructions' is somewhat vague.
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?
No guidance on when to use this tool versus siblings like get_passage, search_verse, etc. The description does not specify context or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
theological_analysisCRead-only
Assemble primary and related passages plus a question for theological analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not add behavioral context beyond the readOnlyHint annotation. It does not explain what happens if the reference is invalid, or how related passages are determined.
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 a single short sentence, which is concise but at the expense of completeness. It does not fully earn its place as it lacks critical details.
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 complexity of theological analysis, the description is too minimal. Even with an output schema present, the description should clarify the nature of the assembled passages and the analysis performed.
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?
Schema description coverage is low (only translation has a description). The description does not mention any parameters, leaving the agent to infer meaning from property names without format or constraint details.
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 states it assembles passages and a question for theological analysis, which gives a general idea. However, 'assemble' is ambiguous and does not clearly distinguish from sibling tools like 'summarize_passage' or 'cross_reference' that also deal with passages.
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?
No guidance is provided on when to use this tool versus alternatives. With nine sibling tools covering similar functionality, the lack of usage instructions is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
timeline_event_lookupARead-only
Find verses describing a biblical event (no chronology database in v1).
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and description is consistent. It adds the version-specific limitation ('no chronology database in v1'), which is valuable context. No additional behavioral details are needed given the output schema exists.
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?
Single sentence with no wasted words. The parenthetical adds crucial context without bloating. Excellent structure.
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 presence of an output schema and parameter descriptions, the description covers the core action and key limitation. It could briefly mention the result format, but the output schema suffices.
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?
Schema descriptions cover all parameters (event, limit, translation) with minLength, default, max, enum hints. The tool description adds no extra param info, so baseline of 3 is appropriate.
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?
Description uses specific verb 'Find verses' and resource 'biblical event', clearly distinguishing from sibling tools like topic_lookup or character_profile. The parenthetical limitation further clarifies scope.
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?
Describes what the tool does ('Find verses') but provides no guidance on when to use it over alternatives like search_verse or topic_lookup. The limitation note implies a constraint but does not offer alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
topic_lookupARead-only
Find verses related to a theological topic via semantic search.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description's 'semantic search' implies a read-only operation. It adds no further behavioral context such as performance characteristics or input constraints beyond what annotations cover. The description does not contradict annotations.
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?
A single, front-loaded sentence that efficiently conveys the tool's core function with no extraneous words or repetition.
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 existence of an output schema, the description does not need to detail return values, but it omits usage tips for parameters like 'limit' or 'translation'. The tool's purpose is clear, but deeper guidance on effective use is absent.
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?
Schema description coverage is 0%, and the description only explains the 'topic' parameter with an example ('e.g. grace or faith'). The 'limit' and 'translation' parameters lack explanatory context in the description, though the schema provides some enum descriptions for translation.
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 'Find verses related to a theological topic via semantic search' clearly states the action (find) and resource (verses) with a specific method (semantic search), distinguishing it from sibling tools like search_verse (likely keyword) and theological_analysis (likely analysis).
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 implies semantic search for broad topics but does not provide explicit guidance on when to use this tool versus alternatives like search_verse for exact phrases or get_verse for specific references. No exclusions or prerequisites are mentioned.
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.
10 tool updates
v0.1.0- First observed
character_profile - First observed
cross_reference - First observed
get_passage - First observed
get_verse - First observed
original_language_lookup - First observed
search_verse - First observed
summarize_passage - First observed
theological_analysis - First observed
timeline_event_lookup - First observed
topic_lookup
TDQS
Scored across 10 tools
Each tool targets a distinct use case: semantic search, exact retrieval, passage ranges, cross-referencing, topical lookup, original language, character profiles, timeline events, summarization, and theological analysis. Overlap is minimal and clarified by descriptions.
Most tools follow a verb_noun pattern (search_verse, get_verse, get_passage, summarize_passage) but some use noun_noun (character_profile, theological_analysis) or noun_verb (topic_lookup). The majority are clear and predictable, with only minor deviations.
10 tools is appropriate for a Bible MCP covering search, retrieval, analysis, and reference operations. The count is well-scoped—not too few to be limiting, nor too many to overwhelm.
The tool set covers core Bible study workflows: searching, retrieving verses/passages, cross-references, topical and original language exploration, character and timeline lookups, plus summarization and theological analysis. Minor gaps like version selection or book listing are absent but not critical.
Maintenance
Related MCP Connectors
Remote ChromaDB vector database MCP server with streamable HTTP transport
Cloud-hosted MCP server for durable AI memory
Free, no-key Bible MCP server — 86 translations in 32 languages, from any MCP client.
Related MCP Servers
- AlicenseBqualityDmaintenanceA complete MCP server for Retrieval-Augmented Generation with file management and vector memory for agents. Supports multiple document formats (PDF, DOCX, TXT, MD, CSV, JSON) with semantic search using Hugging Face embeddings and ChromaDB for efficient vector storage.114 npm1MIT
- FlicenseNot gradedqualityDmaintenanceA lightweight MCP server that connects a local AI model (Ollama) with custom CRUD tools for an in-memory database, enabling natural language database management.-
- 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.71MIT
- AlicenseNot gradedqualityAmaintenancePostgreSQL-backed MCP server for deep Bible study, integrating 140+ translations, Greek/Hebrew lexicons, cross-references, and semantic search.MIT