Brave Search MCP Server: web results, images, videos, rich results, AI summaries, and more.
Performs web searches using the Brave Search API and returns comprehensive search results with rich metadata. When to use: - General web searches for information, facts, or current topics - Location-based queries (restaurants, businesses, points of interest) - News searches for recent events or breaking stories - Finding videos, discussions, or FAQ content
A call is made on an account: it counts against an allowance and the publisher sees it, which is why this one asks who you are first.
What it does
Brave Search for your agent: web, news, image, video and local results, and Brave's summarizer and LLM-context tools where your Brave plan includes them. Built from @brave/brave-search-mcp-server, the server Brave maintains itself, and run on mcprush hosting: there is no endpoint to keep alive and nothing to deploy yourself. It asks for your own Brave Search API key (Dashboard › Variables); we never supply ours. The image is pinned, so what answers today is what answered yesterday.
Quickstart
# 1 — sign in once: npx mcprush@latest login
# it asks for a key from mcprush.com/dashboard#access
# 2 — install
npx mcprush@latest add mcpdevpro/brave-search-hosted-mcp
# 3 — ask your agent for something these tools do
# brave_web_search, brave_local_search, brave_video_search and 5 more
Windows PowerShell says 'running scripts is disabled on this system'? Run Set-ExecutionPolicy -Scope CurrentUser RemoteSigned once, or type npx.cmd instead of npx (codex.cmd, gemini.cmd, grok.cmd likewise). PowerShell 7 needs neither.
Brave Search costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine — this server runs on infrastructure we host behind our gateway, and what you install is the connection to it.
Claude Code has its own MCP command, and the key rides on it as a header — the gateway refuses a call that carries none. Claude Code reads MCPRUSH_KEY each time it connects, so the key stays out of its config: export your key from Access in your shell profile (macOS, Linux), or run setx MCPRUSH_KEY <your key> and open a new terminal (Windows). Or let npx mcprush@latest add mcpdevpro/brave-search-hosted-mcp write the entry with the key for you; --scope user makes it available in every project. The first connection after a quiet spell starts the server, which takes up to a minute: if your client says it failed to connect, reconnect after that (/mcp in Claude Code).
claude mcp add --transport http --scope user brave-search-hosted-mcp https://mcprush.com/gw/brave-search-hosted-mcp/mcp --header 'Authorization: Bearer ${MCPRUSH_KEY}'Reconnect, or start a new session, and the tools appear in the model’s tool list.
It reaches a system of yours, so it needs your own credential rather than the publisher’s: BRAVE_API_KEY — Your Brave Search API key (subscription token), from api-dashboard.search.brave.com/app/keys.. You set it after installing; the value is sealed here and handed to the server when it starts.
One config entry pointing at the gateway. The server itself runs on infrastructure we host, so nothing from this listing executes on your machine.
8 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Performs web searches using the Brave Search API and returns comprehensive search results with rich metadata. When to use: - General web searches for information, facts, or current topics - Location-based queries (restaurants, businesses, points of interest) - News searches for recent events or breaking stories - Finding videos, discussions, or FAQ content
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Search query (max 400 chars, 50 words) |
| country | string | no | Search query country, where the results come from. The country string is limited to 2 character country codes of supported countries. |
| search_lang | string | no | Search language preference. The 2 or more character language code for which the search results are provided. |
| ui_lang | string | no | The language of the UI. The 2 or more character language code for which the search results are provided. |
| count | integer | no | Number of results (1-20, default 10). Applies only to web search results (i.e., has no effect on locations, news, videos, etc.) |
| offset | integer | no | Pagination offset (max 9, default 0) |
| safesearch | string | no | Filters search results for adult content. The following values are supported: 'off' - No filtering. 'moderate' - Filters explicit content (e.g., images and videos), but allows adult domains in search |
| freshness | no | Filters search results by when they were discovered. The following values are supported: 'pd' - Discovered within the last 24 hours. 'pw' - Discovered within the last 7 days. 'pm' - Discovered within | |
| text_decorations | boolean | no | Whether display strings (e.g. result snippets) should include decoration markers (e.g. highlighting characters). |
| spellcheck | boolean | no | Whether to spellcheck the provided query. |
| result_filter | array | no | Result filter (default ['web', 'query']) |
| goggles | no | Goggles act as a custom re-ranking on top of Brave's search index. The parameter supports both a url where the Goggle is hosted or the definition of the Goggle. Multiple goggle URLs and/or definitions | |
| units | no | The measurement units. If not provided, units are derived from search country. | |
| extra_snippets | boolean | no | A snippet is an excerpt from a page you get as a result of the query, and extra_snippets allow you to get up to 5 additional, alternative excerpts. Only available under Free AI, Base AI, Pro AI, Base |
| summary | boolean | no | This parameter enables summary key generation in web search results. This is required for summarizer to be enabled. |
Brave Local Search API provides enrichments for location search results. Access to this API is available only through the Brave Search API Pro plans; confirm the user's plan before using this tool (if the user does not have a Pro plan, use the brave_web_search tool). Searches for local businesses and places using Brave's Local Search API. Best for queries related to physical locations, businesses,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Search query (max 400 chars, 50 words) |
| country | string | no | Search query country, where the results come from. The country string is limited to 2 character country codes of supported countries. |
| search_lang | string | no | Search language preference. The 2 or more character language code for which the search results are provided. |
| ui_lang | string | no | The language of the UI. The 2 or more character language code for which the search results are provided. |
| count | integer | no | Number of results (1-20, default 10). Applies only to web search results (i.e., has no effect on locations, news, videos, etc.) |
| offset | integer | no | Pagination offset (max 9, default 0) |
| safesearch | string | no | Filters search results for adult content. The following values are supported: 'off' - No filtering. 'moderate' - Filters explicit content (e.g., images and videos), but allows adult domains in search |
| freshness | no | Filters search results by when they were discovered. The following values are supported: 'pd' - Discovered within the last 24 hours. 'pw' - Discovered within the last 7 days. 'pm' - Discovered within | |
| text_decorations | boolean | no | Whether display strings (e.g. result snippets) should include decoration markers (e.g. highlighting characters). |
| spellcheck | boolean | no | Whether to spellcheck the provided query. |
| result_filter | array | no | Result filter (default ['web', 'query']) |
| goggles | no | Goggles act as a custom re-ranking on top of Brave's search index. The parameter supports both a url where the Goggle is hosted or the definition of the Goggle. Multiple goggle URLs and/or definitions | |
| units | no | The measurement units. If not provided, units are derived from search country. | |
| extra_snippets | boolean | no | A snippet is an excerpt from a page you get as a result of the query, and extra_snippets allow you to get up to 5 additional, alternative excerpts. Only available under Free AI, Base AI, Pro AI, Base |
| summary | boolean | no | This parameter enables summary key generation in web search results. This is required for summarizer to be enabled. |
Searches for videos using Brave's Video Search API and returns structured video results with metadata. When to use: - When you need to find videos related to a specific topic, keyword, or query. - Useful for discovering video content, getting video metadata, or finding videos from specific creators/publishers. Returns a JSON list of video-related results with title, url,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | The user's search query. Query cannot be empty. Limited to 400 characters and 50 words. |
| country | string | no | Search query country, where the results come from. The country string is limited to 2 character country codes of supported countries. |
| search_lang | string | no | Search language preference. The 2 or more character language code for which the search results are provided. |
| ui_lang | string | no | User interface language preferred in response. Usually of the format <language_code>-<country_code>. For more, see RFC 9110. |
| count | integer | no | Number of results (1-50, default 20). Combine this parameter with offset to paginate search results. |
| offset | integer | no | Pagination offset (max 9, default 0). Combine this parameter with count to paginate search results. |
| spellcheck | boolean | no | Whether to spellcheck provided query. |
| safesearch | no | Filters search results for adult content. The following values are supported: 'off' - No filtering. 'moderate' - Filter out explicit content. 'strict' - Filter out explicit and suggestive content. The | |
| freshness | no | Filters search results by when they were discovered. The following values are supported: 'pd' - Discovered within the last 24 hours. 'pw' - Discovered within the last 7 days. 'pm' - Discovered within |
Performs an image search using the Brave Search API. Helpful for when you need pictures of people, places, things, graphic design ideas, art inspiration, and more. When relaying results in a markdown environment, it may be helpful to include images in the results (e.g., ).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | The user's search query. Query cannot be empty. Limited to 400 characters and 50 words. |
| country | string | no | Search query country, where the results come from. The country string is limited to 2 character country codes of supported countries. |
| search_lang | string | no | Search language preference. The 2 or more character language code for which the search results are provided. |
| count | integer | no | Number of results (1-200, default 50). Image Search is not paginated — raise count if you need more results. There is no offset parameter. |
| safesearch | no | Filters search results for adult content. The following values are supported: 'off' - No filtering. 'strict' - Drops all adult content from search results. | |
| spellcheck | boolean | no | Whether to spellcheck provided query. |
This tool searches for news articles using Brave's News Search API based on the user's query. Use it when you need current news information, breaking news updates, or articles about specific topics, events, or entities. When to use: - Finding recent news articles on specific topics - Getting breaking news updates - Researching current events or trending stories
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Search query (max 400 chars, 50 words) |
| country | string | no | Search query country, where the results come from. The country string is limited to 2 character country codes of supported countries. |
| search_lang | string | no | Search language preference. The 2 or more character language code for which the search results are provided. |
| ui_lang | string | no | User interface language preferred in response. Usually of the format <language_code>-<country_code>. For more, see RFC 9110. |
| count | integer | no | Number of results (1-50, default 20) |
| offset | integer | no | Pagination offset (max 9, default 0) |
| spellcheck | boolean | no | Whether to spellcheck provided query. |
| safesearch | no | Filters search results for adult content. The following values are supported: 'off' - No filtering. 'moderate' - Filter out explicit content. 'strict' - Filter out explicit and suggestive content. The | |
| freshness | no | Filters search results by when they were discovered. The following values are supported: 'pd' - Discovered within the last 24 hours. 'pw' - Discovered within the last 7 Days. 'pm' - Discovered within | |
| extra_snippets | boolean | no | A snippet is an excerpt from a page you get as a result of the query, and extra_snippets allow you to get up to 5 additional, alternative excerpts. Only available under Free AI, Base AI, Pro AI, Base |
| goggles | no | Goggles act as a custom re-ranking on top of Brave's search index. The parameter supports both a url where the Goggle is hosted or the definition of the Goggle. Multiple goggle URLs and/or definitions |
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 prov
| Parameter | Type | Required | Notes |
|---|---|---|---|
| key | string | yes | The key is equal to value of field key as part of the Summarizer response model. |
| entity_info | boolean | no | Returns extra entities info with the summary response. |
| inline_references | boolean | no | Adds inline references to the summary response. |
Retrieves pre-extracted, relevance-ranked web content using Brave's LLM Context API, optimized for AI agents, LLM grounding, and RAG pipelines. Unlike a traditional web search that returns links and short descriptions, this tool returns the actual substance of matching pages — text chunks, tables, code blocks, and structured data — so the model can reason over it directly. When to use:
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | The user's search query term. Query can not be empty. Maximum of 400 characters and 50 words in the query. |
| country | string | no | The search query country, where the results come from. The country string is limited to 2 character country codes of supported countries. |
| search_lang | string | no | The search language preference. The 2 or more character language code for which the search results are provided. |
| count | integer | no | The maximum number of search results considered to select the LLM context data. The default is 20 and the maximum is 50. |
| spellcheck | boolean | no | Whether to enable spellcheck on the query. |
| maximum_number_of_urls | integer | no | Maximum number of different URLs to include in LLM context. |
| maximum_number_of_tokens | integer | no | Approximate maximum number of tokens to include in context. The default is 8192 and maximum is 32768. |
| maximum_number_of_snippets | integer | no | Maximum number of different snippets (or chunks of text) to include in LLM context. The default is 50 and maximum is 256. |
| context_threshold_mode | string | no | The mode to use to determine the threshold for including content in context. Default is balanced. |
| maximum_number_of_tokens_per_url | integer | no | Maximum number of tokens to include per URL. The default is 4096 and maximum is 8192. |
| maximum_number_of_snippets_per_url | integer | no | Maximum number of snippets to include per URL. The default is 50 and maximum is 100. |
| goggles | no | Goggles act as a custom re-ranking on top of Brave's search index. The parameter supports both a url where the Goggle is hosted or the definition of the Goggle. Multiple goggle URLs and/or definitions | |
| freshness | no | Filters search results by when they were discovered. The following values are supported: 'pd' - Discovered within the last 24 hours. 'pw' - Discovered within the last 7 days. 'pm' - Discovered within | |
| enable_local | boolean | no | Whether to enable local recall. Not setting this value means auto-detect and uses local recall if any of the localization headers are provided. |
| enable_source_metadata | boolean | no | Enable source metadata enrichment (site_name, favicon) in the sources attribute of the response. |
| x-loc-lat | number | no | The latitude of the client's geographical location in degrees, to provide relevant local results. The latitude must be greater than or equal to -90.0 degrees and less than or equal to +90.0 degrees. |
| x-loc-long | number | no | The longitude of the client's geographical location in degrees, to provide relevant local results. The longitude must be greater than or equal to -180.0 and less than or equal to +180.0 degrees. |
| x-loc-city | string | no | The generic name of the client city |
| x-loc-state | string | no | A code which could be up to three characters, that represent the client's state/region. The region is the first-level subdivision (the broadest or least specific) of the ISO 3166-2 code. |
| x-loc-state-name | string | no | The name of the client’s state/region. The region is the first-level subdivision (the broadest or least specific) of the ISO 3166-2 code. |
Searches Brave's Place Search API. A single call may populate any combination of 'results' (POIs), 'cities', 'addresses', 'streets', and 'location' (the resolved search area), depending on the query's shape. When to use: - POIs near coordinates or a named area (e.g. "coffee shops in Paris") -> 'results', each with structured business data (postal address, hours, contact, ratings, phot
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | no | Query string. Shape influences the response: POI-like queries -> results; bare/ambiguous city names -> cities; address- or street-shaped queries with a geographic anchor -> addresses and/or `str |
| radius | number | no | Bias toward results closer to the supplied coordinates, in meters. NOT a hard cutoff -- the API may still return more distant results. If omitted, the search is performed globally. |
| count | integer | no | Number of results to return. Maximum is 50. Default is 20. |
| latitude | number | no | Latitude of the geographical coordinates around which to search, in degrees (-90 to 90). Typically paired with longitude. |
| longitude | number | no | Longitude of the geographical coordinates around which to search, in degrees (-180 to 180). Typically paired with latitude. |
| location | string | no | Location string to search around, used as an alternative to latitude and longitude. For US locations prefer the form '<city> <state> <country name>' (e.g. 'san francisco ca united states'); for no |
| country | string | no | Two-letter country code (ISO 3166-1 alpha-2) used to scope the search. Defaults to 'US'. |
| search_lang | string | no | Language for the search results. Defaults to 'en'. |
| ui_lang | string | no | User interface language for the response, usually of the form '<language>-<region>'. Defaults to 'en-US'. |
| units | string | no | Units of measurement for distance values. Defaults to 'metric'. |
| safesearch | string | no | Safe search level for the query results. 'off' - No filtering. 'moderate' - Filter out explicit content. 'strict' - Filter out explicit and suggestive content. Defaults to 'strict'. |
| spellcheck | boolean | no | Whether to apply spellcheck before executing the search. Defaults to true. |
| geoloc | string | no | Optional geolocation token used to refine results. |
| api-version | string | no | The API version to use. This is denoted by the format YYYY-MM-DD. Default is the latest that is available. Read more about API versioning at https://api-dashboard.search.brave.com/documentation/guides |
| accept | string | no | The default supported media type is application/json. |
| cache-control | string | no | Brave Search will return cached content by default. To prevent caching set the Cache-Control header to no-cache. This is currently done as best effort. |
| user-agent | string | no | The user agent originating the request. Brave Search can utilize the user agent to provide a different experience depending on the device as described by the string. The user agent should follow the c |
- Every tool, no call limit, and mcprush charges nothing
- A buyer key from your dashboard — the gateway refuses a call without one
- Answers through our gateway, so every call is in your log
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Brave Search or to call it, and its free tier carries no monthly call limit.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | minimal | capability blast radius (minimal) — client exposure if the model is manipulated | −0 |
| verification-discount | repo | publisher verification (public source) — no provenance, but the source is public and inspectable | −1 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
Tools were statically extracted from the published source (7 recovered), not enumerated from a running server. Tool-poisoning, Unicode-smuggling, capability and toxic-flow analysis ran on this inferred surface, but a mis-parsed registration could be missed or mis-attributed, so tool-derived findings are capped below “confirmed”. To grade the real runtime surface, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. minimal is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| brave_image_search | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| brave_llm_context | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| brave_news_search | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| brave_place_search | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| brave_summarizer | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| brave_video_search | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| brave_web_search | untrusted-input | untrusted-input: keyword "web_search", declares openWorldHint: true (interacts with entities outside the server) |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
The gateway serves every install the publisher’s current release, so a release cannot be pinned or rolled back to here yet. The history below is for reading; the current release on file is 0.1.1.
- Built from @brave/brave-search-mcp-server at 2.1.4 and released on our hosting.
- The version this listing went live with, after review.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Brave Search can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.