DuckDuckGo MCP Server
使用说明(Markdown 格式)
项目简介
本仓库实现了一个基于 MCP (Model Context Protocol) 的服务器端应用,向 MCP 客户端提供三个核心能力:
- DuckDuckGo 网络检索工具:按查询返回网页搜索结果(JSON 或文本格式)。
- DuckDuckGo 新闻检索工具:按查询返回新闻条目(JSON 或文本格式)。
- Jina Reader 内容获取工具:对给定 URL 使用 Jina Reader 将页面转成 Markdown 或 JSON。
服务器通过 FastMCP 框架管理工具,通过 STDIO、WebSocket、SSE 等传输方式对接 MCP 客户端,具备会话管理和能力声明等能力。
主要功能点
- 提供三种 MCP 工具:duckduckgo_search、duckduckgo_news_search、jina_fetch(别名 jina_fetch、fetch_url 为工具入口)。
- 支持多种输出格式:JSON(结构化数据)与文本(LLM 友好格式)两种输出。
- 集成 DuckDuckGo 的实用检索能力,包含 safesearch、结果数量控制等参数。
- Jina Reader 接入,用于把网页内容转换成可供 LLM 处理的内容(markdown 或 json),可控制输出长度和图片 Alt 文本生成。
- 命令行界面(CLI)与 API 一致的开发体验,便于本地开发、测试与容器化部署。
- Docker 支持与容器化部署方案,适用于 Cloud/本地运行。
安装步骤
- 先决条件
- Python 3.10 及以上
- 可选:uv/uvx 提高性能与兼容性
- 安装方式
- 从 PyPI 安装(推荐)
- 也可从源码安装并进入开发环境
- 启动服务器
- 以 STDIO 模式启动以接入 MCP 客户端(如 Claude、Codex 等)
- 命令示例:duckduckgo-mcp serve
- 如需调试:duckduckgo-mcp serve --debug
- 使用插件和工具
- 服务器自动暴露以下工具:duckduckgo_search、duckduckgo_news_search、jina_fetch
- 客户端无需改动服务器端实现,即可通过 MCP 协议调用这些工具
服务器配置
MCP 客户端连接此 MCP 服务器时的配置示例(JSON),用于描述该服务器的启动信息。说明仅用于客户端配置参考,实际服务器端实现无需此处代码: { "server_name": "duckduckgo_mcp", "command": "duckduckgo-mcp", "args": ["serve"] } 说明:
- server_name:服务器在 MCP 客户端配置中的标识名称,建议与仓库内 FastMCP 实例名称一致,此处为 duckduckgo_mcp。
- command:用来启动 MCP 服务器的可执行程序名,在本仓库中对应 CLI 命令 duckduckgo-mcp。
- args:传递给启动命令的参数,这里为 serve,启动后以 MCP 的 STDIO 传输进行通信。
- 备注:实际部署时,若使用 uvx、uv 等运行环境,可按客户端环境的常规方式启动服务器(如 uvx ... duckduckgo-mcp serve),客户端仅需要知道上述 server_name、command 与 args 的映射关系。
基本使用方法
- 启动服务器
- 通过命令行直接启动:duckduckgo-mcp serve
- 服务器启动后将以 MCP 标准格式对接客户端请求(读取资源、调用工具、渲染 Prompts 等)
- 使用工具
- duckduckgo_search:基于查询执行网页搜索,支持最大结果数、SafeSearch 与输出格式(json/text)。
- duckduckgo_news_search:基于查询执行新闻检索,支持最大结果数、SafeSearch 与输出格式(json/text)。
- jina_fetch:对给定 URL 通过 Jina Reader 转换为 Markdown 或 JSON,支持输出长度限制和是否包含图片 Alt 文本。
- 与 MCP 客户端的交互
- 客户端通过 JSON-RPC 风格的请求与服务器通信,请求类型包含读取资源、执行工具、获取 Prompts 等,服务器响应符合 MCP 的约定。
- 本实现通过 fastmcp 提供 @mcp.tool() 装饰的工具入口,客户端可直接调用这些工具并获得标准化的返回结果。
运行与部署要点
- 容器化:仓库提供 Docker 相关说明,适合在容器中以 STDIO 传输部署。
- 兼容性:支持 Claude、Codex 等 MCP 客户端,具备多种传输协议的扩展性。
- 安全性与稳定性:对输入进行基础校验与错误处理,日志记录用于排错和监控。