{"id":"5adf2bc1-8ea1-4548-96e6-b44aaff89115","slug":"fengin-search-server","kind":"mcp","name":"search-server","summary":"一个基于MCP协议的搜索服务实现，提供网络搜索和本地搜索功能，Cursor和Claude Desktop能与之无缝集成。","owner":"fengin","repoUrl":"https://github.com/fengin/search-server","license":"MIT","licenseTier":"permissive","trust":"community","stars":78,"match":null,"fewStars":false,"format":"mcp","createdAt":"2025-02-11T06:23:30.000Z","addedAt":"2026-10-14T05:59:03.185Z","logoUrl":"https://avatars.githubusercontent.com/u/49424247?u=81a977c7e67f51cf117f0c6d9ac3b5d9e896e89e&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["search","cloud-infra"],"tags":[],"runtime":"python","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-18T01:52:50.631Z","sample":false,"url":"https://conduits.dev/tools/fengin-search-server","language":"Python","transports":["stdio"],"install":{"pypi":"search-server"},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# Search MCP Server\n\n![image](./images/logo.png)\n\n一个基于MCP协议的搜索服务实现，提供多种搜索引擎支持，Cursor和Claude Desktop能与之无缝集成。\n\n使用Python开发，支持异步处理和高并发请求，目前支持三种搜索引擎选择：\n\n- Brave Search ：国外一家专业提供搜索接口服务产品\n\n- 秘塔（Metaso）搜索：秘塔AI搜索的逆向实现接口，非官方接口\n\n- 博查（bocha）搜索：国内Search API市场占有率最高的搜索API产品\n\n更多MCP知识，见AI全书([ 一文看懂什么是MCP(大模型上下文)？用来干什么的？怎么用它？](https://aibook.ren/archives/mcp-course))\n\n**作者**： 凌封（微信fengin）\n\n**网址**：[https://aibook.ren]()（AI全书）\n\n## 使用示例\n\n![image](./images/demo.png)\n\n## 功能特点\n\n- **多搜索引擎支持**: \n  - Brave Search: 提供网络搜索和位置搜索\n  - Metaso搜索: 提供网络搜索和学术搜索，支持简洁和深入两种模式\n  - 博查搜索: 提供网络搜索，支持时间范围过滤、详细摘要和图片搜索\n- **适用场景**: Claude Desktop或者Cursor无缝集成使用，大大扩展工具的内容获取能力\n- **模块化设计**: 每个搜索引擎都是独立的模块，也可以单独拷出去其他地方使用\n\n## 三种搜索的选择\n\n<mark>运行时只能生效一种搜索引擎</mark>，为了方便大家选择配置哪个上线，我列了下大致的对比：\n\n| 搜索引擎   | 国内/外 | 需魔法 | 自带总结 | 质量  | 免费    | 官方  | 速度      | 注册门槛 |\n| ------ | ---- | --- | ---- | --- | ----- | --- | ------- | ---- |\n| Brave  | 国外   | 是   | 否    | 高   | 是(限量) | 是   | 中       | 很高   |\n| Metaso | 国内   | 否   | 是    | 中   | 是     | 否   | 慢(AI总结) | 低    |\n| Bocha  | 国内   | 否   | 否    | 高   | 否     | 是   | 极快      | 低    |\n\n## 安装和使用\n\n### 1. 环境要求\n\n- Python 3.10+\n- uv 0.24.0+\n- node.js v20.15.0\n- cursor >=0.45.10 (低于该版本mcp server配置老是连不上)\n- 科学上网（仅使用Brave Search需要）\n\n#### 1.1 安装浏览器驱动(仅Metaso需要)\n\n```\n# 安装Playwright框架\npip install playwright>=1.35.0\n# 安装浏览器驱动,仅安装chromium\nplaywright install chromium\n```\n\n\n\n### 2.下载代码\n\n```bash\ngit clone https://github.com/fengin/search-server.git\n```\n\n### 3. 启用你要的搜索引擎\n\n打开项目根目录，修改server.py以下代码选择启用类型：\n\n```python\n# 搜索引擎配置\nSEARCH_ENGINE = os.getenv(\"SEARCH_ENGINE\", \"bocha\")\n```\n\n其中值分别对应有brave、metaso、bocha，也可以通过配置环境变量SEARCH_ENGIN\n\n### 4\\. 配置对应的搜索模块\n\n以下三个模块目录下都对应有一个config.py文件：\n\n- src\\search\\proxy\\brave\n\n- src\\search\\proxy\\metaso\n\n- src\\search\\proxy\\bocha\n\n根据你的选择，修改对应的config.py文件配置\n\n#### 4.1 brave search配置\n\n```python\n# 检查API密钥\nBRAVE_API_KEY = os.getenv(\"BRAVE_API_KEY\")\nif not BRAVE_API_KEY:\n    BRAVE_API_KEY = \"你申请的 brave_api_key\"\n```\n\n在Claude Desktop里面使用的话，也可以在Claude Desktop里配置通过环境变量传这个参数，但是Cursor目前不支持环境变量，只能在这文件里修改\n\nAPI KEY 申请地址：[Brave Search - API](https://api-dashboard.search.brave.com/login)\n\n<mark>申请门槛比较高</mark>，要求：\n\n- 魔法（使用时也需要）\n\n- 邮箱验证\n\n- 信用卡（可以用虚拟的：[https://cardgenerator.org/](https://cardgenerator.org/)）\n\n#### 4.2 秘塔(metaso)配置\n\n```python\n# 认证信息\nMETASO_UID = os.getenv(\"METASO_UID\")\nMETASO_SID = os.getenv(\"METASO_SID\")\nif not METASO_UID or not METASO_SID:\n    METASO_UID = \"你获取的 metaso_uid\"\n    METASO_SID = \"你获取的 metaso_sid\"\n```\n\n同样Claude Desktop使用可以通过 MCP Servers配置里环境变量；\n\n**uid和sid获取方式：**\n\n进入秘塔AI搜索，登录账号（<mark>建议登录账号，否则可能遭遇奇怪的限制</mark>），然后F12打开开发者工具，从Application > Cookies中找到`uid`和`sid`的值。\n\n![获取uid-sid](./images/meta-uid-sid.png)\n\n**多账号接入**\n\n<mark>注意：目前怀疑秘塔对IP地址的总搜索次数有限制，建议加入IP轮换</mark>\n\n你可以通过提供多个账号的uid-sid并使用`,`修改下相关的使用代码，每次请求服务会从中挑选一个，本人后续再考虑。\n\n#### 4.3 博查(bocha)配置\n\n```python\nBOCHA_API_KEY = os.getenv(\"BOCHA_API_KEY\", \"\")\nif not BOCHA_API_KEY:\n    BOCHA_API_KEY=\"你申请的 bocha_api_key\"\n```\n\n注册申请地址：https://open.bochaai.com/\n\n调用按次数收费，不便宜，但是搜索质量确实比较好，我这有少量的免费试用码，有需要的微信联系我；\n\n### 5. AI工具配置\n\n#### 5.1 Cursor里配置\n\n![Cursor配置](./images/cursor-mcp-server.png)\n\n- name:  search\n\n- type:  cmd\n\n- command: uv --directory D:\\\\code\\\\search-server run search\n\n其中 “D:\\code\\search-server” 就是你拉下来源代码目录\n\n#### 5.2 Claude Desktop配置\n\n找到配置文件\n\n**方法一**\n\n```\n# widnows\nC:\\Users\\{用户}\\AppData\\Roaming\\Claude\\claude_desktop_config.json\n# mac/linux 应该在用户家目录下找\n```\n\n**方法二**\n\n打开Claude Desktop应用进入查看：\nClaude Desktop—>菜单—>Settings—>Developer—>Edit Config\n\n编辑增加以下MCP Server:\n\n```json\n{\n  \"mcpServers\": {\n    \"search\": {\n            \"command\": \"uv\",\n            \"args\": [\n                \"--directory\",\n                \"D:\\\\code\\\\search-server\",\n                \"run\",\n                \"search\"\n            ],\n            \"env\": {\n                \"BRAVE_API_KEY\": \"你申请的API KEY\"\n            }\n        }\n  }\n}\n```\n\n环境变量看你需要，如果代码改了这就没必要配置了\n\n<mark>Cursor会弹出一个黑窗口，不要关闭，不要关闭</mark>，这是启动的MCP Server进程，目前没办法解决不弹出来。\n\nClaude Desktop配置完一定要重启应用才生效。\n\n#### 5.4 问题排错\n\n配置Cursor后很多人遇到，MCP Servers里面配置完，还是显示状态红点，Tools Not Found，使用时也不会去调用，这是因为根本没配置好。\n\n大部分可能出现的情况是：\n\n1. 环境没准备好，包括需要的软件及版本要求，详见环境章节\n\n2. 准备的环境不对，像windows有cmd终端、powershell终端、还有可能装了gitbash终端，你打开cmd终端（cursor一般是这个）检查下环境，直接运行下uv --directory D:\\code\\search-server run search\n\n3. 配置路径/命令不对，可以打开终端运行命令看下：uv --directory D:\\code\\search-server run search\n\n4. 把黑窗口关闭了，再次开启需要重启Cursor\n\n5. Cursor版本太旧\n\n6. 运行时报以下错，原因是没有安装chromium，解决办法见环境准备1.1章节\n   \n   ```shell\n   错误:搜索执行错误:BrowserType.launch persistent context:Executable doesn't exist atC:\\Users\\fengi\\AppDatalLocal\\ms-playwright\\chromium headless shell-1155\\chrome-winlheadless shell.exe\n   ```\n\n### 6. 使用\n\n<mark>在你的Claude Desktop 或者 Cursor 里直接你正常的工作就行了，必要时它会自动调用搜索接口获取内容</mark>，比如说，你整理下网络上2025年技术发展方向作为软件什么内容，它就会去调用搜索工具获取网络信息：\n\n- 配置好工具后，它的信息里面就知道有这个工具\n\n- 根据你的要求，它自动会分析判断需要用到搜索工具\n\n- 根据需求，提取关键词，调用搜索工具\n\n- 根据搜索返回内容，组织你要的结果\n\n有一点需要注意的，<mark>在Cursor里面，必须启用composer的agent模式工作才会生效</mark>，调用工具时，也需要你点下执行；\n\n## 技术内幕\n\n### 项目结构\n\n```shell\nsearch/\n├── __init__.py\n├── server.py              # MCP服务器实现\n└── proxy/                 # 搜索引擎代理\n    ├── brave/             # Brave搜索模块\n    │   ├── __init__.py\n    │   ├── client.py      # 核心客户端实现\n    │   ├── config.py      # 配置和速率限制\n    │   └── exceptions.py  # 异常定义\n    ├── metaso/            # Metaso搜索模块\n    │   ├── __init__.py\n    │   ├── client.py      # 核心客户端实现\n    │   ├── config.py      # 配置和速率限制\n    │   └── exceptions.py  # 异常定义\n    ├── bocha/             # 博查搜索模块\n    │   ├── __init__.py\n    │   ├── client.py      # 核心客户端实现\n    │   ├── config.py      # 配置和速率限制\n    │   └── exceptions.py  # 异常定义\n    ├── brave_search.py    # Brave MCP工具实现\n    ├── metaso_search.py   # Metaso MCP工具实现\n    └── bocha_search.py    # 博查搜索MCP工具实现\n```\n\n### 接口参数\n\n#### Brave Search引擎\n\n- **search**\n  \n  - 执行网络搜索，支持分页和过滤\n  - 输入参数:\n    - `query` (string): 搜索关键词\n    - `count` (number, 可选): 每页结果数量(最大20)\n    - `offset` (number, 可选): 分页偏移量(最大9)\n\n- **location_search**\n  \n  - 搜索地理位置相关信息（商家、餐厅等）\n  - 输入参数:\n    - `query` (string): 位置搜索关键词\n    - `count` (number, 可选): 结果数量(最大20)\n  - 无相关结果时自动切换到网络搜索\n\n#### Metaso搜索引擎\n\n- **search**\n  \n  - 执行网络搜索，支持多种模式\n  - 输入参数:\n    - `query` (string): 搜索关键词\n    - `mode` (string, 可选): 搜索模式\n      - `concise`: 简洁模式，回答简短精炼\n      - `detail`: 深入模式，回答详细全面（默认）\n      - `research`: 研究模式，回答深度分析（<mark>目前暂不支持，逆向没有成功</mark>）\n\n- **scholar_search**\n  \n  - 执行学术搜索，专门用于查找学术资源\n  - 输入参数:\n    - `query` (string): 学术搜索关键词\n    - `mode` (string, 可选): 搜索模式，同上\n\n#### 博查搜索引擎\n\n- **search**\n  - 执行网络搜索，支持时间范围过滤和详细摘要\n  - 输入参数:\n    - `query` (string): 搜索关键词\n    - `count` (number, 可选): 结果数量(1-10，默认10)\n    - `page` (number, 可选): 页码，从1开始\n    - `freshness` (string, 可选): 时间范围\n      - `noLimit`: 不限时间（默认）\n      - `oneDay`: 一天内\n      - `oneWeek`: 一周内\n      - `oneMonth`: 一月内\n      - `oneYear`: 一年内\n    - `summary` (boolean, 可选): 是否显示详细摘要，默认false\n  - 返回内容:\n    - 搜索统计信息（总结果数、当前页/总页数、本页结果数）\n    - 网页搜索结果（标题、URL、来源、摘要、发布时间）\n    - 相关图片信息（尺寸、来源、URL）\n\n## "}