
An MCP server implementation that integrates the Brave Search API, providing comprehensive search ca
An MCP server implementation that integrates the Brave Search API, providing comprehensive search capabilities including web search, local business search, place search, image search, video search, news search, LLM context, and AI-powered summarization. This project supports both STDIO and HTTP transports, with STDIO as the default mode.
·
An MCP server implementation that integrates the Brave Search API, providing comprehensive search capabilities including web search, local business search, place search, image search, video search, news search, LLM context, and AI-powered summarization. This project supports both STDIO and HTTP transports, with STDIO as the default mode.
To follow established MCP conventions, the server now defaults to STDIO. If you would like to continue using HTTP, you will need to set the BRAVE_MCP_TRANSPORT environment variable to http, or provide the runtime argument --transport http when launching the server.
brave_image_searchVersion 1.x of the MCP server would return base64-encoded image data along with image URLs. This dramatically slowed down the response, as well as consumed unnecessarily context in the session. Version 2.x removes the base64-encoded data, and returns a response object that more closely reflects the original Brave Search API response. The updated output schema is defined in src/tools/images/schemas/output.ts.
brave_web_search)Performs comprehensive web searches with rich result types and advanced filtering options.
Parameters:
query (string, required): Search terms (max 400 chars, 50 words)country (string, optional): Country code (default: "US")search_lang (string, optional): Search language (default: "en")ui_lang (string, optional): UI language (default: "en-US")count (number, optional): Results per page (1-20, default: 10)offset (number, optional): Pagination offset (max 9, default: 0)safesearch (string, optional): Content filtering ("off", "moderate", "strict", default: "moderate")freshness (string, optional): Time filter ("pd", "pw", "pm", "py", or date range)text_decorations (boolean, optional): Include highlighting markers (default: true)spellcheck (boolean, optional): Enable spell checking (default: true)result_filter (array, optional): Filter result types (default: ["web", "query"])goggles (array, optional): Custom re-ranking definitionsunits (string, optional): Measurement units ("metric" or "imperial")extra_snippets (boolean, optional): Get additional excerpts (Pro plans only)summary (boolean, optional): Enable summary key generation for AI summarizationbrave_local_search)Searches for local businesses and places with detailed information including ratings, hours, and AI-generated descriptions.
Parameters:
brave_web_search with automatic location filteringNote: Requires Pro plan for full local search capabilities. Falls back to web search otherwise.
brave_video_search)Searches for videos with comprehensive metadata and thumbnail information.
Parameters:
query (string, required): Search terms (max 400 chars, 50 words)country (string, optional): Country code (default: "US")search_lang (string, optional): Search language (default: "en")ui_lang (string, optional): UI language (default: "en-US")count (number, optional): Results per page (1-50, default: 20)offset (number, optional): Pagination offset (max 9, default: 0)spellcheck (boolean, optional): Enable spell checking (default: true)safesearch (string, optional): Content filtering ("off", "moderate", "strict", default: "moderate")freshness (string, optional): Time filter ("pd", "pw", "pm", "py", or date range)brave_image_search)Searches for images with metadata including URLs, dimensions, and confidence scores.
Parameters:
query (string, required): Search terms (max 400 chars, 50 words)country (string, optional): Country code (default: "US")search_lang (string, optional): Search language (default: "en")count (number, optional): Results per page (1-200, default: 50)safesearch (string, optional): Content filtering ("off", "strict", default: "strict")spellcheck (boolean, optional): Enable spell checking (default: true)brave_news_search)Searches for current news articles with freshness controls and breaking news indicators.
Parameters:
query (string, required): Search terms (max 400 chars, 50 words)country (string, optional): Country code (default: "US")search_lang (string, optional): Search language (default: "en")ui_lang (string, optional): UI language (default: "en-US")count (number, optional): Results per page (1-50, default: 20)offset (number, optional): Pagination offset (max 9, default: 0)spellcheck (boolean, optional): Enable spell checking (default: true)safesearch (string, optional): Content filtering ("off", "moderate", "strict", default: "moderate")freshness (string, optional): Time filter (default: "pd" for last 24 hours)extra_snippets (boolean, optional): Get additional excerpts (Pro plans only)goggles (array, optional): Custom re-ranking definitionsbrave_summarizer)Generates AI-powered summaries from web search results using Brave's summarization API.
Parameters:
key (string, required): Summary key from web search results (use summary: true in web search)entity_info (boolean, optional): Include entity information (default: false)inline_references (boolean, optional): Add source URL references (default: false)Usage: First perform a web search with summary: true, then use the returned summary key with this tool.
brave_place_search)Searches for points of interest (POIs) in a specified geographic area using Brave's Place Search API. Returns rich, structured place data including name, address, opening hours, contact info, ratings, photos, categories, and timezone.
Parameters:
query (string, optional): Query string used to refine the POI search (max 400 chars, 50 words). When omitted, returns general points of interest in the supplied area.latitude (number, optional): Latitude of the search center (-90 to 90). Typically paired with longitude.longitude (number, optional): Longitude of the search center (-180 to 180). Typically paired with latitude.location (string, optional): Location string used as an alternative to latitude/longitude. For US locations prefer the form <city> <state> <country name> (e.g., san francisco ca united states); for non-US locations use <city> <country name> (e.g., tokyo japan).radius (number, optional): Search radius around the supplied coordinates, in meters. If omitted, the search is performed globally.count (number, optional): Number of results to return (1-50, default 20).country (string, optional): Two-letter country code (default US).search_lang (string, optional): Search language (default en).ui_lang (string, optional): UI language (default en-US).units (string, optional): Distance units (metric or imperial, default metric).safesearch (string, optional): Safe search level (off, moderate, strict, default strict).spellcheck (boolean, optional): Whether to spellcheck the query (default true).geoloc (string, optional): Optional geolocation token used to refine results.Optional request headers:
api-version (string, optional): Brave API version (YYYY-MM-DD)accept (string, optional): Response media type (application/json or */*)cache-control (string, optional): Use no-cache to request fresh contentuser-agent (string, optional): User agent originating the requestbrave_llm_context)Retrieves pre-extracted web content optimized for AI agents, LLM grounding, and RAG pipelines.
Parameters:
query (string, required): Search query (max 400 chars, 50 words)country (string, optional): Search country codesearch_lang (string, optional): Search language codecount (number, optional): Maximum number of search results considered (1-50)spellcheck (boolean, optional): Enable spell checkingmaximum_number_of_urls (number, optional): Maximum number of URLs to include (1-50)maximum_number_of_tokens (number, optional): Approximate maximum number of context tokens (1024-32768)maximum_number_of_snippets (number, optional): Maximum number of snippets to include (1-256)context_threshold_mode (string, optional): Threshold mode ("disabled", "strict", "lenient", "balanced")maximum_number_of_tokens_per_url (number, optional): Maximum tokens per URL (512-8192)maximum_number_of_snippets_per_url (number, optional): Maximum snippets per URL (1-100)goggles (string or array, optional): Goggle URL or definition for custom re-rankingfreshness (string, optional): Time filter ("pd", "pw", "pm", "py", or date range)enable_local (boolean, optional): Enable local recallenable_source_metadata (boolean, optional): Include source metadata enrichmentOptional request headers:
x-loc-lat (number, optional): Client latitude (-90 to 90)x-loc-long (number, optional): Client longitude (-180 to 180)x-loc-city (string, optional): Client city namex-loc-state (string, optional): Client state or region codex-loc-state-name (string, optional): Client state or region namex-loc-country (string, optional): Client country codex-loc-postal-code (string, optional): Client postal codeapi-version (string, optional): Brave API version (YYYY-MM-DD)accept (string, optional): Response media type ("application/json" or "/")cache-control (string, optional): Use no-cache to request fresh contentuser-agent (string, optional): User agent originating the requestThe server supports the following environment variables:
BRAVE_API_KEY: Your Brave Search API key (required unless BRAVE_API_KEY_FILE is set)BRAVE_API_KEY_FILE: Path to a file containing your Brave Search API key. When set, this takes precedence over BRAVE_API_KEY. Useful for Docker secrets and similar mounted-secret setups.BRAVE_MCP_TRANSPORT: Transport mode ("http" or "stdio", default: "stdio")BRAVE_MCP_PORT: HTTP server port (default: 8080)BRAVE_MCP_HOST: HTTP server host (default: "127.0.0.1"). Binds to loopback only by default; set to "0.0.0.0" to expose the server on all interfaces (required inside containers and on Amazon Bedrock AgentCore). Only do this on a trusted network, since the HTTP endpoint is unauthenticated.BRAVE_MCP_ALLOWED_ORIGINS: Space- or comma-separated list of additional Origin header values permitted for the HTTP transport. Loopback origins are always allowed; browser requests carrying any other Origin are rejected with HTTP 403 to guard against DNS rebinding. Set this when a browser-based client on a real domain needs access.BRAVE_MCP_ALLOWED_HOSTS: Space- or comma-separated list of hostnames permitted in the Host header of the HTTP transport. Matching is on the hostname only and is case-insensitive; a numeric port in an entry (e.g. mcp.example.com:8080) is accepted but ignored for matching. Optional, opt-in defense-in-depth: when unset (default) the Host header is not validated, so reverse-proxy and custom-domain deployments are unaffected. When set, only loopback hosts and the listed hostnames are accepted; any other Host (including malformed/non-numeric ports) is rejected with HTTP 403.BRAVE_MCP_LOG_LEVEL: Desired logging level("debug", "info", "notice", "warning", "error", "critical", "alert", or "emergency", default: "info")BRAVE_MCP_ENABLED_TOOLS: When used, specifies a space-separated whitelist for supported toolsBRAVE_MCP_DISABLED_TOOLS: When used, specifies a space-separated blacklist for supported toolsBRAVE_MCP_STATELESS: HTTP stateless mode (default: "true"). When running on Amazon Bedrock Agentcore, set to "true".node dist/index.js [options]
Options:
--brave-api-key <string> Brave API key
--brave-api-key-file <string> Path to file containing Brave API key
--transport <stdio|http> Transport type (default: stdio)
--port <number> HTTP server port (default: 8080)
--host <string> HTTP server host (default: 127.0.0.1)
--allowed-origins <origins...> Allowed Origin header values for HTTP transport (DNS rebinding protection)
--allowed-hosts <hosts...> Allowed Host header values for HTTP transport (opt-in DNS rebinding protection)
--logging-level <string> Desired logging level (one of _debug_, _info_, _notice_, _warning_, _error_, _critical_, _alert_, or _emergency_)
--enabled-tools Tools whitelist (only the specified tools will be enabled)
--disabled-tools Tools blacklist (included tools will be disabled)
--stateless <boolean> HTTP Stateless flagAdd this to your claude_desktop_config.json:
{
"mcpServers": {
"brave-search": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "BRAVE_API_KEY", "docker.io/mcp/brave-search"],
"env": {
"BRAVE_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}{
"mcpServers": {
"brave-search": {
"command": "npx",
"args": ["-y", "@brave/brave-search-mcp-server", "--transport", "http"],
"env": {
"BRAVE_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}For quick installation, use the one-click installation buttons below:
For manual installation, add the following to your User Settings (JSON) or .vscode/mcp.json:
{
"inputs": [
{
"password": true,
"id": "brave-api-key",
"type": "promptString",
"description": "Brave Search API Key",
}
],
"servers": {
"brave-search": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "BRAVE_API_KEY", "mcp/brave-search"],
"env": {
"BRAVE_API_KEY": "${input:brave-api-key}"
}
}
}
}{
"inputs": [
{
"password": true,
"id": "brave-api-key",
"type": "promptString",
"description": "Brave Search API Key",
}
],
"servers": {
"brave-search-mcp-server": {
"command": "npx",
"args": ["-y", "@brave/brave-search-mcp-server", "--transport", "stdio"],
"env": {
"BRAVE_API_KEY": "${input:brave-api-key}"
}
}
}
}docker build -t mcp/brave-search:latest .npm install
npm run buildgit clone https://github.com/brave/brave-search-mcp-server.git
cd brave-search-mcp-servernpm installnpm run buildAdd a reference to your local build in claude_desktop_config.json:
{
"mcpServers": {
"brave-search-dev": {
"command": "node",
"args": ["C:\\GitHub\\brave-search-mcp-server\\dist\\index.js"], // Verify your path
"env": {
"BRAVE_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}npm run build
node dist/index.jsnpx @modelcontextprotocol/inspector node dist/index.jsSTDIO is the default mode. For HTTP mode testing, add --transport http to the arguments in the Inspector UI.
npm run build: Build the TypeScript project
npm run watch: Watch for changes and rebuild
npm run format: Format code with Prettier
npm run format:check: Check code formatting
npm run prepare: Format and build (runs automatically on npm install)
npm run inspector: Launch an instance of MCP Inspector
npm run inspector:stdio: Launch a instance of MCP Inspector, configured for STDIO
For local development with Docker:
docker-compose up --buildSet BRAVE_API_KEY (or BRAVE_API_KEY_FILE) in your shell or a .env file before starting the stack. The default docker-compose.yml also accepts BRAVE_API_KEY_FILE when the path is valid inside the container (for example, from a bind mount or Docker secret).
To avoid putting the API key in an environment variable, you can use Docker Compose secrets. The server reads the key from the path in BRAVE_API_KEY_FILE, which must exist inside the container.
cp secrets/brave_api_key.txt.example secrets/brave_api_key.txtdocker compose -f docker-compose.yml -f docker-compose.secrets.example.yml up --buildThe override mounts the secret at /run/secrets/brave_api_key and sets BRAVE_API_KEY_FILE accordingly. See docker-compose.secrets.example.yml for the full configuration.
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
Pick your client and paste the snippet. Each one is the same server, written the way that client expects it.
claude mcp add brave-search -- docker run -i --rm -e BRAVE_API_KEY docker.io/mcp/brave-search{
"mcpServers": {
"brave-search": {
"env": {
"BRAVE_API_KEY": ""
},
"args": [
"run",
"-i",
"--rm",
"-e",
"BRAVE_API_KEY",
"docker.io/mcp/brave-search"
],
"command": "docker"
}
}
}code --add-mcp '{"name":"brave-search","env":{"BRAVE_API_KEY":""},"args":["run","-i","--rm","-e","BRAVE_API_KEY","docker.io/mcp/brave-search"],"command":"docker"}'[mcp_servers.brave-search]
command = "docker"
args = ["run", "-i", "--rm", "-e", "BRAVE_API_KEY", "docker.io/mcp/brave-search"]Runs locally on your device. Your client starts the server itself, so nothing has to be hosted.
Paste this prompt into your agent. It reads this page and does the setup for you.
Read https://aiagentslisting.com/mcp/brave-search-mcp-server to learn what the "Brave Search MCP Server" MCP server does and how to install it. Add it to my coding agent's MCP configuration as documented on that page, then confirm the server connects and list the tools it exposes.Agents can also browse this directory over MCP at https://aiagentslisting.com/api/mcp
npx @modelcontextprotocol/inspector node dist/index.jsThis server runs locally, so we can't read its tool list over the web yet.
The Official Model Context Protocol (MCP) server for Kagi Search & other tools.
The official MCP server implementation for the Perplexity API Platform
Production ready MCP server with real-time search, extract, map & crawl.
v2.1.3Release notesv2.1.2Release notesv2.1.1Release notesv2.1.0Release notesv2.0.85Release notesv2.0.84Release notesv2.0.83Release notesv2.0.82Release notesv2.0.81Release notesv2.0.80Release notesv2.0.79Release notesv2.0.78Release notesv2.0.77Release notesv2.0.76Release notesv2.0.75Release notesv2.0.74Release notesv2.0.73Release notesv2.0.72Release notesv2.0.71Release notesv2.0.70Release notesConnect to the AI Agents Listing MCP server at https://aiagentslisting.com/api/mcp using the HTTP transport and complete the sign-in when it asks. Then call the submit_review tool for the listing "brave-search-mcp-server" with a rating from 1 to 5 and a short note on what worked and what did not.No reviews yet
Be the first to share your experience with this tool.
The Official Model Context Protocol (MCP) server for Kagi Search & other tools.
Search & Web
The official MCP server implementation for the Perplexity API Platform
AI & ML Services
Production ready MCP server with real-time search, extract, map & crawl.
Browser & Scraping
One email a week. New agents, MCP servers and skills, and what is actually getting traction.