Back to MCP directory
publicPublicdnsLocal runtime

mcp-duckduckresearch

一个结合DuckDuckGo搜索、网页内容提取和截图功能的MCP服务,支持程序化访问网络内容。

article

README

🚀 MCP 鸭鸭研究者

MCP 鸭鸭研究者是一个结合了 DuckDuckGo 搜索功能、网页内容提取和截图功能的 MCP(模型上下文协议)服务器,它成功弥合了信息检索与程序化访问网络内容之间的差距,为用户提供便捷的网络信息获取途径。

✨ 主要特性

  • 🔍 DuckDuckGo 搜索:借助 DuckDuckGo 搜索引擎开展网络搜索。
  • 📄 内容提取:能够访问网页,并将网页内容提取为 Markdown 格式。
  • 📸 截图捕获:可拍摄网页截图,且自动优化尺寸。
  • 强大的错误处理:内置防机器人检测和内容验证保护机制。
  • 🔒 安全搜索选项:具备可配置的安全搜索级别,用于进行适当的内容过滤。

📦 安装指南

# 克隆仓库
git clone https://github.com/yourusername/mcp-duckduckresearch.git
cd mcp-duckduckresearch

# 安装依赖
npm install

# 构建项目
npm run build

💻 使用示例

Cline的安装配置

  1. 首先使用上述步骤构建项目。
  2. 在 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 代码中可用:

基础用法

1. search_duckduckgo

使用 DuckDuckGo 搜索网络。在 Roo 代码中的示例用法:

<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 代码中的完整示例工作流程

以下是搜索信息并访问结果的完整示例:

  1. 首先进行搜索:
<use_mcp_tool>
<server_name>duckduckmcp</server_name>
<tool_name>search_duckduckgo</tool_name>
<arguments>
{
  "query": "人工智能",
  "options": {
    "region": "zh-cn",
    "safeSearch": "MODERATE",
    "numResults": 5
  }
}
</arguments>
</use_mcp_tool>
  1. 访问搜索结果中的某个网页:
<use_mcp_tool>
<server_name>duckduckmcp</server_name>
<tool_name>visit_page</tool_name>
<arguments>
{
  "url": "https://example.com",
  "takeScreenshot": true
}
</arguments>
</use_mcp_tool>

📚 详细文档

项目使用 Vitest 进行测试,测试分为以下几类:

  • 单元测试:对单个组件和函数进行测试。
  • 集成测试:测试完整的操作流程。
  • 测试覆盖率:目标是达到 >80% 的覆盖率。

运行测试:

# 运行所有测试
npm test

# 带有覆盖率的测试
npm run test:coverage

🤝 贡献指南

  1. 叉克隆仓库。
  2. 创建功能分支(git checkout -b feature/amazing-feature)。
  3. 提交更改(git commit -m '添加一些精彩的特性')。
  4. 推送到分支(git push origin feature/amazing-feature)。
  5. 打开 Pull Request。

📄 许可证

此项目根据 MIT 许可证授权,有关详细信息,请参阅 LICENSE 文件。

🌟 贡献者

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client