关于 MCP DuckDuckResearch
MCP DuckDuckResearch 是一个面向需要网页检索与内容采集的 MCP 服务,结合 DuckDuckGo 搜索、网页转 Markdown 和截图功能。它还提供安全搜索选项,并处理内容校验及反爬限制。
主要功能
- 01使用 DuckDuckGo 搜索网页
- 02提取网页内容并转换为 Markdown
- 03截取网页并优化图像尺寸
- 04配置安全搜索级别
- 05处理反爬检测与内容校验
适用场景
- 01搜索主题并获取网页结果
- 02将网页内容提取为 Markdown
- 03为网页采集流程保存截图
MCP 相关
该 MCP 服务向客户端提供 DuckDuckGo 搜索、网页内容提取和截图工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP DuckDuckResearch
一个 MCP(Model Context Protocol)服务,结合了 DuckDuckGo 搜索功能、网页内容提取和截图功能。该服务弥合了搜索信息与以编程方式访问网页内容之间的差距。
功能
- 🔍 DuckDuckGo 搜索:使用 DuckDuckGo 搜索引擎搜索网络
- 📄 内容提取:访问网页并将其内容提取为 Markdown
- 📸 截图:为网页截图,并自动优化尺寸
- ⚡ 可靠的错误处理:内置防止机器人检测和内容验证的机制
- 🔒 安全搜索选项:可配置安全搜索级别,以筛选合适的内容
安装
# Clone the repository
git clone https://github.com/yourusername/mcp-duckduckresearch.git
cd mcp-duckduckresearch
# Install dependencies
npm install
# Build the project
npm run build
在 Cline 和 Roo Code 中使用
在 Cline 中安装
-
首先按照上述安装步骤构建项目
-
在 Cline 设置中配置 MCP 服务:
编辑 Cline MCP 设置文件:
%APPDATA%\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\cline_mcp_settings.json添加以下配置:
{ "mcpServers": { "duckduckmcp": { "command": "node", "args": ["path/to/mcp-duckduckresearch/build/index.js"], "disabled": false, "alwaysAllow": [] } } }将
path/to/mcp-duckduckresearch替换为克隆此代码库的实际路径。
可用工具
配置完成后,Roo Code 中将提供以下工具:
1. search_duckduckgo
使用 DuckDuckGo 搜索网络。在 Roo Code 中的用法示例:
<use_mcp_tool>
<server_name>duckduckmcp</server_name>
<tool_name>search_duckduckgo</tool_name>
<arguments>
{
"query": "typescript best practices",
"options": {
"region": "zh-cn",
"safeSearch": "MODERATE",
"numResults": 10
}
}
</arguments>
</use_mcp_tool>
2. visit_page
访问网页并将其内容提取为 Markdown:
<use_mcp_tool>
<server_name>duckduckmcp</server_name>
<tool_name>visit_page</tool_name>
<arguments>
{
"url": "https://example.com",
"takeScreenshot": false
}
</arguments>
</use_mcp_tool>
3. take_screenshot
为当前加载的页面截图:
<use_mcp_tool>
<server_name>duckduckmcp</server_name>
<tool_name>take_screenshot</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>
Roo Code 中的工作流示例
以下是搜索信息并访问搜索结果的完整示例:
- 首先,搜索信息:
<use_mcp_tool>
<server_name>duckduckmcp</server_name>
<tool_name>search_duckduckgo</tool_name>
<arguments>
{
"query": "TypeScript best practices",
"options": {
"numResults": 10,
"safeSearch": "MODERATE"
}
}
</arguments>
</use_mcp_tool>
- 然后,访问其中一条搜索结果:
<use_mcp_tool>
<server_name>duckduckmcp</server_name>
<tool_name>visit_page</tool_name>
<arguments>
{
"url": "https://example.com/typescript-practices",
"takeScreenshot": true
}
</arguments>
</use_mcp_tool>
服务会自动处理:
- 浏览器初始化和清理
- 内容提取并转换为 Markdown
- 截图和优化
- 错误处理和重试
开发
前置条件
- Node.js(v18 或更高版本)
- npm
- 可运行 Chrome/Chromium 的系统(用于 Playwright)
设置开发环境
# Install dependencies
npm install
# Start in development mode
npm run dev
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
# Format code
npm run format
# Lint code
npm run lint
项目结构
mcp-duckduckresearch/
├── src/
│ ├── browser.ts # Browser management and content extraction
│ ├── search.ts # DuckDuckGo search implementation
│ ├── types.ts # Type definitions and schemas
│ ├── utils.ts # Utility functions
│ └── index.ts # Main server implementation
├── tests/
│ ├── unit/ # Unit tests
│ └── integration/ # Integration tests
└── package.json # Project configuration
测试
项目使用 Vitest 进行测试。测试分为:
- 单元测试:测试单个组件和函数
- 集成测试:测试完整工作流
- 测试覆盖率:目标为 >80% 的覆盖率
运行测试:
# Run all tests
npm test
# Run with coverage
npm run test:coverage
贡献
- Fork 此代码库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交更改(
git commit -m 'Add some amazing feature') - 推送到分支(
git push origin feature/amazing-feature) - 创建 Pull Request
许可证
本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。
致谢
- duck-duck-scrape - DuckDuckGo 搜索实现
- Playwright - 浏览器自动化和截图
- Model Context Protocol - MCP 规范和 SDK
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。