S
Searcher
by @QwQzy
一个基于 Model Context Protocol(MCP) 的搜索聚合项目,包含 Bing 中文搜索与 Google 搜索两个子服务,并提供统一的 MCP Server 启动入口与命令行 Client,用于调试与集成。
Created 12/6/2025
Updated 7 days ago
README
Repository documentation and setup instructions
🧭 Searcher MCP 集成项目
(Bing / Google 搜索工具 + MCP Server + 客户端)
一个基于 Model Context Protocol(MCP) 的搜索聚合项目,包含 Bing 中文搜索与 Google 搜索两个子服务,并提供统一的 MCP Server 启动入口与命令行 Client,用于调试与集成。
项目采用:
- Python 3.12
- Playwright(无头浏览器抓取)
- LangChain MCP Adapter(客户端)
- Pydantic(结构化返回)
- MCP Tool 规范
- 模块化结构(方便新增搜索源)
📁 项目结构
searcher/
│
├── bing/
│ └── server.py # Bing 中文搜索 MCP 服务
│
├── google/
│ └── server.py # Google 搜索 MCP 服务
│
├── client.py # 命令行调试客户端(langchain-mcp-adapter)
│
└── main.py # 启动 MCP server 的总入口
🚀 功能概览
✅ 搜索列表(Search)
提供搜索接口:
- 搜索关键词
- 返回标准化的结果结构
- 支持
include_raw=True返回页面所有模块 - 支持
include_raw=False返回真正 organic 搜索结果
返回结构:
BingSearchResult
query: str
answers: list[BingSearchResultItem]
ads: list[BingSearchResultItem]
✅ 搜索详情(Detail)
进入搜索结果详情页后抽取:
- title(页面标题)
- description(meta description)
- content(正文内容)
正文抽取逻辑:
- 优先 article / content 容器
- fallback → body
- 最后 fallback → page.text_content()
✅ MCP Server
每个搜索引擎一个 server:
- Bing:
bing/server.py - Google:
google/server.py
统一由:
main.py
启动多个 MCP 子服务。
✅ 命令行 Client
用于调试与人工测试:
python client.py
功能:
- 自动连接 MCP server
- 展示可用工具
- 输入工具名称 → 调用工具
- 查看返回结果
🛠️ 安装依赖
pip install -r requirements.txt
Playwright 浏览器:
playwright install chromium
▶️ 启动 MCP 服务
启动所有搜索服务:
python main.py
你会看到类似:
🚀 MCP server started
🔧 Tools:
- bing_cn_search
- bing_cn_detail
- google_search
- google_detail
🧪 使用 Client(调试)
python client.py
输出:
🚀 已连接 searcher MCP server
🔧 可用工具:
- bing_cn_search → Bing 搜索工具
- bing_cn_detail → Bing 搜索详情
- google_search → Google 搜索工具
- google_detail → Google 详情
输入工具名即可:
bing_cn_search
然后按提示输入参数(JSON 或者命令行)。
📌 示例:调用 Bing 搜索
输入:
bing_cn_search
返回示例:
{
"query": "OpenAI",
"answers": [
{
"title": "OpenAI 官网",
"link": "https://openai.com",
"summary": "OpenAI 是美国人工智能研究公司..."
}
],
"ads": []
}
📌 示例:详情页抓取
bing_cn_detail
返回:
{
"url": "https://openai.com",
"title": "OpenAI",
"description": "OpenAI 是美国人工智能研究公司...",
"content": "OpenAI 成立于 2015 年 ...(正文全文)"
}
✅ 可扩展性
新增搜索引擎非常容易:
- 新建目录:
duckduckgo/server.py - 定义工具
- 在 main 中注册
- client 会自动发现
无需修改其他模块。
📘 开发指南
新增工具
@bing_cn_mcp.tool("bing_cn_search", description="Bing 搜索工具")
async def bing_cn_search(params: BingSearchParams) -> BingSearchResult:
...
返回模型统一用 Pydantic
class BingSearchResult(BaseModel):
query: str
answers: list[BingSearchResultItem]
ads: list[BingSearchResultItem]
保证爬虫稳定性
- 必须滚动页面
- 必须 try/except
- 必须 fallback
- 必须结构化
📚 License
MIT License
Quick Setup
Installation guide for this server
Install Package (if required)
uvx searcher
Cursor configuration (mcp.json)
{
"mcpServers": {
"qwqzy-searcher": {
"command": "uvx",
"args": [
"searcher"
]
}
}
}