search-server
by: fengin
一个基于MCP协议的搜索服务实现,提供网络搜索和本地搜索功能,Cursor和Claude Desktop能与之无缝集成。
📌Overview
Purpose: To provide a search service based on the MCP protocol, integrating multiple search engines seamlessly with Cursor and Claude Desktop.
Overview: The Search MCP Server is developed in Python, designed to handle asynchronous processing and high concurrent requests. It currently supports three search engines: Brave Search, Metaso Search, and Bocha Search.
Key Features:
- Multi-Search Engine Support:
- Integration of three search engines, enabling various search capabilities including web search, academic search, and location-specific search.
- Seamless Integration:
- Works smoothly with Claude Desktop and Cursor, enhancing content retrieval capabilities within these tools.
- Modular Design:
- Each search engine is encapsulated in an independent module, allowing for flexible use and easy customization.
Search MCP Server
一个基于MCP协议的搜索服务实现,提供多种搜索引擎支持,Cursor和Claude Desktop能与之无缝集成。
使用Python开发,支持异步处理和高并发请求,目前支持三种搜索引擎选择:
- Brave Search :国外专业提供搜索接口服务产品
- 秘塔(Metaso)搜索:秘塔AI搜索的逆向实现接口,非官方接口
- 博查(bocha)搜索:国内Search API市场占有率最高的搜索API产品
更多MCP知识,见AI全书:一文看懂什么是MCP(大模型上下文)?用来干什么的?怎么用它?
作者:凌封(微信fengin)
网址:https://aibook.ren(AI全书)
功能特点
- 多搜索引擎支持
- Brave Search: 提供网络搜索和位置搜索
- Metaso搜索: 提供网络搜索和学术搜索,支持简洁和深入两种模式
- 博查搜索: 提供网络搜索,支持时间范围过滤、详细摘要和图片搜索
- 适用场景
Claude Desktop或者Cursor无缝集成使用,大大扩展工具的内容获取能力 - 模块化设计
每个搜索引擎都是独立的模块,也可以单独拷出去其他地方使用
三种搜索的选择
运行时只能生效一种搜索引擎,以下为大致对比:
搜索引擎 | 国内/外 | 需魔法 | 自带总结 | 质量 | 免费 | 官方 | 速度 | 注册门槛 |
---|---|---|---|---|---|---|---|---|
Brave | 国外 | 是 | 否 | 高 | 是(限量) | 是 | 中 | 很高 |
Metaso | 国内 | 否 | 是 | 中 | 是 | 否 | 慢(AI总结) | 低 |
Bocha | 国内 | 否 | 否 | 高 | 否 | 是 | 极快 | 低 |
安装和使用
1. 环境要求
- Python 3.10+
- uv 0.24.0+
- node.js v20.15.0
- cursor >=0.45.10(低于该版本mcp server配置老是连不上)
- 科学上网(仅使用Brave Search需要)
1.1 安装浏览器驱动(仅Metaso需要)
pip install playwright>=1.35.0
playwright install chromium
2. 下载代码
git clone https://github.com/fengin/search-server.git
3. 启用你要的搜索引擎
打开项目根目录,修改server.py
中以下代码选择启用类型:
SEARCH_ENGINE = os.getenv("SEARCH_ENGINE", "bocha")
支持的值有 brave
、metaso
、bocha
,也可以通过环境变量SEARCH_ENGINE
配置。
4. 配置对应的搜索模块
三个模块目录下各有一个config.py
文件:
src/search/proxy/brave
src/search/proxy/metaso
src/search/proxy/bocha
根据选择修改对应的配置文件:
4.1 Brave Search配置
BRAVE_API_KEY = os.getenv("BRAVE_API_KEY")
if not BRAVE_API_KEY:
BRAVE_API_KEY = "你申请的 brave_api_key"
API KEY申请地址: https://api-dashboard.search.brave.com/login
申请门槛较高,要求:
- 魔法(使用时也需要)
- 邮箱验证
- 信用卡(可用虚拟卡)
4.2 秘塔(Metaso)配置
METASO_UID = os.getenv("METASO_UID")
METASO_SID = os.getenv("METASO_SID")
if not METASO_UID or not METASO_SID:
METASO_UID = "你获取的 metaso_uid"
METASO_SID = "你获取的 metaso_sid"
uid和sid获取方式:
登录秘塔AI搜索账号后,打开开发者工具,从Cookies中找到uid
和sid
。
多账号接入提示:
秘塔可能限制总搜索次数,建议使用多个账号的uid-sid并做IP轮换。
4.3 博查(Bocha)配置
BOCHA_API_KEY = os.getenv("BOCHA_API_KEY", "")
if not BOCHA_API_KEY:
BOCHA_API_KEY = "你申请的 bocha_api_key"
注册申请地址:https://open.bochaai.com/
调用按次数收费,质量较好,作者提供少量免费试用码,需联系微信。
5. AI工具配置
5.1 Cursor配置
- name: search
- type: cmd
- command: uv --directory D:\code\search-server run search
其中“D:\code\search-server”是你下载代码的目录。
5.2 Claude Desktop配置
编辑Claude Desktop配置文件,增加以下内容:
{
"mcpServers": {
"search": {
"command": "uv",
"args": [
"--directory",
"D:\\code\\search-server",
"run",
"search"
],
"env": {
"BRAVE_API_KEY": "你申请的API KEY"
}
}
}
}
环境变量根据需要配置,修改代码后可不配置。
注意: Cursor会弹出黑窗口,请勿关闭,此为MCP Server进程。
Claude Desktop配置后需重启应用才能生效。
5.4 问题排查
如果Cursor中MCP Servers配置后显示红点或工具不可用:
- 确认环境准备正确,满足版本要求。
- 在正确的命令行环境(通常是Windows cmd)运行命令验证:
uv --directory D:\code\search-server run search
- 确认路径和命令配置正确。
- 不要关闭弹出的黑窗口,需要重启Cursor。
- 确保Cursor版本不太旧。
- 如果运行时报错找不到chromium,请安装Playwright浏览器驱动(见1.1)。
6. 使用说明
在Claude Desktop或者Cursor中正常工作即可,必要时会自动调用搜索接口获取内容。
- 配置好工具后,Claude Desktop/ Cursor工具列表中会识别到该工具。
- 请求时会自动调用搜索引擎获取内容。
- 在Cursor必须启用composer的agent模式且执行工具调用。
技术内幕
项目结构
search/
├── __init__.py
├── server.py # MCP服务器实现
└── proxy/ # 搜索引擎代理
├── brave/ # Brave搜索模块
│ ├── __init__.py
│ ├── client.py # 核心客户端实现
│ ├── config.py # 配置和速率限制
│ └── exceptions.py # 异常定义
├── metaso/ # Metaso搜索模块
│ ├── __init__.py
│ ├── client.py # 核心客户端实现
│ ├── config.py # 配置和速率限制
│ └── exceptions.py # 异常定义
├── bocha/ # 博查搜索模块
│ ├── __init__.py
│ ├── client.py # 核心客户端实现
│ ├── config.py # 配置和速率限制
│ └── exceptions.py # 异常定义
├── brave_search.py # Brave MCP工具实现
├── metaso_search.py # Metaso MCP工具实现
└── bocha_search.py # 博查搜索MCP工具实现
接口参数
Brave Search引擎
-
search
执行网络搜索,支持分页和过滤
输入参数:query
(string): 搜索关键词count
(number, 可选): 每页结果数量(最大20)offset
(number, 可选): 分页偏移量(最大9)
-
location_search
搜索地理位置相关信息(商家、餐厅等)
输入参数:query
(string): 位置搜索关键词count
(number, 可选): 结果数量(最大20)
无相关结果时自动切换网络搜索
Metaso搜索引擎
-
search
执行网络搜索,支持多种模式
输入参数:query
(string): 搜索关键词mode
(string, 可选): 搜索模式concise
: 简洁模式,回答简短精炼detail
: 深入模式,回答详细全面(默认)research
: 研究模式,回答深度分析(暂不支持)
-
scholar_search
执行学术搜索,专门用于查找学术资源
输入参数同search。
博查搜索引擎
- search
执行网络搜索,支持时间范围过滤和详细摘要
输入参数:query
(string): 搜索关键词count
(number, 可选): 结果数量(1-10,默认10)page
(number, 可选): 页码,从1开始freshness
(string, 可选): 时间范围noLimit
: 不限时间(默认)oneDay
: 一天内oneWeek
: 一周内oneMonth
: 一月内oneYear
: 一年内
summary
(boolean, 可选): 是否显示详细摘要,默认false
返回内容包括搜索统计信息、网页搜索结果及相关图片信息。