Brave Search
A server for Brave Search, enabling web search capabilities via its API.
Brave Search MCP Server
This project implements a Model Context Protocol (MCP) server for Brave Search, allowing integration with AI assistants like Claude.
Prerequisites
- Python 3.11+
- uv - A fast Python package installer and resolver
Installation
Installing via Smithery
To install Brave Search MCP server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @thomasvan/mcp-brave-search --client claude
Manual Installation
-
Clone the repository:
git clone https://github.com/thomasvan/mcp-brave-search.git cd mcp-brave-search -
Create a virtual environment and install dependencies using uv:
uv venv source .venv/bin/activate # On Windows, use: .venv\Scripts\activate uv pip install -r requirements.txt -
Set up your Brave Search API key:
export BRAVE_API_KEY=your_api_key_hereOn Windows, use:
set BRAVE_API_KEY=your_api_key_here
Usage
-
Configure your MCP settings file (e.g.,
claude_desktop_config.json) to include the Brave Search MCP server:{ "mcpServers": { "brave-search": { "command": "uv", "args": [ "--directory", "path-to\\mcp-python\\mcp-brave-search\\src", "run", "server.py" ], "env": { "BRAVE_API_KEY": "YOUR_BRAVE_API_KEY_HERE" } } } }Replace
YOUR_BRAVE_API_KEY_HEREwith your actual Brave API key. -
Start the Brave Search MCP server by running your MCP-compatible AI assistant with the updated configuration.
-
The server will now be running and ready to accept requests from MCP clients.
-
You can now use the Brave Search functionality in your MCP-compatible AI assistant (like Claude) by invoking the available tools.
Available Tools
The server provides two main tools:
brave_web_search: Performs a web search using the Brave Search API.brave_local_search: Searches for local businesses and places.
Refer to the tool docstrings in src/server.py for detailed usage information.
Development
To make changes to the project:
- Modify the code in the
srcdirectory as needed. - Update the
requirements.txtfile if you add or remove dependencies:uv pip freeze > requirements.txt - Restart the server to apply changes.
Testing
The project includes both unit tests and integration tests:
Installing Test Dependencies
uv pip install pytest pytest-asyncio pytest-cov
Running Unit Tests
Unit tests can be run without an API key and use mocks to simulate API responses:
# Run all unit tests
python -m pytest tests/unit/
# Run with verbose output
python -m pytest tests/unit/ -v
Running Integration Tests
Integration tests require a valid Brave API key and make real API calls:
# Run integration tests with your API key
BRAVE_API_KEY_INTEGRATION="your_api_key_here" python -m pytest tests/integration/ -v
Test Coverage
To check test coverage:
python -m pytest --cov=src/mcp_brave_search
Troubleshooting
If you encounter any issues:
- Ensure your Brave API key is correctly set.
- Check that all dependencies are installed.
- Verify that you're using a compatible Python version.
- If you make changes to the code, make sure to restart the server.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Related Servers
12306-mcp
Search for train tickets on 12306, the official China Railway website.
Hacker News
Search for stories, get user information, and interact with Hacker News.
Expo MCP Server
Search and get recommendations from the official Expo documentation.
Contextual MCP Server
A server for Retrieval-Augmented Generation (RAG) using the Contextual AI platform.
Minecraft Wiki MCP
A server for browsing and searching the official Minecraft Wiki.
RAG Documentation
Retrieve and process documentation using vector search to provide context for AI assistants.
APLCart MCP Server
An MCP server providing semantic search capabilities for APLCart data.
SearXNG Bridge
A bridge server for connecting to a SearXNG metasearch engine instance.
DuckDuckGo Search
Provides web search functionality using the DuckDuckGo Search API.
HyperKitty MCP Server
MCP server that provides read-only access to HyperKitty, the web-based email archive component of Mailman 3.