这是一个基于 Model Context Protocol (MCP) 的网页搜索服务器实现,提供网络搜索和内容提取功能。该服务器使用浏览器自动化技术模拟用户搜索行为,避免被搜索引擎检测为爬虫。
服务器提供以下核心工具:
web_search- 执行网络搜索并返回结果
- 输入参数:
query(string): 搜索查询(必需)max_results(int): 返回结果数量(默认:5)
- 返回:格式化的搜索结果,包含标题、URL和内容摘要
- Python 3.10+
- uv(推荐的新一代 Python 包管理工具)
- 或者 Docker
在你的 claude_desktop_config.json 中添加服务器配置:
"mcpServers": {
"web_search": {
"command": "uv",
"args": [
"--directory",
"path/to/local_web_search",
"run",
"local_web_search"
]
}
}"mcpServers": {
"web_search": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"local-web-search"
]
}
}- 安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh- 克隆仓库并进入目录
git clone https://github.com/yourusername/local-web-search.git
cd local-web-search- 安装项目及其依赖
# 安装基本依赖
uv pip install -e .
# 或安装开发依赖
uv pip install -e ".[dev]"- 构建镜像
# 构建 Docker 镜像
docker build -t local-web-search .- 运行容器
# 运行服务器
docker run --rm -i local-web-searchfrom mcp.client import Client
async with Client("web_search") as client:
# 基本搜索
results = await client.web_search("Python教程")
print(results)
# 限制结果数量
results = await client.web_search("Python教程", max_results=3)
print(results)local-web-search/
├── pyproject.toml # 项目配置和依赖管理
├── uv.lock # 依赖版本锁定
├── README.md # 项目文档
├── Dockerfile # Docker 构建文件
└── src/ # 源代码目录
└── local_web_search/
├── __init__.py
├── mcp_server.py # MCP 服务器实现
└── local_web_search.py # 核心搜索功能
使用 uv 管理开发工具:
# 全局安装工具
uv tool install ruff black
# 项目级安装
uv add --group dev ruff black pytest
# 一次性运行
uvx black src/- MCP:用于构建命令行工具服务
- Playwright:浏览器自动化
- Readability:网页内容提取
- BeautifulSoup:HTML解析
- html2text:HTML转Markdown
- UV:依赖管理
- 仅供学习和研究目的使用
- 遵守搜索引擎服务条款
- 合理设置并发数和请求间隔
MIT