搜索服务流式接口

Brave Search MCP/SSE Server 是一个基于模型上下文协议(MCP)和服务器发送事件(SSE)的搜索服务流式接口,集成了Brave搜索API,为AI模型和其他客户端提供实时流式搜索功能。

  • by Shoofio
  • TypeScript
  • 本地部署
  • 16 星标
  • 更新于
在 GitHub 查看 Shoofio/brave-search-mcp-sse

使用说明

Brave Search MCP/SSE服务器

使用服务器发送事件(SSE)实现模型上下文协议(MCP),该协议集成了 勇敢搜索API,通过流媒体界面为人工智能模型和其他客户端提供网络和本地搜索功能。

概述

此服务器充当理解模型上下文协议的大型语言模型的工具提供者。它通过SSE连接展示了Brave强大的网络和本地搜索功能,允许实时流式传输搜索结果和状态更新。

关键设计目标:

  • 集中访问: 设计时考虑到了中心性,允许组织或个人管理单个Brave Search API密钥,并提供对多个内部客户端或应用程序的受控访问。
  • 可观察性: 具有强大的日志记录功能,可跟踪请求、API交互、错误和速率限制,提供使用情况的可见性并帮助调试。
  • 灵活部署: 可以在网络中私下部署,也可以通过Kubernetes Ingress或直接Docker端口映射等方法公开。

特性

  • 网页搜索:访问Brave的独立网络搜索索引,获取一般查询、新闻、文章等。支持分页和筛选控件。
  • 本地搜索:查找具有详细信息(如地址、电话号码和评级)的企业、餐馆和服务。
  • 智能回退:如果没有找到查询的特定本地结果,则本地搜索会自动回退到筛选的网络搜索。
  • 服务器发送事件(SSE):高效、实时地流式传输搜索结果和工具执行状态。
  • 模型上下文协议(MCP):遵守MCP标准,与兼容客户端无缝集成。
  • Docker支持:包括a Dockerfile 便于容器化和部署。
  • Helm图表:提供Helm图,用于直接部署到Kubernetes集群。

先决条件

根据您选择的部署方法,您将需要以下内容:

  • 勇敢搜索API密钥:所有部署方法都需要。请参阅下面的“入门”。
  • 码头工人:如果使用Docker部署,则需要。
  • kubectl和Helm:如果使用Helm部署到Kubernetes,则为必填项。
  • Node.js和npm:必填 仅 用于本地开发(建议使用Node.js v22.x或更高版本)。
  • Git:克隆存储库以进行本地开发或构建自定义Docker映像时需要。

入门指南

1.获得勇敢的搜索API密钥

  1. 注册一个 勇敢搜索API帐户.
  2. 选择一个计划(提供免费套餐)。
  3. 从生成API密钥 开发人员仪表板.

2.配置

服务器要求通过 BRAVE_API_KEY 环境变量。

其他潜在的环境变量(检查 src/config/config.ts 详细信息):

  • PORT:服务器侦听的端口(默认为 8080).
  • LOG_LEVEL:记录冗长(例如。, info, debug).

在您的环境中设置这些变量或使用 .env 项目根目录中的文件用于本地开发。

安装与使用

选择最适合您需求的部署方法:

选项1:Docker(推荐部署)

先决条件: Docker已安装。

  1. 获取勇敢的搜索API密钥: 按照“入门”部分中的步骤进行操作。
  2. 拉取Docker镜像: 从Docker Hub中提取最新映像:
    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 .)
  3. 运行Docker容器: 使用您拉过的标签(例如。, latest 或 1.0.10):
    docker run -d --rm \
      -p 8080:8080 \
      -e BRAVE_API_KEY="YOUR_API_KEY_HERE" \
      -e PORT="8080" # Optional: Define the port if needed
      # -e LOG_LEVEL="info" # Optional: Set log level
      --name brave-search-server \
      shoofio/brave-search-mcp-sse:latest # Or your specific tag
    
    这将以分离模式运行服务器,将主机上的端口8080映射到容器。

选项2:Helm(Kubernetes部署)

先决条件: kubectl 已连接到您的集群,并安装了Helm。

  1. 获取勇敢的搜索API密钥: 按照“入门”部分中的步骤进行操作。

  2. 添加Helm存储库:

    helm repo add brave-search-mcp-sse https://shoofio.github.io/brave-search-mcp-sse/
    helm repo update
    
  3. 准备API密钥秘密(推荐): 在目标命名空间中创建Kubernetes secret:

    kubectl create secret generic brave-search-secret \
      --from-literal=api-key='YOUR_API_KEY_HERE' \
      -n <your-namespace>
    
  4. 安装Helm chart: 图表版本与应用程序版本相对应(最新版本为 1.0.10).使用密码安装:

    helm install brave-search brave-search-mcp-sse/brave-search-mcp-sse \
      -n <your-namespace> \
      --set braveSearch.existingSecret=brave-search-secret
      # Optionally specify a version: --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"
    
  5. 图表配置: 您可以通过覆盖默认值来自定义部署。创建一个YAML文件(例如。, dev-values.yaml, prod-values.yaml)使用您所需的设置并使用 -f 安装过程中的标记: helm install ... -f dev-values.yaml.

    参考图表的默认值 values.yaml 文件以查看所有可用的配置选项及其默认设置。

