An MCP server that combines Brave Search API for web and local searches with Google's Gemini AI for research paper analysis. Provides tools for web search, local business search, and academic research paper analysis.
Three tools with generally adequate descriptions (130-220 chars, within production baseline of 194 avg) and complete input schemas. Naming follows verb_noun convention well (search_*, analyze_*). However, output schemas are undocumented and error handling lacks recovery guidance. Parameter descriptions are adequate but lack constraint detail (e.g., 'max 400 chars, 50 words' for query is in description but not in schema format/maxLength). No tool annotations (readOnlyHint, etc.). Tools are read-only with no state modification, reducing risk but also reducing error handling complexity.
Searches for local businesses and places using Brave's Local Search API. Best for queries related to physical locations, businesses, restaurants, services, etc. Returns detailed information including business names and addresses, ratings and review counts, phone numbers and opening hours. Use this when the query implies 'near me' or mentions specific locations. Automatically falls back to web search if no local results are found.
Performs a web search using the Brave Search API, ideal for general queries, news, articles, and online content. Use this for broad information gathering, recent events, or when you need diverse web sources. Supports pagination, content filtering, and freshness controls. Maximum 20 results per request, with offset for pagination.
Performs in-depth analysis of research papers using Google's Gemini-1.5-flash model. Ideal for academic research, literature reviews, and deep understanding of scientific papers. Can extract key findings, provide critical evaluation, summarize complex research, and place papers within the broader research landscape. Best for long-form academic content that requires expert analysis.
Output schemas completely undocumented. No specification of what fields are returned, their types, or structure. LLMs cannot plan downstream tool calls or extract relevant data without knowing response shape.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). While all three are safely read-only, explicit annotations would improve clarity and help MCP clients present tools appropriately.
Error messages in handlers (src/tools/handlers.ts) are generic and provide no recovery guidance. E.g., 'Invalid arguments for brave_web_search' does not tell the LLM what went wrong or how to fix it. Should include constraint violations and valid options.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 51 | - | v1 |
Parameter constraints stated in descriptions but not enforced in schema. 'query' for brave_web_search claims 'max 400 chars, 50 words' but schema has no maxLength or pattern. Schema should enforce these bounds so LLM knows hard limits.
gemini_research_paper_analysis requires 'paperContent' parameter which could be very large (full research papers). No maxLength constraint documented in schema, risking token exhaustion or API failures. Should specify expected input size limits.
brave_web_search and brave_local_search return text responses (src/tools/handlers.ts lines 15, 24), not structured JSON. Response is serialized as a string, forcing LLM to parse unstructured text. Should return structured objects with fields (title, url, description, etc. for web results).
No pagination limit documented for brave_web_search. Description says 'Maximum 20 results per request' which is good, but schema does not enforce maxValue on 'count' parameter. Should add maximum: 20 to schema.