Unified Search MCP Server
by cn-hash
README.md
# Unified Search MCP Server
> 🔍 多平台搜索 + 任意网站逆向分析 — 一体化 MCP Server
[](https://python.org)
[](https://modelcontextprotocol.io)
[](LICENSE)
[](#工具列表)
## 这是什么
一个给 AI Agent 用的搜索+逆向工具箱。接入了抖音、小红书、知乎、CSDN 四个平台的搜索,同时提供一套通用的网站分析和 JS 逆向工具,遇到不认识的网站也能快速摸清它的 API 结构和签名机制。
**一句话:让 AI 像一个有经验的爬虫工程师一样工作。**
## 能做什么
### 场景1:搜指定平台
```
"帮我搜抖音上关于风景的视频" → douyin_search("风景")
"小红书上搜美食笔记" → xhs_search("美食")
"知乎上搜Python教程" → zhihu_search("Python教程")
"CSDN上搜Docker部署" → csdn_search("Docker部署")
"四个平台都搜一下AI" → search_all("AI")
```
### 场景2:分析未知网站
```
"这个网站用了什么反爬" → recover_protocol("https://xxx.com")
"帮我看看这个站的API有哪些" → analyze_site("https://xxx.com")
"它的签名参数是怎么生成的" → reverse_signing("https://xxx.com")
"帮我提取页面上的商品列表" → scrape_generic("https://xxx.com", ".product", "text,href,src")
```
### 场景3:JS逆向辅助
```
"这个页面加载了哪些JS" → list_scripts("https://xxx.com")
"在JS里搜一下encrypt关键字" → search_scripts("https://xxx.com", "encrypt")
"把那个签名JS的源码拉下来看看" → get_script_source("https://xxx.com/static/sign.js")
"导出这个API的完整请求详情" → export_request_detail("https://xxx.com", "api")
```
### 场景4:通用搜索
```
"MCP协议是什么" → web_search("MCP协议", engine="bing")
"Python异步编程教程" → web_search("Python异步编程", engine="baidu")
```
## 工具列表(16个)
### 🎯 平台搜索(5个)
| 工具 | 平台 | 说明 |
|------|------|------|
| `douyin_search` | 抖音 | 搜索视频,返回标题/作者/播放URL/点赞/评论/时长/封面 |
| `xhs_search` | 小红书 | 搜索笔记,返回标题/作者/封面/标签/点赞/收藏 |
| `zhihu_search` | 知乎 | 搜索问答,返回标题/作者/赞同数/评论数 |
| `csdn_search` | CSDN | 搜索文章,返回标题/作者/阅读量/点赞 |
| `search_all` | 全部 | 一次调用搜四个平台,按平台分组返回 |
### 🔬 逆向分析(5个)
| 工具 | 说明 |
|------|------|
| `recover_protocol` | 一键协议恢复:识别框架 → 发现API → 检测签名 → 推荐采集方案 |
| `analyze_site` | Hook所有XHR/Fetch请求,列出全部API端点和签名头 |
| `hook_network` | 按指定时长监听网络请求,支持关键词过滤 |
| `reverse_signing` | 分析签名机制(X-s/a_bogus/anti-content等),返回签名格式 |
| `scrape_generic` | CSS选择器通用提取,支持text/href/src/innerHTML等字段 |
### 📜 JS逆向(4个)
*参考 [js-reverse-mcp](https://github.com/zhizhuodemao/js-reverse-mcp) 设计*
| 工具 | 说明 |
|------|------|
| `list_scripts` | 列出页面加载的所有JS文件(URL/大小/加载耗时) |
| `search_scripts` | 在所有JS脚本中搜索关键词,返回匹配位置和上下文 |
| `get_script_source` | 获取指定JS文件的源代码(前50KB) |
| `export_request_detail` | 导出完整请求详情(请求头/响应头/body/response) |
### 🛠 辅助工具(2个)
| 工具 | 说明 |
|------|------|
| `take_screenshot` | 截取页面截图保存到本地 |
| `web_search` | 通用Web搜索(Bing/Google/百度),无需API Key |
## 工作原理
```
AI Agent (Hermes/Claude/Cursor)
↓ MCP协议 (stdio)
Unified Search MCP Server (Python)
↓ subprocess
browser-harness CLI
↓ CDP协议
用户已登录的 Chrome 浏览器
↓ Cookie + JS环境
目标网站 API / DOM
```
核心思路:**让浏览器干活,Python只做调度。**
- 搜索请求在浏览器里发,自动带Cookie,不用处理登录
- 签名由浏览器JS引擎计算,不用逆向(小红书60KB混淆JS?不用管)
- 数据在浏览器里提取精简结果,只传回需要的字段
## 各平台反爬等级
| 平台 | 等级 | 签名机制 | 我们的方案 |
|------|------|----------|----------|
| 抖音 | 🔴 高 | a_bogus + msToken + 瑞数Cookie | DOM提取aweme_id → 详情API |
| 小红书 | 🔴 高 | X-s(60KB混淆JS,每请求唯一) | 浏览器签名代理(拦截API响应) |
| 知乎 | 🟢 低 | 无 | 直接调 /api/v4/search_v3 |
| CSDN | 🟢 低 | 无 | 直接调 /api/v3/search |
| 任意网站 | ❓ | 自动检测 | recover_protocol 一键分析 |
## 安装
### 前置要求
- Python 3.11+
- Chrome 浏览器(已登录目标平台)
- [browser-harness](https://github.com/nousresearch/browser-harness)
### 注册到 Hermes Agent
```bash
hermes mcp add unified-search --command python --args "E:/skill/unified-search-mcp/server.py"
```
注册后新 session 自动加载 16 个工具。
### 其他 MCP 客户端
```json
{
"mcpServers": {
"unified-search": {
"command": "python",
"args": ["/path/to/server.py"]
}
}
}
```
## 项目结构
```
unified-search-MCP-Server/
├── README.md ← 你在看的这个
├── LICENSE MIT 许可证
├── DISCLAIMER.md 免责声明(中英文)
├── requirements.txt Python 依赖
├── server.py MCP Server 主文件(16个工具)
└── refs/
└── ANALYSIS.md 参考项目分析报告
```
## 参考项目
- [js-reverse-mcp](https://github.com/zhizhuodemao/js-reverse-mcp) — AI-native JS逆向MCP,22个工具,断点调试+脚本分析+WebSocket分析
- [search-server](https://github.com/fengin/search-server) — 多搜索引擎MCP,支持Brave/秘塔/博查
## ⚠️ 免责声明
**本项目仅供学习和研究使用。**
- ✅ 允许:个人技术学习、学术研究、已授权的安全测试
- ❌ 禁止:未授权数据采集、绕过付费、侵犯隐私、任何违法行为
使用者必须遵守当地法律法规和目标网站服务条款,一切后果自行承担。
详见 [DISCLAIMER.md](DISCLAIMER.md)
## License
[MIT](LICENSE)
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues