Token导航 LogoToken导航TokenDH.com
Chatmooc Duckduckgo MCP Server logo
搜索检索stdio官方级别未说明来源级核验

Chatmooc Duckduckgo MCP Server

MCP Server

基于Model Context Protocol (MCP)的DuckDuckGo搜索服务,提供网页搜索与网页内容抓取功能,适用于Claude Desktop、Claude Code或其他MCP客户端。

工具数

2

提示词数

0

GitHub Stars

1

资源数

0
搜索PythonClaudeClaude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Leonx01

提供方

Leonx01

最后核验

2026/5/17 20:20

运行时

Docker

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

docker run -d -p 8000:8000 \

详细介绍

ChatMooc DuckDuckGo Search MCP Server

](https://pypi.org/project/duckduckgo-mcp-server/)

项目简介

这是一个基于 Model Context Protocol (MCP) 的 DuckDuckGo 搜索服务,提供 网页搜索网页内容抓取 两个工具,并内置速率限制与安全过滤配置。项目使用 FastMCP 框架构建,适用于 Claude Desktop、Claude Code 或其他 MCP 客户端。

本仓库基于 nickclyde/duckduckgo-mcp-server 派生,增加了 LangGraph Client 适配以及 HTTP 传输支持的示例与说明。

Docker 部署(推荐)

docker compose up --build -d

# 或使用原生 Docker
docker build -t duckduckgo-mcp-server .
docker run -d -p 8000:8000 \
  -e DDG_SAFE_SEARCH=MODERATE \
  -e DDG_REGION= \
  duckduckgo-mcp-server

HTTP 端点:http://localhost:8000/mcp

功能特性

  • DuckDuckGo 网页搜索(解析 HTML 结果)
  • 网页正文抓取(移除脚本/样式/导航等非正文元素)
  • 速率限制:搜索 30 次/分钟,抓取 20 次/分钟
  • SafeSearch 与地区/语言配置
  • 适配 LangGraph 客户端(支持 stdio 与 HTTP 连接)

架构概览

核心实现位于 src/duckduckgo_mcp_server/server.py

  • DuckDuckGoSearcher:向 https://html.duckduckgo.com/html 发送 POST 请求并解析结果
  • WebContentFetcher:抓取网页并提取纯文本内容(默认最大 8000 字符)
  • RateLimiter:滑动窗口限流

对外暴露两个 MCP 工具:searchfetch_content

快速开始

uvx duckduckgo-mcp-server

安装

uv pip install duckduckgo-mcp-server

使用方式

Claude Desktop

配置文件路径:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json

基础配置:

{
    "mcpServers": {
        "ddg-search": {
            "command": "uvx",
            "args": ["duckduckgo-mcp-server"]
        }
    }
}

带 SafeSearch 和地区配置:

{
    "mcpServers": {
        "ddg-search": {
            "command": "uvx",
            "args": ["duckduckgo-mcp-server"],
            "env": {
                "DDG_SAFE_SEARCH": "STRICT",
                "DDG_REGION": "cn-zh"
            }
        }
    }
}

修改配置后请重启 Claude Desktop。

Claude Code

claude mcp add ddg-search uvx duckduckgo-mcp-server

传输方式(Transport)

默认使用 stdio。如需 HTTP 传输,可选择 SSE 或 Streamable HTTP。

# SSE
uvx duckduckgo-mcp-server --transport sse

# Streamable HTTP(适合 Docker/远程)
uvx duckduckgo-mcp-server --transport streamable-http --host 0.0.0.0 --port 8000

HTTP 端点为:http://localhost:8000/mcp

LangGraph Client 适配

通过 langchain-mcp-adaptersMultiServerMCPClient 即可接入 LangGraph。

注意命名差异:

  • 服务端 CLI 传输参数:--transport streamable-http
  • 客户端 transport 键:streamable_http

stdio 示例

from langchain_mcp_adapters.client import MultiServerMCPClient

client = MultiServerMCPClient(
    connections={
        "duckduckgo": {
            "command": "uvx",
            "args": ["duckduckgo-mcp-server"],
            "transport": "stdio",
        }
    }
)

HTTP 示例

from langchain_mcp_adapters.client import MultiServerMCPClient

client = MultiServerMCPClient(
    connections={
        "duckduckgo": {
            "transport": "streamable_http",
            "url": "http://localhost:8000/mcp",
        }
    }
)

可参考示例文件:

  • tests/example_langgraph_direct.py
  • tests/example_langgraph_http.py
  • tests/test_langgraph_integration.py

MCP 工具说明

1) search

async def search(query: str, max_results: int = 10, region: str = "") -> str

参数说明:

  • query:搜索关键词
  • max_results:最多返回结果数(默认 10,建议 1-20)
  • region:地区/语言代码(可覆盖默认值)

返回值为格式化文本,包含标题、链接与摘要。

2) fetch_content

async def fetch_content(url: str, start_index: int = 0, max_length: int = 8000) -> str

参数说明:

  • url:网页 URL(需以 http/https 开头)
  • start_index:内容起始字符位置(分页使用)
  • max_length:最大返回字符数(默认 8000)

返回值为清洗后的正文文本,并附带分页元信息。

配置项(启动时读取)

  • DDG_SAFE_SEARCHSTRICT / MODERATE(默认)/ OFF
  • DDG_REGION:默认地区/语言代码,例如 us-encn-zhjp-jawt-wt

开发与测试

# 安装依赖
uv sync

# 本地运行
uv run duckduckgo-mcp-server

# MCP Inspector
mcp dev src/duckduckgo_mcp_server/server.py

# 全部测试
uv run python -m pytest src/duckduckgo_mcp_server/ -v

# 单元测试
uv run python -m pytest src/duckduckgo_mcp_server/test_server.py -v

# E2E 测试
uv run python -m pytest src/duckduckgo_mcp_server/test_e2e.py -v

# LangGraph 集成测试(需要 OPENAI_API_KEY)
python tests/test_langgraph_integration.py

常见问题

  • LangGraph 代理测试需要设置 OPENAI_API_KEY,否则只会运行工具加载测试。
  • 如果使用 HTTP 传输,请确保服务端以 streamable-http 启动,并访问 /mcp 端点。

致谢

  • nickclyde/duckduckgo-mcp-server 原始项目
  • DuckDuckGo 搜索服务
  • MCP 与 FastMCP 框架
  • httpxbeautifulsoup4 等关键依赖
  • LangGraph 与 langchain-mcp-adapters

目录标签

目录标签

搜索PythonClaude网页搜索本地部署网页内容抓取速率限制MCP协议LangGraph适配

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Docker

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP