Skip to main content
Glama

Brave Jev MCP

English | 简体中文

Web search results often contain junk articles and passages that mention the right keywords without answering the question. This material consumes context and leaves the AI to find answers among unrelated information.

This project removes unhelpful pages and snippets before search results reach the AI, leaving more context for information that can help answer the question.

Built on Brave Search MCP Server, the project uses Brave to search the web and extract content, and Jev to filter it according to the purpose of the search. Retained content keeps its source links and Brave's original ordering so the AI can read, answer, and cite it.

Filtering currently applies only to brave_llm_context. Other search tools remain available, but their results do not pass through this project's filtering layer or call Jev for screening.

Regular web search (brave_web_search) mainly returns links and short summaries that help people decide which pages to open. In contrast, brave_llm_context provides content snippets extracted from web pages for the AI to read directly. In our testing, brave_llm_context delivers significantly higher information density and more material that can directly support an answer. We therefore recommend brave_llm_context even with filtering disabled.

Installation

Prepare the following:

We recommend setting BRAVE_API_KEY (your Brave key) and TYPESAFE_API_KEY (your Jev key) as environment variables and ensuring that your AI client passes them to the MCP process. The server reads these variables automatically. If your client requires explicit forwarding, use its environment variable settings.

Add the following configuration to your AI client. npx downloads and starts the package automatically:

{
  "mcpServers": {
    "brave-jev": {
      "command": "npx",
      "args": [
        "-y",
        "@romantcig/brave-jev-mcp@latest",
        "--transport",
        "stdio",
        "--enabled-tools",
        "brave_llm_context"
      ]
    }
  }
}

The example uses @latest to get the latest version published on npm.

--enabled-tools selects which tools are exposed to the AI. The configuration above exposes only brave_llm_context. To enable more tools, append their names as separate strings after this argument. If no other tool filtering options are set, removing the argument and its tool names exposes all tools.

Other tools include:

  • Web search (brave_web_search): mainly returns page links and short summaries, with significantly less detailed content than brave_llm_context.

  • Local search (brave_local_search): searches for local businesses and places.

  • News search (brave_news_search): searches recent news articles, supports recency filters, and provides breaking news indicators.

  • Place search (brave_place_search): searches for businesses, places, addresses, and streets using place names or coordinates.

  • AI summaries (brave_summarizer): calls the legacy Summarizer API and requires an existing Pro AI plan subscription. Brave has introduced Answers API as its replacement, but this tool has not integrated it.

  • Video search (brave_video_search).

  • Image search (brave_image_search).

On first launch, the server creates ~/.brave-jev/config.json with filtering enabled by default. Existing configuration is preserved. The Brave key is required for search. Without a Jev key, search still works, Jev filtering is skipped, and results that would otherwise be filtered include setup instructions.

The MCP server loads its startup arguments, environment variables, filtering configuration, and program version at startup. Restart it for changes to take effect.

Related MCP server: google-search-mcp

Usage

Tell the AI what you need to find. For example:

Use Brave MCP's brave_llm_context to compare SQLite and PostgreSQL. I am choosing a database for a single-machine application. Focus on deployment complexity, concurrent write limits, and suitable use cases, and include sources.

When choosing a database for a single-machine application, concurrency limits and deployment methods are useful; a generic passage about why choosing a database matters contributes little. With Jev filtering enabled, the AI sends search keywords and search intent separately to the tool. You only need to describe what you need.

Default search budgets

To prevent excessive output when the AI omits explicit limits, and to keep sources repeating the same information from filling the context, brave_llm_context uses these defaults:

Parameter

Default

Meaning

count

10

Candidate search results considered when selecting context

maximum_number_of_tokens

4000

Approximate total token budget

maximum_number_of_tokens_per_url

800

Token budget per source

maximum_number_of_urls

5

Maximum number of returned sources

These defaults apply in every filtering mode. Adjust the relevant parameters when calling the tool if you need more sources or detail. count is the number of candidate results, not the number of sources ultimately returned.

Search results first pass through local cleanup rules, then go to Jev for screening against the search intent. If the Jev key is missing or the Jev request fails, the MCP server still returns the content after local cleanup, but Jev's semantic screening is not completed.

Further reading

Available Tools

8 tools
brave_llm_contextbrave_llm_contextA

Search the web with Brave and return pre-extracted, relevance-ranked content chunks (prose, tables, code blocks, structured data). Use the returned content directly when it answers the question; fetch the page only when you need the full context or must verify.

For routine calls, omit the four search budget parameters; the server applies the defaults
shown in their descriptions. Increase a budget only when previous results show that more
source coverage or passage detail is needed. `query` supports site:.

Search rules:
    - Unfamiliar subject: first search the subject name plus the core question for an overview,
      then verify details as needed; do not search for a given detail directly — check whether
      it surfaces naturally in the sources.
    - Keep only keywords directly relevant to the current question in `query`; do not pack
      context and qualifiers into one query.
    - Set `freshness` (pd / pw / pm / py) when recency matters; never hardcode a year in `query`.
    - Two consecutive searches with heavily overlapping results mean the direction is exhausted:
      change the keyword strategy.
    - Search serially; go parallel only when confident of each query.