方案3:地方发展

先决条件: Node.js和npm(建议使用v22.x或更高版本),Git。

  1. 获取勇敢的搜索API密钥: 按照“入门”部分中的步骤进行操作。
  2. 克隆存储库:
    git clone <repository_url> # Replace with the actual URL
    cd brave-search-mcp-sse
    
  3. 安装依赖项:
    npm install
    
  4. 设置环境变量: 创建一个 .env 根目录中的文件:
    BRAVE_API_KEY=YOUR_API_KEY_HERE
    PORT=8080
    # LOG_LEVEL=debug
    
  5. 构建TypeScript代码:
    npm run build
    
  6. 运行服务器:
    npm start
    # Or for development with auto-reloading (if nodemon/ts-node-dev is configured)
    # npm run dev
    
    服务器将开始监听配置的端口(默认 8080).

API/协议交互

客户端通过HTTP GET请求连接到此服务器以建立SSE连接。具体端点取决于您的部署(例如。, http://localhost:8080/, http://<k8s-service-ip>:8080/,或通过入口)。

连接后,服务器和客户端通过SSE流使用MCP消息进行通信。

可用工具

服务器向连接的客户端公开以下工具:

  1. brave_web_search

    • 描述:使用Brave search API执行常规web搜索。
    • 输入:
      • query (字符串,必填):搜索查询。
      • count (number,可选):要返回的结果数(1-20,默认值10)。
      • offset (数字,可选):分页偏移量(0-9,默认值0)。
      • (其他勇敢的API参数如 search_lang, country, freshness, result_filter, safesearch 可能支持-检查 src/services/braveSearchApi.ts)
    • 输出:流式传输包含搜索结果(标题、URL、代码段等)的MCP消息。
  2. brave_local_search

    • 描述:使用Brave search API搜索本地企业和场所。如果找不到本地结果,则返回网络搜索。
    • 输入:
      • query (string,必填):本地搜索查询(例如,“我附近的披萨”、“市中心的咖啡馆”)。
      • count (数字,可选):最大结果数(1-20,默认5)。
    • 输出:流式传输包含本地业务详细信息(姓名、地址、电话、评级等)的MCP消息。

(使用示例 curl -注意:实际的MCP交互需要一个客户端库)

# Example: Connect to SSE endpoint (won't show MCP messages directly)
curl -N http://localhost:8080/ # Or your deployed endpoint

客户端配置示例(游标)

要将此服务器与Cursor等MCP客户端一起使用,您需要配置客户端以连接到服务器的SSE端点。

将以下配置添加到光标设置中(mcp.json 或类似的配置文件),将URL替换为您的实际地址和端口 brave-search-mcp-sse 服务器可访问:

{
  "mcpServers": {
    "brave-search": {
      "transport": "sse",
      "url": "http://localhost:8080/sse"
    }
  }
}

说明:

  • transport:必须设置为 "sse" 对于这台服务器。
  • url:这是关键部分。
    • 如果通过Docker在本地运行(如示例所示), http://localhost:8080/sse 很可能是正确的。
    • 如果在Kubernetes中运行,请替换 localhost:8080 将适当的Kubernetes服务地址/端口或Ingress主机名/路径配置为到达服务器的端口8080。
    • 确保URL路径以结尾 /sse.

(类似的配置步骤可能适用于支持SSE传输的其他MCP客户端,如最新版本的Claude Desktop,但请参阅其特定文档。)

项目结构

.
├── Dockerfile             # Container build definition
├── helm/                  # Helm chart for Kubernetes deployment
│   └── brave-search-mcp-sse/
├── node_modules/        # Project dependencies (ignored by git)
├── src/                   # Source code (TypeScript)
│   ├── config/            # Configuration loading
│   ├── services/          # Brave API interaction logic
│   ├── tools/             # Tool definitions for MCP
│   ├── transport/         # SSE/MCP communication handling
│   ├── types/             # TypeScript type definitions
│   ├── utils/             # Utility functions
│   └── index.ts           # Main application entry point
├── dist/                  # Compiled JavaScript output (ignored by git)
├── package.json           # Project metadata and dependencies
├── tsconfig.json          # TypeScript compiler options
├── .env.example           # Example environment file
├── .gitignore
└── README.md              # This file

贡献

欢迎投稿!请随时提交带有更改的Pull Request。确保你的代码遵循现有的风格,并在适用的情况下包含测试。如果时间允许,我将审查PR。

许可证

此MCP服务器根据MIT许可证。这意味着您可以根据MIT许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。