Web, Image, News, Video, and Local Point of Interest search capabilities using Brave's Search API
Claude Desktop config.json'a ekle
{
"mcpServers": {
"mikechao-brave-search-mcp": {
"command": "node",
"args": [
"~/.mcp/brave-search-mcp/index.js"
]
}
}
} Kaynak kodu al ve yerel olarak çalıştır
git clone https://github.com/mikechao/brave-search-mcp.git ~/.mcp/brave-search-mcp
cd ~/.mcp/brave-search-mcp An MCP Server implementation that integrates the Brave Search API, providing, Web Search, Local Points of Interest Search, Video Search, Image Search, News Search and LLM Context Search capabilities
brave_web_search
query (string): The term to search the internet forcount (number, optional): The number of results to return (max 20, default 10)offset (number, optional, default 0): The offset for paginationfreshness (enum, optional): Filters search results by when they were discovered
brave_image_search
query (string): The term to search the internet for images ofcount (number, optional): The number of images to return (max 50, default 10)brave_news_search
query (string): The term to search the internet for news articles, trending topics, or recent eventscount (number, optional): The number of results to return (max 20, default 10)offset (number, optional, default 0): The zero-based offset for pagination (max 9)freshness (enum, optional): Filters search results by when they were discovered
brave_local_search
query (string): Local search termcount (number, optional): The number of results to return (max 20, default 5)offset (number, optional, default 0): The zero-based offset for pagination (max 9)brave_video_search
query: (string): The term to search for videoscount: (number, optional): The number of videos to return (max 20, default 10)offset (number, optional, default 0): The zero-based offset for pagination (max 9)freshness (enum, optional): Filters search results by when they were discovered
brave_llm_context_search
balanced context threshold mode in compact mode and disables Brave relevance filtering in full mode.query (string): The search query. Maximum 400 characters and 50 words.url (string, optional): Optional URL to target. When provided, query and URL are combined for retrieval and only snippets from this exact URL are returned.count (number, optional, default 8): The maximum number of search results considered. Minimum 1, maximum 50.maximumNumberOfUrls (number, optional, default 8): The maximum number of URLs to include in the response. Minimum 1, maximum 50.maximumNumberOfTokens (number, optional, default 2048): The approximate maximum number of tokens in the returned context. Minimum 1024, maximum 32768.maximumNumberOfSnippets (number, optional, default 16): The maximum number of snippets across all URLs. Minimum 1, maximum 100.maximumNumberOfTokensPerUrl (number, optional, default 512): The maximum number of tokens per URL. Minimum 512, maximum 8192.maximumNumberOfSnippetsPerUrl (number, optional, default 2): The maximum number of snippets per URL. Minimum 1, maximum 100.responseMode (enum, optional, default compact): compact applies Brave’s balanced relevance filtering plus local snippet filtering/truncation. full disables Brave’s relevance filtering and returns raw snippets without local filtering or truncation.maxSnippetChars (number, optional, default 400): Maximum characters per snippet in compact mode. Minimum 80, maximum 4000.maxOutputChars (number, optional, default 8000): Approximate maximum serialized response size in compact mode. Minimum 1000, maximum 100000.
▶️ Click to watch the demo video
There is now support for OpenAI Apps and MCP Apps in this MCP Server. When UI mode is enabled for each tool there is a corresponding UI widget that let’s you control what gets added to the model’s context. See the directions in usage with ChatGPT section.
By default the MCP server runs in stdio mode.
BRAVE_API_KEY="your_key_here" npx -y brave-search-mcp
To enable Streamable HTTP mode:
BRAVE_API_KEY="your_key_here" npx -y brave-search-mcp --http
By default the server listens on port 3001. The URL is:
http://0.0.0.0:3001/mcp
There are two configuration modes:
BRAVE_MCP_CONFIG is unset. Feature toggles come from environment variables exactly as in previous releases.BRAVE_MCP_CONFIG=/path/to/config.toml is set. The TOML file becomes the single source of truth for feature settings, and overlapping feature env vars are ignored with warnings.These settings are always read from the process environment, regardless of mode:
BRAVE_API_KEY (required): Brave Search API key.PORT (optional): HTTP port (default: 3001).HOST (optional): Interface to bind to (default: 0.0.0.0).BRAVE_MCP_CONFIG (optional): Absolute or relative path to a TOML config file for feature settings.When BRAVE_MCP_CONFIG is not set, these feature env vars are supported:
ALLOWED_HOSTS (HTTP mode only): Comma-separated list of allowed hostnames for Host header validation.
ALLOWED_HOSTS=localhost,127.0.0.1,my-app.ngrok-free.appmy-app.ngrok-free.app not https://my-app.ngrok-free.app/mcpBRAVE_MCP_POLICY_FILE: JSON policy file path.BRAVE_MCP_POLICY_REDACT: true to redact matched text instead of blocking it.BRAVE_MCP_REQUEST_LIMIT: Positive integer request cap.BRAVE_MCP_WINDOW_SECONDS: Non-negative integer rolling window size.BRAVE_MCP_COOLDOWN_SECONDS: Non-negative integer cooldown after the limit is exceeded.BRAVE_MCP_AUDIT_LOG: true to emit audit logs.BRAVE_MCP_AUDIT_LOG_RAW: true to include raw query text in audit logs.BRAVE_MCP_REQUIRE_JUSTIFICATION: true to reject tool calls without a justification string.Examples:
# Local only
HOST=127.0.0.1 ALLOWED_HOSTS=localhost,127.0.0.1 BRAVE_API_KEY="your_key_here" npx -y brave-search-mcp --http
# Local with ngrok tunnel
HOST=127.0.0.1 ALLOWED_HOSTS=localhost,127.0.0.1,my-app.ngrok-free.app BRAVE_API_KEY="your_key_here" npx -y brave-search-mcp --http --ui
BRAVE_MCP_CONFIG)When BRAVE_MCP_CONFIG is set, the file controls feature configuration, including the HTTP host allowlist.
[auth]
httpApiKey = "sk-..."
requireAuth = true
callerId = "team-a"
[auth.jwt]
jwksUri = "https://idp.example.com/.well-known/jwks.json"
audience = "brave-search-mcp"
clockSkewSeconds = 30
[auth.oauth]
issuer = "https://idp.example.com"
audience = "brave-search-mcp"
clientId = "client-123"
clientSecret = "super-secret"
verifyStrategy = "jwks"
[audit]
enabled = true
logRaw = false
hmacSecret = "audit-secret"
[policy]
file = "/etc/brave-mcp/policy.json"
redact = false
[guardrail]
requestLimit = 100
windowSeconds = 60
cooldownSeconds = 10
requireJustification = false
[server]
allowedHosts = [
"localhost",
"127.0.0.1",
"my-app.ngrok-free.app",
]
Notes:
BRAVE_API_KEY, PORT, and HOST remain environment-only even in file mode.BRAVE_MCP_REQUEST_LIMIT or ALLOWED_HOSTS alongside BRAVE_MCP_CONFIG, startup warns that they are being ignored.[guardrails] are visible before you debug runtime behavior.To validate a config file without starting the server, use the packaged entrypoint after building the app workspace:
pnpm -C apps/brave-search-mcp run build
node apps/brave-search-mcp/dist/index.js --check-config ./apps/brave-search-mcp/test/fixtures/config.valid.toml
To run the built local entrypoint in file mode:
pnpm -C apps/brave-search-mcp run build
BRAVE_API_KEY="your_key_here" BRAVE_MCP_CONFIG="$PWD/apps/brave-search-mcp/test/fixtures/config.valid.toml" node apps/brave-search-mcp/dist/index.js --http
The Brave Search MCP Server can be used with the web UI of ChatGPT. It takes a few steps.
Settings → Apps → Advanced settings → Developer mode
Additional instructions here
BRAVE_API_KEY="your_key_here" npx -y brave-search-mcp --http --ui
Sign up and configure ngrok, the free plan works.
ngrok http 3001
Take note of the forwarding URL.
...
Forwarding https://john-joe-asdf.ngrok-free.dev -> http://localhost:3001
...
Click Apps
Click Create Apps
Fill out the form using the URL from step 3 as the MCP Server URL, but add /mcp.
https://john-joe-asdf.ngrok-free.dev/mcp
For Authentication, select ‘No Auth’
Tick the checkbox for ‘I understand and want to continue’
Then click Create.
In the ChatGPT UI, click the ’+’ button, scroll to ‘…more’, select the newly created Brave Search app, and enter your query.
For Claude Code users, run this command:
Windows:
claude mcp add-json brave-search '{"command":"cmd","args":["/c","npx","-y","brave-search-mcp"],"env":{"BRAVE_API_KEY":"YOUR_API_KEY_HERE"}}'
Linux/macOS:
claude mcp add-json brave-search '{"command":"npx","args":["-y","brave-search-mcp"],"env":{"BRAVE_API_KEY":"YOUR_API_KEY_HERE"}}'
Replace YOUR_API_KEY_HERE with your actual Brave Search API key.
mcpb file from the Releasesdocker build -t brave-search-mcp:latest -f apps/brave-search-mcp/Dockerfile .
docker run --rm -p 3001:3001 -e BRAVE_API_KEY="YOUR_API_KEY_HERE" brave-search-mcp:latest --http
claude_desktop_config.json for stdio mode:{
"mcp-servers": {
"brave-search": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"BRAVE_API_KEY",
"brave-search-mcp"
],
"env": {
"BRAVE_API_KEY": "YOUR API KEY HERE"
}
}
}
}
Add this to your claude_desktop_config.json:
{
"mcp-servers": {
"brave-search": {
"command": "npx",
"args": [
"-y",
"brave-search-mcp"
],
"env": {
"BRAVE_API_KEY": "YOUR API KEY HERE"
}
}
}
}
Add this to librechat.yaml
brave-search:
command: sh
args:
- -c
- BRAVE_API_KEY=API KEY npx -y brave-search-mcp
Contributions are welcome! See CONTRIBUTING.md for development setup, monorepo structure, and release instructions. For UI build workflow details, including the entrypoint orchestrator, see UI Build Orchestrator.
This library is not officially associated with Brave Software. It is a third-party implementation of the Brave Search API with a MCP Server.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Search ArXiv research papers
Discover, extract, and interact with the web - one interface powering automated access across the public internet.
Web search using free multi-engine search (NO API KEYS REQUIRED) — Supports Bing, Baidu, DuckDuckGo, Brave, Exa, and CSDN.
Web search using DuckDuckGo
Web search capabilities using Brave's Search API