MCP DuckDuckResearch

MCP DuckDuckResearch

带有 DuckDuckSearch、web2md 和 web2photo 的 MCP 服务器

bkataru-workshop

研究与数据
访问服务器

README

MCP DuckDuckResearch

一个 MCP (模型上下文协议) 服务器,它结合了 DuckDuckGo 搜索功能、网页内容提取和截图功能。此服务器弥合了搜索信息和以编程方式访问 Web 内容之间的差距。

功能

  • 🔍 DuckDuckGo 搜索: 使用 DuckDuckGo 搜索引擎搜索网络
  • 📄 内容提取: 访问网页并将内容提取为 Markdown
  • 📸 截图捕获: 拍摄网页截图,并自动优化尺寸
  • 强大的错误处理: 内置针对机器人检测和内容验证的保护
  • 🔒 安全搜索选项: 可配置的安全搜索级别,用于适当的内容过滤

安装

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

# 安装依赖
npm install

# 构建项目
npm run build

与 Cline 和 Roo Code 一起使用

Cline 安装

  1. 首先使用上面的安装步骤构建项目

  2. 在您的 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 中的示例工作流程

这是一个搜索信息并访问结果的完整示例:

  1. 首先,搜索信息:
<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>
  1. 然后,访问其中一个结果:
<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)

设置开发环境

# 安装依赖
npm install

# 在开发模式下启动
npm run dev

# 运行测试
npm test

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

# 格式化代码
npm run format

# 检查代码风格
npm run lint

项目结构

mcp-duckduckresearch/
├── src/
│   ├── browser.ts     # 浏览器管理和内容提取
│   ├── search.ts      # DuckDuckGo 搜索实现
│   ├── types.ts       # 类型定义和模式
│   ├── utils.ts       # 实用函数
│   └── index.ts       # 主服务器实现
├── tests/
│   ├── unit/          # 单元测试
│   └── integration/   # 集成测试
└── package.json       # 项目配置

测试

该项目使用 Vitest 进行测试。测试分为:

  • 单元测试: 测试单个组件和函数
  • 集成测试: 测试完整的工作流程
  • 测试覆盖率: 目标是 >80% 的覆盖率

运行测试:

# 运行所有测试
npm test

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

贡献

  1. Fork 仓库
  2. 创建您的功能分支 (git checkout -b feature/amazing-feature)
  3. 提交您的更改 (git commit -m 'Add some amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 打开一个 Pull Request

许可证

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

鸣谢

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python