concord-mcp
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., "@concord-mcpWhat does John 3:16 say in the WEB?"
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.
Maybe this has happened to you: you asked ChatGPT or another AI assistant for a Bible verse, and it gave you one — confident, beautiful, and not actually in the Bible. These assistants answer from memory, and their memory of Scripture is imperfect. concord-mcp fixes that one thing: every verse your assistant shows you is fetched from a real Bible on your own computer, with a reference like John 3:16 (KJV) you can check for yourself.
Are you a developer? Everything technical is in docs/DEVELOPERS.md.
What this actually is, in plain words
Three pieces work together:
Claude is the AI assistant — the one you talk to. It's made by a company called Anthropic, and you use it through a free app called Claude Desktop.
Concord is a real Bible that lives on your computer — several complete translations, plus maps, study references, and the original Greek and Hebrew, all stored locally.
concord-mcp (this project) is the connector. It hands the assistant one rule: look it up, don't recall it.
Think of a librarian with a card catalog. A good librarian doesn't quote books from memory — she walks to the shelf, opens the book, and reads you the line, spine in hand. concord-mcp gives your assistant the catalog and the shelf.
Once connected, the assistant can:
find any verse by its reference ("What does John 3:16 say?")
find a verse by its exact wording ("the one about still waters")
search by idea — "verses about anxiety" — even when the word never appears
look up what the Bible says about a subject, using a century-old study index compiled by hand
show the passages generations of readers have connected to a verse
show the Greek or Hebrew behind a verse, word by word
explain what an original-language word actually means
tell you where a place was — and honestly say "location unknown" when no one knows
walk the great journeys, like Paul's travels, stop by stop with sources
hand you a verse at random, for a verse of the day
No menus, no commands — you just ask in plain English, and the assistant chooses how to look it up.
Want to build this yourself? concord-tutorial-ai is a free five-lesson course that hand-rolls the small version of exactly this server — the loop, the one rule, the honest errors — in plain JavaScript, no AI experience needed. By the last lesson you're reading this repo's source at its v1.0.0 tag and recognizing every part.
Related MCP server: mcp-bible
Why you might want this
Quotes you can check. Every verse arrives with its reference. Open your own Bible to the same place — it will be there.
Search by meaning. "Verses about anxiety" finds Matthew 6 even though the word "anxiety" isn't in it.
Word-study depth without seminary software. Ask why John 21 uses two different Greek words for "love" and watch the answer come from the actual Greek text.
Honest unknowns. Ask where the land of Nod was, and you'll be told the truth: no one knows. No invented map pins.
The Bible stays home. The Scripture data sits on your machine, not on someone's server.
Honest downsides
Worth knowing before you spend an evening on setup:
Your conversation travels. The Bible lives on your computer, but Claude is an internet service — your questions and its answers go to the company that runs it, like any chat service. (Fully private setups exist, but they're technical — see docs/DEVELOPERS.md.)
The guarantee covers the quotes, not the commentary. When the assistant quotes a verse, that quote came off the shelf. But its explanations are still an AI talking — thoughtful-sounding, sometimes wrong. Treat it as a study aid, not a pastor. That's exactly why every quote carries a reference: so you can open the passage yourself.
Setup takes real effort. This is the most involved project in the Concord family: three free programs and one settings file, and the first time through expect 30–45 minutes. The steps below assume nothing.
The translations are older ones. Concord ships public-domain Bibles — the King James and its relatives. Faithful, beloved, and in older English; modern copyrighted translations (NIV, ESV) are not included.
What you'll need
A computer (Windows or Mac) with about 2 GB of free disk space
An internet connection for the setup and for talking to Claude
A free Claude account
30–45 minutes, once
Get it running
1. Install Docker Desktop. Docker is a free tool that runs a program and everything it needs in a tidy, self-contained bundle — Concord arrives as one of those bundles. Download it from docker.com, install, and open it once so it's running (look for the whale icon).
2. Get Concord running. Concord is the Bible itself. (Already using songbird? You already have Concord running — skip ahead to step 3.) Follow the two-step quickstart in Concord's README: download it, then start it with one command. When it's up, the Bible is being served on your computer.
3. Install uv. uv is a small free helper that downloads and runs this project for you.
Open the Terminal app, paste this line, and press Enter:
curl -LsSf https://astral.sh/uv/install.sh | shOpen PowerShell (search "PowerShell" in the Start menu), paste this line, and press Enter:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"4. Download this project.
Click the green Code button near the top of this page, then
Download ZIP. Unzip it somewhere you'll be able to find again — your
Documents folder is fine. Remember where: you'll type that location in step 6.
5. Install Claude Desktop. Download it from claude.ai/download, install, and sign in with your free account.
6. Tell Claude Desktop about the connector.
This is the one fiddly step — a small settings file. In Claude Desktop, open
Settings → Developer → Edit Config. That opens a file called
claude_desktop_config.json.
Mac:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
The Settings → Developer → Edit Config button takes you straight to it either way.
Replace the file's contents with exactly this — changing only the one marked line to the folder where you unzipped this project in step 4:
{
"mcpServers": {
"concord": {
"command": "uv",
"args": ["--directory", "REPLACE-THIS/concord-mcp", "run", "concord-mcp"]
}
}
}The full location of the unzipped folder. For example:
Mac:
/Users/yourname/Documents/concord-mcpWindows:
C:\\Users\\yourname\\Documents\\concord-mcp(in this file, Windows paths need doubled backslashes, exactly like that)
Save the file and restart Claude Desktop (fully quit it, then open it again).
7. The first win. Look for the small tools icon (a plug or sliders, near the message box) — that means Claude can see the connector. Now ask:
What does Psalm 23 say?
If the answer comes back verse by verse, each line tagged like Psalms 23:1 (KJV) — it's working. Every one of those verses just came off the shelf on your own computer.
Trouble?
Concord (the Bible) isn't running. Open Docker Desktop, make sure it's started (the whale icon), and start Concord again per step 2. Then ask your question again — no restart of Claude needed.
Almost always the path in the settings file. Open Settings → Developer → Edit
Config again and check the REPLACE-THIS line: it must be the real location
of the unzipped folder, and on Windows every backslash must be doubled
(C:\\Users\\...). Save and fully restart Claude Desktop again.
Docker Desktop isn't running. Open it (look for the whale icon) and try again. If it was never installed, that's step 1.
Still stuck? Open an Issue and describe where you got to — we'll help.
Part of the Concord family
Concord is the Bible on your computer. songbird is a quiet place to read it and keep notes. concord-mcp connects it to an AI assistant — looked up, never made up.
MIT licensed. Built with care, for one real reader.
Available Tools
10 toolscross_referencesARead-onlyIdempotent
List the passages traditionally linked to a verse or passage — the places Scripture echoes Scripture. Use after lookup_verse when the question is 'what other passages relate to this one?' — e.g. reference 'John 3:16' or 'Genesis 1:1-5'. Results are ranked by how strongly readers have linked them (votes, shown per line). Set include_text true to fetch each linked passage's opening verse text in the server's default translation. Returns up to limit links (default 10, max 25) plus the true total. Each target is tagged 'Book Chapter:Verse' so you can lookup_verse it.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum links to return. Default 10, capped at 25. | |
| reference | Yes | The source passage, e.g. 'John 3:16' or 'Genesis 1:1-5'. | |
| include_text | No | Fetch each linked passage's opening verse text in the server's default translation. Default false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral detail beyond the annotations: ranking by votes, include_text behavior, limit defaults and caps, returning the true total, and target formatting. This gives the agent a strong understanding of what to expect from the tool.
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 front-loaded with the core purpose, then usage guidance, then detailed behavior. It is moderately long but every sentence contributes useful information without filler, making it appropriately concise for the depth provided.
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 moderate complexity, the presence of an output schema, and clear annotations, the description covers all necessary aspects: when to use, how it behaves, parameter effects, and return structure. It is fully adequate for an agent to invoke it correctly.
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 coverage is 100% for all three parameters, so the baseline is 3. The description repeats some schema details (e.g., include_text, limit) but does not introduce new parameter semantics beyond what the schema already documents.
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: 'List the passages traditionally linked to a verse or passage.' It distinguishes itself from sibling lookup_verse by explicitly mentioning the use case 'what other passages relate to this one?' and naming the sibling tool, making it obvious when to choose this tool.
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?
It provides explicit usage context: 'Use after lookup_verse when the question is...' and gives concrete examples. However, it does not explicitly specify when not to use the tool or mention alternatives other than lookup_verse, though the implied use case is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
journeysARead-onlyIdempotent
Browse the curated biblical journeys, or get one journey's ordered stops. Call with no arguments to list the journeys (ids like 'paul-first', 'exodus', with names, scripture, dating, and stop counts), then call again with a journey_id for the detail: an ordered stop list with each place's honesty status, coordinates where confident, and the verse anchoring each leg. Every detail opens with its source attribution — these are commonly proposed reconstructions, not certainties.
| Name | Required | Description | Default |
|---|---|---|---|
| journey_id | No | A journey id from the list call, e.g. 'paul-first'. Omit to list all journeys. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds valuable behavioral context beyond annotations: it explains the two-step list/detail pattern, the nature of the data ('commonly proposed reconstructions, not certainties'), and specific fields ('honesty status', 'coordinates where confident'). This enriches understanding without contradicting 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 two sentences long, front-loaded with the purpose, and every sentence earns its place. It efficiently covers the two modes of use and the important caveat about reconstructions, with 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?
Given the tool's simplicity (one optional parameter, no required args) and the presence of an output schema, the description is highly complete. It explains the list and detail workflows, what to expect in the output (stops, honesty status, coordinates, verses), and the epistemic status (commonly proposed reconstructions). There are no significant gaps for an agent to invoke and interpret results correctly.
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 provides full coverage (100%) for the single parameter journey_id, with a description explaining its meaning and default behavior. The tool description reiterates this usage ('Call with no arguments... then call again with a journey_id') but adds no new semantic information beyond examples. Since the schema does the heavy lifting, a score 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?
The description clearly states the tool's purpose with specific verbs: 'Browse the curated biblical journeys, or get one journey's ordered stops.' It distinguishes from sibling tools by focusing on curated journeys rather than individual verses or words, and provides examples of journey ids. This is a clear, specific, and distinct purpose.
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 provides explicit usage guidance: 'Call with no arguments to list the journeys... then call again with a journey_id for the detail.' This tells the agent when to call with and without arguments. It does not explicitly mention alternatives or when not to use the tool, but the guidance is clear enough for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_verseARead-onlyIdempotent
Fetch the exact text of a Bible verse, verse range, verse list, or whole chapter. Use this whenever you already have a reference — 'John 3:16', 'Genesis 1:1-5', 'Psalm 23', 'Romans 3:23,25'. Pass translations to compare versions side by side (e.g. ["KJV", "WEB"]; default is the server's configured translation, KJV). Returns each verse on its own line, tagged 'Book Chapter:Verse (TRANSLATION)' so you can cite it exactly. If you don't have a reference, use search_keyword for exact wording or search_by_meaning for ideas and themes.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes | A Scripture reference: a verse ('John 3:16'), range ('Genesis 1:1-5'), same-chapter list ('Romans 3:23,25'), or whole chapter ('Psalm 23'). | |
| translations | No | Translation ids to return side by side, e.g. ['KJV', 'WEB']. Default: the server's configured translation (KJV). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=true and idempotentHint=true, so the description isn't burdened with safety disclosure. It adds valuable behavioral context: returns each verse on its own line, tags verses with 'Book Chapter:Verse (TRANSLATION)', supports side-by-side translation comparison, and mentions the default translation (KJV). 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 four sentences, front-loaded with the core purpose, followed by usage, output format, and alternative guidance. Every sentence earns its place; no fluff 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?
The tool has an output schema for return values, so the description needn't explain them. It covers accepted input forms, translation behavior, default, output formatting, and when to use alternatives. For a 2-parameter lookup tool with rich annotations and output schema, this is fully 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 100%: both 'reference' and 'translations' have detailed schema descriptions. The description adds examples ('John 3:16', 'Genesis 1:1-5', ['KJV','WEB']) and reinforces the default, but doesn't introduce meaning beyond the schema. Baseline 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?
The description opens with a specific verb and resource: 'Fetch the exact text of a Bible verse, verse range, verse list, or whole chapter.' It clearly distinguishes from siblings by stating it is for when you already have a reference, unlike search_keyword or search_by_meaning.
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?
Explicit usage guidance is provided: 'Use this whenever you already have a reference' and 'If you don't have a reference, use search_keyword ... or search_by_meaning.' This directly tells the agent when to use this tool versus named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
places_for_passageARead-onlyIdempotent
List the places a passage names — with coordinates only where an identification is actually confident. Use after reading a passage when the question is 'where did this happen?' — e.g. 'Acts 17' or 'Genesis 4:16'. Each place line carries its name, type, and an honesty status straight from the data: 'identified' and 'disputed' come with coordinates (disputed is flagged as contested), while 'unknown', 'symbolic', and 'multiple' say plainly that no single pin exists — never a guessed location. A passage naming no places says so.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes | The passage to scan for place names, e.g. 'Acts 17' or 'Genesis 4:16'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the read-only and idempotent annotations by disclosing the honesty policy: 'identified' and 'disputed' come with coordinates, while 'unknown', 'symbolic', and 'multiple' state plainly that no single pin exists — never a guessed location. It also states that passages with no places explicitly say so, adding behavioral transparency not present in the structured 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 moderately sized but front-loads the core purpose in the first sentence. Each subsequent sentence adds necessary detail about confidence statuses and the no-places case. It could be tightened slightly, but it is not bloated and every clause contributes meaningful information.
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 a single parameter, an output schema, and strong safety annotations, the description still covers the output line format (name, type, honesty status), the handling of disputed vs. unknown locations, and the edge case of no places. This is comprehensive for a tool of this 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 schema already provides full coverage of the single parameter 'reference' with a clear description and examples. The tool description echoes the same examples and adds no new semantic detail beyond what the schema specifies. Thus the 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?
The description opens with the specific action 'List the places a passage names' and clarifies the confidence-based coordinate handling. It distinguishes itself from sibling tools by focusing on place identification for a passage, with examples like 'Acts 17' and 'Genesis 4:16', making the tool's purpose unmistakable.
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?
It explicitly states when to use the tool: 'after reading a passage when the question is where did this happen?' This provides clear context and a usage scenario. However, it does not name alternatives or exclusions, so it falls short of the 'when-not-to-use' guidance that would merit a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
random_verseARead-only
Fetch one random verse — for a verse of the day, a writing prompt, or sampling a book's voice. Optionally filter by book ('John', 'PSA') or testament ('OT' or 'NT'), and pick a translation (default KJV). Each call returns a different verse, tagged 'Book Chapter:Verse (TRANSLATION)' so you can cite or look it up. If the filters contradict (a NT testament with an OT book), you'll be told no verse matches.
| Name | Required | Description | Default |
|---|---|---|---|
| book | No | Limit to one book — a name or USFM id, e.g. 'John' or 'PSA'. Default: the whole Bible. | |
| testament | No | Limit to 'OT' or 'NT'. Default: both. | |
| translation | No | Translation id for the verse text, e.g. 'WEB'. Default: the server's configured translation (KJV). |
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 no safety concerns. The description adds valuable behavioral details: each call returns a different verse, the response is tagged with 'Book Chapter:Verse (TRANSLATION)', and contradictory filters produce a 'no verse matches' message. This goes beyond what annotations provide, though it stops short of exhaustive behavior.
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 compact and front-loaded with the core purpose, followed by filtering options and return behavior. Every sentence adds value, with no fluff or repetition of schema 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 an output schema exists and the tool has only three optional parameters, the description fully covers use cases, filtering, randomness, and error handling. It is complete for the complexity of the tool.
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 coverage is 100% so the baseline is 3. The description enhances the schema by giving concrete examples ('John', 'PSA'), clarifying the default translation (KJV), and explaining the contradiction behavior when book and testament conflict. This adds meaningful context not present in the property descriptions 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?
The description begins with 'Fetch one random verse' — a clear verb+resource combination. It lists concrete use cases (verse of the day, writing prompt, sampling a book's voice) and distinguishes itself from sibling tools like lookup_verse and search_by_meaning by emphasizing randomness.
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 directly states when to use the tool (verse of the day, writing prompt, sampling a book's voice) and explains the optional filtering options. It does not explicitly name alternative tools or give 'when not to use' guidance, which would push it to a 5, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_by_meaningARead-onlyIdempotent
Find Bible verses by meaning rather than exact wording. Use this when the question is about an idea, theme, or feeling — 'verses about anxiety', 'the good shepherd', 'forgiving people who wronged you' — and you don't already have a verse reference. Results are ranked by closeness of meaning and can be returned in any loaded translation via translation (default KJV). Returns up to limit verses (default 10, max 25), each tagged with its reference and translation so you can cite it exactly. Each result carries a similarity score; set min_score (between -1 and 1) to drop weak matches. If you already know the reference, use lookup_verse instead; if you need an exact word or phrase match, use search_keyword. For classic study subjects with a curated index entry ('faith', 'prayer'), topic_verses returns an editor's chosen verses rather than a similarity ranking.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum verses to return. Default 10, capped at 25. | |
| query | Yes | The idea, theme, or feeling to search for, e.g. 'verses about anxiety'. | |
| min_score | No | Similarity floor between -1 and 1; results scoring below it are dropped. Default: no floor. | |
| translation | No | Translation id for the verse text, e.g. 'WEB'. Default: the server's configured translation (KJV). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and idempotent hints, so the description adds valuable non-obvious behavior: ranking by closeness of meaning, result limits and defaults, tagging with reference/translation, similarity scores, and the min_score threshold. 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 front-loaded with purpose and usage, then covers parameters and alternatives. It is somewhat lengthy but each sentence adds information. Minor redundancy exists (e.g., mentioning ranking and then similarity score), but overall it is well-organized and not wasteful.
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, the description doesn't need to detail return shapes. It fully covers purpose, when to use, parameter behavior, output characteristics, and sibling alternatives. No obvious gaps remain for an agent to correctly select and invoke the tool.
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 covers 100% of parameters with descriptions, so baseline is 3. The description adds context beyond the schema by integrating parameters into the tool's narrative (e.g., 'can be returned in any loaded translation', 'set min_score to drop weak matches') and providing examples for query. It slightly exceeds the baseline due to this contextual enrichment.
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 opens with a specific verb and resource: 'Find Bible verses by meaning rather than exact wording.' It clearly distinguishes itself from siblings by explicitly naming lookup_verse, search_keyword, and topic_verses as alternatives for different use cases.
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?
Explicit 'Use this when' guidance with concrete examples ('verses about anxiety', 'the good shepherd') and clear when-not-to-use instructions: 'If you already know the reference, use lookup_verse instead; if you need an exact word or phrase match, use search_keyword.' Also covers topic_verses for curated subjects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_keywordARead-onlyIdempotent
Find verses containing an exact word or phrase. Use this when the wording matters — a phrase you remember ('still waters'), a word you're tracing ('propitiation') — and quote multi-word phrases ("still waters") to match them exactly. Searches one translation by default (the server's configured KJV); pass translations (e.g. ['KJV', 'WEB']) to see which translations' wording matches, side by side. Returns up to limit verses (default 10, max 25) with the true total, each tagged so you can lookup_verse the full text; lines marked [excerpt] are partial — lookup_verse the reference for the full text. If you have a reference, use lookup_verse; for ideas rather than wording, use search_by_meaning.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum verses to return. Default 10, capped at 25. | |
| query | Yes | The word or quoted phrase to find, e.g. 'propitiation' or '"still waters"'. | |
| translations | No | Translation ids to search side by side, e.g. ['KJV', 'WEB']. Default: the server's configured translation (KJV). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses exact-match behavior, the default KJV translation, ability to pass multiple translations side by side, result limit and true total, and that [excerpt] lines are partial. It also notes that lines are tagged for lookup_verse, which helps the agent know how to handle partial results.
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 composed of five sentences, each adding substantive information without redundancy (except a slight repeat of lookup_verse in the excerpt clause). It is compact and front-loaded, with the core purpose in the first sentence, followed by usage and 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?
For a search tool with 3 parameters and no output schema provided, the description explains return behavior (limit, total, excerpt tags, lookup guidance), which is essential. It also covers alternatives and translation behavior, leaving no major questions about how to use the tool or interpret results.
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 coverage is 100%, so the baseline is 3. The description adds meaningful examples and clarifications, such as quoting multi-word phrases, the server's configured KJV, and the 'side by side' behavior for translations. This surpasses the schema's basic descriptions but does not need to compensate for missing schema info.
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 'Find verses containing an exact word or phrase' with a specific verb and resource, and explicitly distinguishes it from lookup_verse (by reference) and search_by_meaning (by ideas). This makes the tool's purpose unmistakable.
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?
It explicitly says 'Use this when the wording matters' and provides concrete examples ('propitiation', 'still waters'). It also gives clear alternatives: 'If you have a reference, use lookup_verse; for ideas rather than wording, use search_by_meaning.' This is exemplary when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
strongs_entryARead-onlyIdempotent
Look up a Strong's lexicon entry — lemma, transliteration, gloss, and full definition — by its id: 'G26' (Greek ἀγάπη), 'H7225' (Hebrew רֵאשִׁית). Formats like 'g26' or 'G0026' are accepted. Use after word_study surfaces an id, or whenever a Strong's number appears. Set include_verses true to also list where the word occurs (up to limit, default 10, max 25, with the true total), each verse tagged so you can lookup_verse it. For the words of a specific verse, use word_study with the reference instead.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum occurrence verses (with include_verses). Default 10, capped at 25. | |
| strongs_id | Yes | A Strong's number, e.g. 'G26' (Greek) or 'H7225' (Hebrew); 'g26' and 'G0026' also work. | |
| include_verses | No | Also list the verses where this word occurs. Default false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already indicate read-only and idempotent behavior, the description adds valuable behavioral details: include_verses lists verses 'up to limit, default 10, max 25, with the true total', and 'each verse tagged so you can lookup_verse it'. It also notes accepted id formats ('g26' and 'G0026'). These go beyond the annotations and schema, providing 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 three sentences, each with a distinct purpose: main lookup capability, usage conditions, and parameter behavior. It front-loads the primary function and remains tightly packed without redundancy. Every clause adds information, making it appropriately sized for the tool's complexity.
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 output schema exists and annotations cover safety, the description completes the picture by specifying the return content (lemma, transliteration, gloss, definition), the optional verse listing behavior, and the relationship to lookup_verse. There are no obvious gaps for an agent to invoke the tool correctly.
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 already describes all three parameters with 100% coverage, giving a baseline of 3. The description adds further meaning by providing concrete examples for strongs_id, explaining the verse-count behavior of include_verses (limit cap, true total), and clarifying that verses are tagged for lookup_verse. This extra semantic value lifts the score above baseline, though not a full 5 since the schema already covers the basics.
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: 'Look up a Strong's lexicon entry — lemma, transliteration, gloss, and full definition — by its id'. The verb 'look up' and the specific resource (Strong's lexicon entry) make the purpose unambiguous, and the mention of id formats like 'G26' and 'H7225' differentiates it from sibling tools like lookup_verse and word_study.
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 tells when to use the tool: 'Use after word_study surfaces an id, or whenever a Strong's number appears.' It also provides an exclusion: 'For the words of a specific verse, use word_study with the reference instead.' This directly names an alternative and gives clear decision guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
topic_versesARead-onlyIdempotent
Look up a subject in Nave's Topical Bible — a curated index compiled by a human editor — and return its verses, e.g. topic 'faith', 'care', 'prayer'. Use this for 'what does the Bible say about X?' when X is a classic study subject; it returns the editor's chosen verses, not a similarity search. (For ideas or phrasings that aren't index entries — 'feeling overwhelmed at work' — use search_by_meaning.) If several index entries match, you get the candidate list — call again with one of the listed ids. 'See X' redirects are followed and labeled. Returns up to limit verses (default 10, max 25) with the true total, tagged 'Book Chapter:Verse (TRANSLATION)'.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum verses to return. Default 10, capped at 25. | |
| topic | Yes | A Nave's subject name or id, e.g. 'faith', 'care'. Ambiguous names return a candidate list of ids. | |
| include_text | No | Include each verse's text in the server's default translation. Default true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds valuable context beyond these hints: it mentions that 'See X' redirects are followed and labeled, that the tool returns the true total along with up to limit verses, and that ambiguous names produce a candidate list. This goes beyond the safety profile provided by 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 concise and front-loaded. Four sentences each serve a distinct purpose: stating the core function with examples, giving usage guidance with an alternative, explaining the ambiguity handling, and describing output limits and tagging format. 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?
Combined with rich annotations (read-only, idempotent) and an existing output schema, the description is highly complete. It covers when to use, when not to, behavior for ambiguous names, redirect handling, limit semantics, and output formatting, leaving no critical gaps for an agent to invoke it correctly.
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 100%, with each parameter (topic, limit, include_text) already well documented. The tool description reinforces the default limit and candidate-id behavior but does not add substantial new semantics beyond the schema, so the 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?
The description clearly states the tool looks up a subject in Nave's Topical Bible and returns its verses, with concrete examples ('faith', 'care', 'prayer'). It explicitly distinguishes itself from search_by_meaning by noting it returns the editor's chosen verses rather than a similarity search, which differentiates it from siblings.
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?
Explicitly specifies when to use this tool ('what does the Bible say about X?' for classic study subjects) and when not to, directing users to search_by_meaning for non-index phrasings like 'feeling overwhelmed at work'. It also explains the flow for ambiguous topics, telling the agent to call again with a listed id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
word_studyARead-onlyIdempotent
Show the original-language words behind a verse or short passage — Greek for the New Testament, Hebrew for the Old, chosen automatically. Use when the question is about wording, nuance, or 'what does this word really mean?' — e.g. 'John 21:15-17' to see the two different Greek words for 'love'. Each word line carries its position, surface form, lemma, transliteration, Strong's id, morphology code, and a short gloss; follow a Strong's id with strongs_entry for the full definition. Verse blocks inside a range are labeled where possible. Keep references short — a verse or a few; output is capped at 10 verses of words.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes | A verse or short passage, e.g. 'John 21:15-17' or 'Genesis 1:1'. Output is capped at 10 verses of words. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/destructive=false, so the bar is lower. The description adds valuable context: automatic language selection, the structure of each word line, verse block labeling, and the output cap. This goes beyond simple safety flags and helps set expectations, though it could mention error handling or edge cases.
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?
Concise and well-organized, starting with the core purpose, then usage guidance, then output details and constraints. Each sentence carries useful information, though the list of fields per word line is a bit dense. Overall it is appropriately sized for a tool with this complexity.
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 tool with one parameter and an output schema, the description is complete. It explains the return structure (word lines with position, lemma, etc.), the pragmatic use case, and the output cap. No significant gaps remain.
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 covers 100% of the parameter (reference) with description and examples. The tool description reiterates the 'short passage' and 'capped at 10 verses' constraints but doesn't add new parameter-specific meaning beyond what's in the schema. It's at the baseline for full schema coverage.
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 opens with a specific verb-object pair: 'Show the original-language words behind a verse or short passage,' and clarifies the Greek/Hebrew split. It distinguishes itself from siblings by emphasizing wording and nuance, and provides a concrete example ('John 21:15-17') that makes it unmistakable.
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?
Explicitly states when to use the tool: 'Use when the question is about wording, nuance, or "what does this word really mean?"' and gives a clear example. It also differentiates from the strongs_entry tool by telling users to follow Strong's IDs with strongs_entry, and advises keeping references short due to the 10-verse cap.
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.
10 tool updates
v1.0.0- First observed
cross_references - First observed
journeys - First observed
lookup_verse - First observed
places_for_passage - First observed
random_verse - First observed
search_by_meaning - First observed
search_keyword - First observed
strongs_entry - First observed
topic_verses - First observed
word_study
TDQS
Each tool has a clearly distinct purpose: lookup_verse handles exact references, search_by_meaning handles semantic search, search_keyword handles exact wording, cross_references handles related passages, word_study and strongs_entry handle original languages, topic_verses handles curated topics, places_for_passage handles geography, journeys handles curated routes, and random_verse handles randomness. The descriptions actively cross-reference each other to reduce ambiguity.
All names use lowercase_snake_case consistently, which is good, but they do not follow a single verb_noun pattern. Some are verb-first (lookup_verse, search_by_meaning, search_keyword, random_verse) while others are noun-first (cross_references, word_study, strongs_entry, topic_verses, places_for_passage, journeys). The style is coherent and readable, but the pattern is not perfectly uniform.
With 10 tools, the count is well within the ideal range and each tool covers a distinct aspect of biblical study. No tool feels redundant or unnecessary, and the set is large enough to provide comprehensive functionality without being overwhelming.
For a Bible study server, the surface is remarkably complete: it covers exact lookup, semantic search, word-based search, cross-references, original language study, lexicon entries, topical study, geographic exploration, curated journeys, and random sampling. There are no obvious gaps in the read-only study workflow.
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 corpus MCP server: scripture, Greek/Hebrew interlinear data, cross-refs, semantic search.
Read-only scripture-study engine: complete-or-fail concordance over Greek NT, Hebrew OT, LXX.
Bible MCP — wraps the Bible API (free, no auth)
Free, no-key Bible MCP server — 86 translations in 32 languages, from any MCP client.
Related MCP Servers
- 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
- AlicenseAqualityAmaintenanceMCP server for Bible study, providing multi-version verse lookup, keyword/semantic search, cross-references, and word studies with original language and lexicon details.6MIT
- AlicenseNot gradedqualityBmaintenanceThin Cloudflare Workers MCP server for navigating Bible Aquifer content, enabling Bible verse retrieval, content search, and entity profiling through MCP tools.2MIT
- AlicenseBqualityDmaintenanceProvides Hebrew & Greek word study, full morphological parsing, cross-references, LXX alignment, and more from open-licensed data sources, usable by any MCP-compatible client.9MIT
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/kbennett2000/concord-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server