Brave Search MCP Server
by isaacgounton
Verified
# Brave Search MCP with SSE Support
This is a Model Context Protocol (MCP) server that provides Brave Search capabilities with Server-Sent Events (SSE) integration. It can be deployed to Coolify and used as a real-time search service.
## Features
- Brave Search API integration through MCP
- Real-time search results using SSE
- Docker and Coolify ready
- TypeScript implementation
- Express.js SSE endpoint
## Prerequisites
- Brave Search API key
- Node.js 18+
- Docker (for containerized deployment)
- Coolify instance
## Local Development
1. Clone the repository
2. Create a `.env` file with your Brave API key:
```
BRAVE_API_KEY=your_api_key_here
PORT=3001
```
3. Install dependencies:
```bash
npm install
```
4. Start development server:
```bash
npm run dev
```
## Docker Deployment
1. Build and run using docker-compose:
```bash
docker-compose up --build
```
## Coolify Deployment
1. In your Coolify dashboard, create a new service
2. Choose "Deploy from Source"
3. Configure the following:
- Repository URL: Your repository URL
- Branch: main
- Build Command: `npm run build`
- Start Command: `npm start`
- Port: 3001
- Environment Variables:
- BRAVE_API_KEY=your_api_key_here
- PORT=3001
## Using the SSE Integration
### SSE Endpoint
```
GET http://your-server:3001/sse
```
The SSE endpoint provides real-time search results. Connect to it using the EventSource API:
```javascript
const eventSource = new EventSource('http://your-server:3001/sse');
eventSource.onmessage = (event) => {
const data = JSON.parse(event.data);
// Handle the search results
console.log(data);
};
eventSource.onerror = (error) => {
console.error('SSE Error:', error);
eventSource.close();
};
```
### Messages Endpoint
```
POST http://your-server:3001/messages
Content-Type: application/json
{
"query": "your search query",
"count": 10 // optional, default: 10, max: 20
}
```
Use this endpoint to trigger searches that will be broadcast to all connected SSE clients.
## MCP Usage
The server provides the following MCP tool:
- `brave_web_search`: Performs a web search using the Brave Search API
```typescript
{
query: string; // Search query
count?: number; // Number of results (1-20, default: 10)
}
```
## Error Handling
- The server broadcasts errors to all connected SSE clients
- Errors are formatted as:
```json
{
"type": "error",
"error": "error message"
}
```
## Notes
- The SSE connection will stay open until the client closes it
- Each search result is broadcast to all connected clients
- The server automatically handles disconnections and cleanup
- For production deployment, consider implementing authentication for the messages endpoint