MCP server that provides tools for jokes, time queries, and knowledge base search with vector store capabilities
The BNFR MCP server has 4 tools with mixed quality. Naming is clear and action-oriented (all start with verbs: get_*, search_). Descriptions are present but vary in detail. Input schemas are visible in the source code with proper types and descriptions. However, output schemas are largely undocumented, and error handling is minimal. The server uses FastMCP with HTTP transport and proper tool registration via decorators. The two time tools (get_time_in_london, get_time_in_new_york) are trivial and lack meaningful descriptions. The search_knowledge_base tool has a reasonable description and proper parameter types, but the joke tool lacks parameter descriptions. Overall, the server exhibits basic competence but falls short of production-grade tool design, most tools lack output schema documentation, error handling is absent, and parameter descriptions are inconsistent.
Get a random programming joke
Get the current time in London, UK.
Get the current time in New York, USA.
Search the knowledge base (GitHub repositories) for relevant information. Use this tool when the user asks general questions about projects, documentation, or code.
Output schemas are not documented for any tool. LLMs cannot predict what fields to expect, forcing them to guess how to use returned data for downstream tool calls.
Time tools (get_time_in_london, get_time_in_new_york) have extremely generic descriptions that do not explain WHEN or WHY to use them. Descriptions state only 'Get the current time in [location]', no context on use case, format of output, or distinction from each other.
Input schemas lack type constraints for optional parameters. The search_knowledge_base 'filename' parameter is optional but has no maxLength, pattern, or enum to guide LLMs on valid file names (e.g., README.md vs config.yaml).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 55 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 54 | - | v1 |
No error handling guidance. If search_knowledge_base finds no results, returns malformed JSON, or fails to connect to ChromaDB, there is no recovery hint for the LLM. Tools should guide the agent on retry, user-fixable issues, or fallback actions.
The get_random_joke tool has no input parameters (empty schema {}), which is correct, but the tool description does not explain that it requires no input or what the structure of the response is (setup + punchline dict).