MCP server for Bible text with support for English (BSB), Hebrew (Old Testament), and Greek (New Testament) versions
The Bible MCP server has 1 implemented tool (getEnglishText) with basic structure, but significant quality gaps. The tool has a functional name and description, but the schema is incomplete: the input schema in server.ts declares 'reference' as a string but lacks formal type and required array wrapper (should be {"type":"object","properties":{...},"required":["reference"]}). The tool registration uses Zod for schema definition, which is good practice, but the schema returned in capabilities declaration is malformed, it lists properties directly without the JSON Schema wrapper. No output schema is documented anywhere, forcing the LLM to infer response structure. Parameter description exists but is minimal (58 chars). Error handling returns helpful text ('Invalid Bible reference...') but lacks structured error categorization and recovery guidance. The commented-out searchText tool suggests planned features but cannot be scored. No security considerations are visible (no input validation beyond reference parsing, no rate limiting, no audit logging). The tool is marked READ_ONLY, which is accurate, but no explicit tool annotations (readOnlyHint, idempotentHint) are used in the schema.
Get English Bible text for a given verse reference
Input schema is malformed in capabilities declaration. The tool definition in capabilities lists 'reference' as a direct property without wrapping in JSON Schema object/properties/required structure. This violates the MCP tool schema contract and may cause client parsing failures.
No output schema documented. The tool returns {content: [...], examples: [...]} but nowhere is the return type schema defined. LLMs cannot infer what fields to expect and cannot chain this tool's output to downstream operations.
Parameter description is minimal (58 chars: 'Bible verse reference (e.g., 'John 3:16', 'Gen 1:1', 'Rom 8:28')') and includes example values, which LLMs tend to reuse literally. Should describe format constraints more formally (e.g., 'Book name or abbreviation + chapter:verse, e.g. John 3:16, Genesis 1:1').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 44 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 37 | - | v1 |
Error handling lacks structured recovery guidance. When reference parsing fails, the tool returns a free-text error with examples. It should categorize the error (user-fixable: invalid format) and provide actionable next steps, not just examples.
No input validation visible beyond parseReference(). The tool does not validate that the reference exists in the database before querying. Invalid references return a bare 'No text found' error with no suggestions for valid alternatives.
Tool does not declare read-only semantics formally. While marked READ_ONLY in the assessment, the schema lacks a readOnlyHint annotation. This prevents clients from optimizing caching or batch processing assumptions.