使用服务器发送事件(SSE)实现模型上下文协议(MCP),集成 Brave Search API,通过流接口为AI模型和其他客户端提供网络和本地搜索功能。
此服务器作为大型语言模型的工具提供者,这些模型理解模型上下文协议。它通过SSE连接暴露Brave强大的网络和本地搜索功能,允许实时流式传输搜索结果和状态更新。
关键设计目标:
Dockerfile,便于容器化和部署。根据您选择的部署方法,您可能需要以下一些内容:
服务器需要通过环境变量 BRAVE_API_KEY 设置Brave Search API密钥。
其他潜在的环境变量(详情请查看 src/config/config.ts):
PORT: 服务器监听的端口(默认为 8080)。LOG_LEVEL: 日志详细程度(例如,info, debug)。可以在环境中设置这些变量,或者在项目根目录下的.env文件中设置,以供本地开发使用。
选择最适合您需求的部署方式:
先决条件: 已安装Docker。
docker pull shoofio/brave-search-mcp-sse:latest
或者拉取特定版本标签(例如,1.0.10):
docker pull shoofio/brave-search-mcp-sse:1.0.10
(如果需要,也可以本地构建镜像。克隆仓库并运行 docker build -t brave-search-mcp-sse:custom .)latest 或 1.0.10):
docker run -d --rm \
-p 8080:8080 \
-e BRAVE_API_KEY="YOUR_API_KEY_HERE" \
-e PORT="8080" # 可选:如果需要定义端口
# -e LOG_LEVEL="info" # 可选:设置日志级别
--name brave-search-server \
shoofio/brave-search-mcp-sse:latest # 或您的特定标签
这将以分离模式运行服务器,将主机上的8080端口映射到容器。先决条件: kubectl已连接到您的集群,已安装Helm。
获取Brave Search API密钥: 按照“开始”部分中的步骤操作。
添加Helm仓库:
helm repo add brave-search-mcp-sse https://shoofio.github.io/brave-search-mcp-sse/
helm repo update
准备API密钥Secret(推荐): 在目标命名空间中创建一个Kubernetes Secret:
kubectl create secret generic brave-search-secret \
--from-literal=api-key='YOUR_API_KEY_HERE' \
-n <your-namespace>
安装Helm图表:
图表版本对应于应用版本(最新为 1.0.10)。使用Secret安装:
helm install brave-search brave-search-mcp-sse/brave-search-mcp-sse \
-n <your-namespace> \
--set braveSearch.existingSecret=brave-search-secret
# 可选指定版本:--version 1.0.10
或直接提供密钥(安全性较低):
helm install brave-search brave-search-mcp-sse/brave-search-mcp-sse \
-n <your-namespace> \
--set braveSearch.apiKey="YOUR_API_KEY_HERE"
图表配置:
您可以通过覆盖默认值来自定义部署。创建一个YAML文件(例如,dev-values.yaml,prod-values.yaml),包含您所需的设置,并在安装时使用 -f 标志:helm install ... -f dev-values.yaml。
参考图表的默认values.yaml文件,了解所有可用配置选项及其默认设置。
先决条件: Node.js和npm(推荐使用v22.x或更高版本),Git。
git clone <repository_url> # 替换为实际URL
cd brave-search-mcp-sse
npm install
.env文件:
BRAVE_API_KEY=YOUR_API_KEY_HERE
PORT=8080
# LOG_LEVEL=debug
npm run build
npm start
# 或者为了开发时自动重新加载(如果配置了nodemon/ts-node-dev)
# npm run dev
服务器将在配置的端口上启动监听(默认 8080)。客户端通过HTTP GET请求连接到此服务器,以建立SSE连接。具体端点取决于您的部署(例如,http://localhost:8080/,http://<k8s-service-ip>:8080/,或通过Ingress)。
一旦连接,服务器和客户端通过SSE流使用MCP消息进行通信。
服务器向连接的客户端暴露以下工具:
brave_web_search
query(字符串,必需):搜索查询。count(数字,可选):返回的结果数量(1-20,默认10)。offset(数字,可选):分页偏移量(0-9,默认0)。search_lang,country,freshness,result_filter,safesearch可能被支持 - 请检查src/services/braveSearchApi.ts)brave_local_search
query(字符串,必需):本地搜索查询(例如,“附近披萨”,“市中心咖啡馆”)。count(数字,可选):最大结果数量(1-20,默认5)。(示例使用curl - 注意:实际MCP交互需要客户端库)
# 示例:连接到SSE端点(不会直接显示MCP消息)
curl -N http://localhost:8080/ # 或您的部署端点
要使用此服务器与MCP客户端(如Cursor)配合,您需要配置客户端以连接到服务器的SSE端点。
在您的Cursor设置(mcp.json或其他配置文件)中添加以下配置,替换URL为您实际的地址和端口,该地址和端口可用于访问您的brave-search-mcp-sse服务器:
{
"mcpServers": {
"brave-search": {
"transport": "sse",
"url": "http://localhost:8080/sse"
}
}
}
解释:
transport:必须设置为 "sse"。url:这是关键部分。
http://localhost:8080/sse可能是正确的。localhost:8080替换为适当的Kubernetes服务地址/端口或配置为到达服务器8080端口的Ingress主机名/路径。/sse 结尾。(类似配置步骤可能适用于其他支持SSE传输的MCP客户端,如Claude Desktop的较新版本,但请参考其特定文档。)
.
├── Dockerfile # 容器构建定义
├── helm/ # Kubernetes部署的Helm图表
│ └── brave-search-mcp-sse/
├── node_modules/ # 项目依赖项(由git忽略)
├── src/ # 源代码(TypeScript)
│ ├── config/ # 配置加载
│ ├── services/ # Brave API交互逻辑
│ ├── tools/ # MCP工具定义
│ ├── transport/ # SSE/MCP通信处理
│ ├── types/ # TypeScript类型定义
│ ├── utils/ # 实用函数
│ └── index.ts # 主应用程序入口点
├── dist/ # 编译后的JavaScript输出(由git忽略)
├── package.json # 项目元数据和依赖项
├── tsconfig.json # TypeScript编译选项
├── .env.example # 示例环境文件
├── .gitignore
└── README.md # 此文件
欢迎贡献!请随时提交包含更改的Pull Request。确保您的代码符合现有风格,并在适用的情况下包含测试。我将根据时间安排审查PR。
此MCP服务器根据MIT许可证授权。这意味着您可以自由使用、修改和分发软件,但需遵守MIT许可证的条款和条件。更多细节,请参阅项目存储库中的LICENSE文件。