搜索服务端
搜索MCP服务器能够通过Brave Search API实现高并发和异步请求,从而在Claude Desktop和Cursor等工具中无缝集成网络和本地搜索功能。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"search": {
"args": [
"--directory",
"D:\\code\\search-server",
"run",
"search"
],
"command": "uv",
"env": {
"BRAVE_API_KEY": "你申请的API KEY"
}
}
}
}
该服务需要配置环境变量:BOCHA_API_KEY、BRAVE_API_KEY、METASO_SID、METASO_UID、SEARCH_ENGINE
可用工具 (1 个)
该服务在 MCP 协议中暴露的工具,AI 可按需调用
search 5 个参数 需填 1 项
执行网页搜索,从全网搜索任何网页信息和网页链接。结果准确、摘要完整,更适合AI使用。支持以下特性: - 时间范围过滤 - 显示详细摘要 - 分页获取 每次请求最多返回10个结果。(当前使用博查搜索API实现)
必填参数:query
服务介绍
搜索 MCP 服务器

一个基于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需要)
# 安装Playwright框架
pip install playwright>=1.35.0
# 安装浏览器驱动,仅安装chromium
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_ENGIN
4. 配置对应的搜索模块
以下三个模块目录下都对应有一个config.py文件:
- src\search\proxy\brave
- src\search\proxy\metaso
- src\search\proxy\bocha
根据你的选择,修改对应的config.py文件配置
4.1 brave search配置
# 检查API密钥
BRAVE_API_KEY = os.getenv("BRAVE_API_KEY")
if not BRAVE_API_KEY:
BRAVE_API_KEY = "你申请的 brave_api_key"
在Claude Desktop里面使用的话,也可以在Claude Desktop里配置通过环境变量传这个参数,但是Cursor目前不支持环境变量,只能在这文件里修改
API KEY 申请地址:Brave Search - API
申请门槛比较高,要求:
- 魔法(使用时也需要)
- 邮箱验证
- 信用卡(可以用虚拟的:https://cardgenerator.org/)
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"
同样Claude Desktop使用可以通过 MCP Servers配置里环境变量;
uid和sid获取方式:
进入秘塔AI搜索,登录账号(建议登录账号,否则可能遭遇奇怪的限制),然后F12打开开发者工具,从Application > Cookies中找到uid和sid的值。

多账号接入
注意:目前怀疑秘塔对IP地址的总搜索次数有限制,建议加入IP轮换
你可以通过提供多个账号的uid-sid并使用,修改下相关的使用代码,每次请求服务会从中挑选一个,本人后续再考虑。
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配置
找到配置文件
方法一
# widnows
C:\Users\{用户}\AppData\Roaming\Claude\claude_desktop_config.json
# mac/linux 应该在用户家目录下找
方法二
打开Claude Desktop应用进入查看:
Claude Desktop—>菜单—>Settings—>Developer—>Edit Config
编辑增加以下MCP Server:
{
"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里面配置完,还是显示状态红点,Tools Not Found,使用时也不会去调用,这是因为根本没配置好。
大部分可能出现的情况是:
-
环境未准备好,包括所需的软件及其版本要求,请参见环境章节。
-
准备的环境不正确,例如在Windows系统中存在cmd终端、powershell终端,还有可能安装了gitbash终端。请确保你是在cmd终端(通常是这个)中检查环境,并直接运行
uv --directory D:\code\search-server run search命令。 -
配置路径或命令不正确,可以在终端中运行以下命令查看:
uv --directory D:\code\search-server run search -
如果关闭了黑色窗口,则需要重新启动Cursor。
-
Cursor版本过旧。
-
运行时报以下错误,原因是没有安装chromium,解决办法请参考环境准备1.1章节。
错误:搜索执行错误:BrowserType.launch persistent context:Executable doesn't exist atC:\Users\fengi\AppDatalLocal\ms-playwright\chromium headless shell-1155\chrome-winlheadless shell.exe
6. 使用
在你的Claude Desktop 或者 Cursor 中直接进行日常工作即可,在必要时它会自动调用搜索接口获取内容,比如,当你需要整理关于2025年技术发展方向的信息作为软件开发参考资料时,它就会自动调用搜索工具来获取网络信息:
- 配置好工具后,它就知道可以使用该工具了。
- 根据你的需求,它会自动分析并判断是否需要用到搜索工具。
- 根据具体需求提取关键词,并调用搜索工具。
- 根据搜索返回的内容,组织成你需要的结果。
需要注意的是,在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
- 执行学术搜索,专门用于查找学术资源
- 输入参数:
query(string): 学术搜索关键词mode(string, 可选): 搜索模式,同上
博查搜索引擎
- search
- 执行网络搜索,支持时间范围过滤和详细摘要
- 输入参数:
query(string): 搜索关键词count(number, 可选): 结果数量(1-10,默认10)page(number, 可选): 页码,从1开始freshness(string, 可选): 时间范围noLimit: 不限时间(默认)oneDay: 一天内oneWeek: 一周内oneMonth: 一月内oneYear: 一年内
summary(boolean, 可选): 是否显示详细摘要,默认为false
- 返回内容:
- 搜索统计信息(总结果数、当前页/总页数、本页结果数)
- 网页搜索结果(标题、URL、来源、摘要、发布时间)
- 相关图片信息(尺寸、来源、URL)