MCP server for MongoDB OSHA database search with vector embeddings
This MongoDB OSHA server has three tools with basic but incomplete definitions. All tools have descriptions and input schemas present, but the descriptions are generic and lack depth. Parameter descriptions are minimal. Output schemas are not documented anywhere in the provided source. The tools follow a reasonable verb_noun naming convention (search_*, get_*), but the descriptions do not explain WHEN to use one tool vs another, what the output structure is, or any error recovery guidance. Tool parameters lack detail about valid ranges, formats, or dependencies. The server shows basic implementation quality but falls short of production-grade agent tooling standards.
Get detailed information about a specific OSHA rule by its ID
Search OSHA rules by their identifier (e.g., '29', 'A', 'B')
Search OSHA rules across health and construction databases using semantic vector search with natural language queries
Output schemas are completely undocumented. Tools return complex nested structures (rule_data dict with vector, identifier, label, children_identifiers, etc.) but agents have no visibility into the response contract. LLMs cannot plan downstream tool calls or extract required fields when output shape is invisible.
Parameter descriptions lack detail on valid formats, ranges, and constraints. 'identifier' in search_by_identifier accepts examples '29', 'A', 'B' but the parameter description provides no regex pattern, character set, or length limit. Agents cannot validate inputs or understand what '29' means vs 'A'.
Tool descriptions do not disambiguate usage. search_osha_rules and search_by_identifier both search, why call one vs the other? Description should say 'Use search_by_identifier when you know a partial rule code like "1910" or "A"; use search_osha_rules for natural language queries.' Without this, agents waste reasoning cycles.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 46 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
No error handling guidance. If rule_id doesn't exist in get_rule_details, or database param is invalid, what error is returned? How should the agent respond? Code shows no recovery hints or actionable error messages.
search_osha_rules has a hardcoded similarity threshold (0.1) but this is not exposed as a parameter or documented. If an agent calls it and gets no results, it cannot adjust sensitivity, a tunable threshold would enable better agent control.