网络搜索MCP服务器
完全本地化、无API密钥 Web搜索MCP(模型上下文协议)服务器 由多个后端提供商提供支持,包括DuckDuckGo、维基百科和GitHub的公共搜索API。 此服务器通过以下方式公开搜索功能 FastMCP 工具,使其成为LLM代理、自动化系统或本地助理的理想选择。
______________________________________________________________________
✨ 特性
- 不需要API密钥 --使用DuckDuckGo、维基百科和GitHub公共端点。
- 统一搜索API 通过MCP工具:
- web_search –一般网络搜索 - news_search –新闻文章 - image_search –图像搜索 - video_search –视频搜索 - search_wikipedia –维基百科文章 - search_github –GitHub存储库 - get_search_suggestions –自动完成建议
- 本地HTTP MCP服务器 由FastMCP提供
- 通过Python或Docker进行简单部署
______________________________________________________________________
📁 项目结构
├── .env.example # Example .env file
├── .gitignore # git helper
├── Dockerfile # Docker file for local deployment
├── LICENCE # Licence file
├── Makefile # Dev helpers (venv setup, Docker compose, cleanup)
├── README.md # This file
├── __init__.py # Python init file
├── docker-compose.yml # Docker compose file
├── requirements.txt # Python dependencies
├── search_backends.py # Search backend implementations (DuckDuckGo, Wikipedia, GitHub)
└── server.py # MCP server and tool definitions______________________________________________________________________
🚀 入门指南
先决条件
- python 3.10+
- (可选)
make - (可选)Docker+Docker组合
______________________________________________________________________
🔧 安装
选项1:本地Python环境
make init或手动:
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt______________________________________________________________________
▶️ 运行MCP服务器
启动服务器
python server.py默认情况下,它运行在:
HOST: 0.0.0.0
PORT: 9393用环境变量覆盖:
export HOST_ADDRESS=127.0.0.1
export HOST_PORT=8080
python server.py______________________________________________________________________
🐳 使用Docker Compose运行
make dev-compose停止环境:
make dev-down______________________________________________________________________
🧰 MCP工具概述
1. web_search
通用DuckDuckGo网络搜索。
论据:
| 名称 | 类型 | 描述 |
|---|---|---|
| query | str | 搜索查询 |
| max_results | int | 1–50 |
| 区域 | str | 例如。 us-en, wt-wt |
| 安全搜索 | str | strict, moderate, off |
______________________________________________________________________
2. news_search
搜索最近的新闻文章。
额外论据:
time_range–d,w,m,y
______________________________________________________________________
3. image_search
DuckDuckGo图片搜索。
额外参数:
size–小/中/大/壁纸type_image–照片/剪贴画/gif/线条/透明
______________________________________________________________________
4. video_search
DuckDuckGo视频搜索。
额外参数:
duration–短/中/长resolution–高/标准
______________________________________________________________________
5. search_wikipedia
搜索维基百科并检索摘要+网址。
______________________________________________________________________
6. search_github
通过公共API搜索GitHub存储库。 不需要API密钥。
______________________________________________________________________
7. get_search_suggestions
返回DuckDuckGo自动补全建议。
______________________________________________________________________
🧠 搜索后端
所有后端逻辑都在 search_backends.py
后端包括:
ddgs–DuckDuckGo搜索/文本/新闻/图片/视频/建议wikipedia–维基百科API包装- GitHub公共存储库搜索(REST)
所有请求都包含一个自定义的用户代理,以减少限制。
______________________________________________________________________
⚙️ 环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
HOST_PORT | 9393 | 服务器端口 |
HOST_ADDRESS | 0.0.0.0 | 绑定地址 |
例子:
HOST_PORT=8080 HOST_ADDRESS=127.0.0.1 python server.py______________________________________________________________________
🧑💻 发展
初始化本地venv:
make init清洁发展环境:
make clean______________________________________________________________________
🐞 故障排除
我收到DuckDuckGo节流错误
DuckDuckGo有时会限制请求的速率。 尝试:
- 请求频率降低
- 更改IP
- 避免快速重复查询
GitHub返回403
GitHub速率限制未经身份验证的请求。 等待重置或降低频率。
______________________________________________________________________
📜 许可证
麻省理工学院