When relaying results, cite the URL returned with each content item.
Source age, when available, is included with that item; it is not a verified publication date.
ParametersJSON Schema
NameRequiredDescriptionDefault
countNoCandidate search results to consider. Omit to use the default of 10.
queryYesSearch keywords; supports site:. At most 400 characters and 50 words.
countryNoTwo-letter result region code, e.g. "US"; usually omitted.
gogglesNoRe-ranking rules: a Goggle URL, rule text, or an array of them.
freshnessNoRecency filter: pd = 1 day, pw = 7 days, pm = 31 days, py = 365 days, or YYYY-MM-DDtoYYYY-MM-DD.
search_langNoResult language code, e.g. "en" or "zh-hans"; usually omitted.
maximum_number_of_urlsNoReturned source budget. Omit to use the default of 5.
maximum_number_of_tokensNoApproximate total token budget for returned content. Omit to use the default of 4000.
maximum_number_of_tokens_per_urlNoToken budget per source. Omit to use the default of 800.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations only declare openWorldHint=true, so the description carries most behavioral disclosure. It explains the return shape (prose, tables, code blocks, structured data), the budget controls, source-age caveats, and that citations should use returned URLs. This is rich context beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and output characteristics, then moves to usage guidance and search rules. It is longer than average, but the length is largely justified by the tool's complexity and the absence of an output schema. Formatting is a bit dense, but sentences generally earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex search tool with nine parameters, no output schema, and only an openWorldHint annotation, the description is complete enough. It explains what is returned, how to use the results, how budgets behave, and cites URL/source-age caveats. An agent has the context needed to call and interpret this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds useful semantics by telling the agent to omit the four budget parameters for routine calls, that defaults are applied server-side, and to increase budgets only when more coverage or detail is needed. It also notes that query supports site:, though it does not add meaning for every parameter beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: searches the web with Brave and returns pre-extracted, relevance-ranked content chunks. It also distinguishes the output from a normal web result set by naming the content types and explaining when to fetch the full page instead. This lets an agent differentiate it from sibling search tools without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives strong when-to-use guidance: use returned chunks directly when sufficient, fetch the page only for full context or verification, omit budget parameters for routine calls, and increase budgets only when more coverage is needed. It also provides detailed search strategy rules. However, it does not explicitly name or compare against sibling alternatives such as brave_web_search or brave_news_search, so it falls short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brave_summarizerbrave_summarizerA

Retrieves AI-generated summaries of web search results using Brave's Summarizer API. This tool processes search results to create concise, coherent summaries of information gathered from multiple sources.

When to use:

- When you need a concise overview of complex topics from multiple sources
- For quick fact-checking or getting key points without reading full articles
- When providing users with summarized information that synthesizes various perspectives
- For research tasks requiring distilled information from web searches

Returns a text summary that consolidates information from the search results. Optional features include inline references to source URLs and additional entity information.

Requirements: Must first perform a web search using brave_web_search with summary=true parameter. Requires a Pro AI subscription to access the summarizer functionality.
ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesThe key is equal to value of field key as part of the Summarizer response model.
entity_infoNoReturns extra entities info with the summary response.
inline_referencesNoAdds inline references to the summary response.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only include openWorldHint=true, offering no read/destructive hints. The description carries the burden and does so well: it says 'Retrieves' and 'Returns a text summary,' clearly implying a non-mutating read operation. It also discloses the subscription requirement. While it doesn't discuss error handling or rate limits, for a read-only summarizer the key behavioral traits are covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear opening statement, a bulleted 'When to use' section, return details, and requirements. Each section is concise and front-loaded with the core purpose. No redundant sentences; every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 3 parameters, no output schema, and only openWorldHint annotation, the description covers the return type ('text summary'), prerequisite workflow, and optional features. It does not explain potential errors or the exact format of the key beyond referencing the response model, but for a tool of this simplicity it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by linking the optional boolean parameters to their features ('inline references to source URLs' and 'additional entity information'). It also explains the source of the required 'key' by referencing the prior web search with summary=true, which is crucial for parameter usage. This goes beyond the schema's minimal description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Retrieves AI-generated summaries'), a clear resource (web search results via Brave's Summarizer API), and explicitly differentiates from sibling search tools by focusing on summarization rather than search. It is immediately obvious what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides an explicit 'When to use' list with concrete scenarios (overviews, fact-checking, synthesis). It also states a hard prerequisite: 'Must first perform a web search using brave_web_search with summary=true parameter,' which effectively tells the agent the required precondition and the sibling tool to use. This is clear usage guidance.

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.

  1. 8 tool updatesv0.1.2
    • First observedbrave_image_search
    • First observedbrave_llm_context
    • First observedbrave_local_search
    • First observedbrave_news_search
    • First observedbrave_place_search
    • First observedbrave_summarizer
    • First observedbrave_video_search
    • First observedbrave_web_search

TDQS

A4.2/5.0

Scored across 8 tools

Disambiguation4/5

Each tool targets a distinct search modality or output format (web, images, video, news, summaries, LLM context), so broad intent is usually clear. The main overlap is between brave_local_search and brave_place_search, which both return business/POI data; descriptions differentiate use cases but an agent could still misselect.

Naming Consistency5/5

All tools use a consistent brave_ prefix and snake_case, with six following a brave_<type>_search pattern. The two exceptions (brave_summarizer, brave_llm_context) are still clearly named and predictable.

Tool Count5/5

Eight tools map cleanly to Brave Search API endpoints, with no redundant or filler entries. The count is well-scoped for a search provider.

Completeness5/5

The surface covers all major Brave Search API capabilities: web, local, video, image, news, summarizer, LLM context, and place search. No obvious gap in the core search lifecycle.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables MCP hosts to perform cited web searches and receive source-bearing results with titles, URLs, snippets, and sources for evidence-grounded answers.
    1
    15 npm
    MIT