使用说明
DuckDuckGo MCP服务器
A. 模型上下文协议(MCP) 为AI助手提供DuckDuckGo搜索功能的服务器。
归因这个项目是 zhsama/duckduckgo mcp服务器,最初由 zhsama。这个分支增加了英语本地化、新闻搜索、地区支持、时间过滤和现代工具。
特性
- 网页搜索 -使用特定地区和时间过滤的结果搜索网络
- 新闻搜索 -搜索包含来源和日期信息的最新新闻文章
- 令牌优化 -低VRAM LLM的可配置结果限制、代码段截断和格式化
- 安全搜索 -内容过滤(严格、适度、关闭)
- 区域支持 -不同国家的本地化结果
- 时间过滤 -按天、周、月、年筛选结果
- 速率限制 -可配置的速率限制,以防止滥用
- 可配置日志记录 -调试、信息、警告、错误或无
安装
先决条件
- Node.js>=18.0.0(使用Node 24测试)
- npm
安装和构建
npm install
npm run build
可用工具
duckduckgo_web_search
使用DuckDuckGo执行网络搜索。
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
query |
string | 是 | - | 搜索查询(最多400个字符) |
limit |
number | No | DDG_MAX_RESULTS | 覆盖默认结果限制(1-20) |
count |
number | No | DDG_MAX_RESULTS | [已弃用:使用 limit]结果数量 |
safeSearch |
string | 否 | “中等” | 筛选器:“严格”、“中等”或“关闭” |
region |
字符串 | 否 | “WT-WT” | 地区代码(例如,“US-EN”,“UK-EN”,“DE-DE”) |
time |
string | 否 | “全部” | 时间范围:“日”、“周”、“月”、“年”、“全部” |
例子:
{
"query": "TypeScript best practices",
"count": 5,
"region": "us-en",
"time": "month"
}
duckduckgo_news_search
搜索最近的新闻文章。
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
query |
string | 是 | - | 新闻搜索查询(最多400个字符) |
limit |
number | No | DDG_MAX_RESULTS | 覆盖默认结果限制(1-20) |
count |
number | No | DDG_MAX_RESULTS | [已弃用:使用 limit]结果数量 |
safeSearch |
string | 否 | “中等” | 筛选器:“严格”、“中等”或“关闭” |
time |
string | 否 | “全部” | 时间范围:“日”、“周”、“月”、“年”、“全部” |
例子:
{
"query": "artificial intelligence",
"count": 10,
"time": "week"
}
支持的地区
| 代码 | 地区 |
|---|---|
wt-wt |
全球范围 |
us-en |
美国 |
uk-en |
联合王国 |
ca-en |
加拿大(英语) |
au-en |
澳大利亚 |
de-de |
德国 |
fr-fr |
法国 |
es-es |
西班牙 |
it-it |
意大利 |
jp-jp |
日本 |
br-pt |
巴西 |
mx-es |
墨西哥 |
in-en |
印度 |
其他地区代码如下 xx-xx 格式也可以工作。
配置
环境变量
令牌优化(适用于低VRAM LLM)
| 变量 | 默认值 | 描述 |
|---|---|---|
DDG_MAX_RESULTS |
3 | 返回的默认结果数 |
DDG_MAX_SNIPPET_LENGTH |
150 | 每个代码段的最大字符数(用…截断) |
DDG_ENABLE_FULL_CONTENT |
false | 设置为“true”以禁用截断 |
DDG_STRIP_EMOJI |
false | 设置为“true”以从标题/文本中删除表情符号 |
DDG_OUTPUT_FORMAT |
“密集” | 选项:“密集”、“json”、“最小” |
速率限制
| 变量 | 默认值 | 描述 |
|---|---|---|
RATE_LIMIT_PER_SECOND |
1 | 每秒最大请求数 |
RATE_LIMIT_PER_MONTH |
15000 | 每月最大请求数 |
日志记录
| 变量 | 默认值 | 描述 |
|---|---|---|
LOG_LEVEL |
“info” | 日志级别:调试、信息、警告、错误、无 |
例子
# Token-optimized for low VRAM (12GB RTX 5070)
DDG_MAX_RESULTS=3 DDG_MAX_SNIPPET_LENGTH=150 npm run start
# Full content for high-VRAM systems
DDG_MAX_RESULTS=10 DDG_MAX_SNIPPET_LENGTH=500 DDG_ENABLE_FULL_CONTENT=true npm run start
# Debug logging
LOG_LEVEL=debug npm run start
整合
克劳德桌面版
添加到您的Claude Desktop配置中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
窗户: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"duckduckgo": {
"command": "npx",
"args": ["-y", "@ericthered926/duckduckgo-mcp-server"]
}
}
}
MCPO(开放式WebUI)
对于 MCPO 集成:
{
"mcpServers": {
"duckduckgo": {
"command": "npx",
"args": ["-y", "@ericthered926/duckduckgo-mcp-server"],
"env": {
"DDG_MAX_RESULTS": "3",
"DDG_MAX_SNIPPET_LENGTH": "150",
"DDG_ENABLE_FULL_CONTENT": "false"
}
}
}
}
本地开发
{
"mcpServers": {
"duckduckgo": {
"command": "node",
"args": ["/path/to/duckduckgo-mcp-server/build/index.js"],
"env": {
"LOG_LEVEL": "debug"
}
}
}
}
发展
脚本
| 命令 | 描述 |
|---|---|
npm run build |
编译TypeScript |
npm run start |
运行服务器 |
npm run dev |
开发观看模式 |
npm run lint |
运行ESLint+预处理检查 |
npm run lint:fix |
自动修复棉绒问题 |
npm run format |
使用Prettier格式化代码 |
npm run test |
运行测试 |
npm run typecheck |
仅用于TypeScript类型检查 |
调试
使用 MCP检查员:
npx @modelcontextprotocol/inspector node build/index.js
项目结构
duckduckgo-mcp-server/
├── src/
│ └── index.ts # Main server (web + news search)
├── test/
│ └── server.test.js # Smoke tests
├── build/ # Compiled output
├── .husky/ # Pre-commit hooks
├── eslint.config.js # ESLint 9.x flat config
├── tsconfig.json # Strict TypeScript config
├── .prettierrc # Prettier formatting
├── .editorconfig # Editor settings
└── .nvmrc # Node version (24)
速率限制
默认利率限制是保守的,以避免被DuckDuckGo阻止:
- 每秒1个请求 -防止速率限制
- 每月15000次请求 -合理的月度上限
如果您的用例需要,可以通过环境变量进行调整。
故障排除
服务器无法启动
- 检查Node.js版本:
node --version(应大于等于18) - 重建:
npm run build - 检查构建输出中的TypeScript错误
速率限制错误
- 等待限制窗口重置(每秒1秒,或调整限制)
- 检查多个实例是否共享同一计数器
未返回任何结果
- 尝试其他查询或删除时间筛选器
- 检查安全搜索是否阻止结果
- DuckDuckGo可能不会对非常具体的查询返回任何结果
调试记录
启用调试日志以查看详细的请求信息:
LOG_LEVEL=debug npm run start
积分
这个项目是 zhsama/duckduckgo mcp服务器,最初由 zhsama.
这个叉子有什么新功能
- 令牌优化 -低VRAM LLM的可配置结果限制和代码段截断
- 密集输出格式 -单行结果,最大限度地减少令牌使用
- URL清理 -条带跟踪参数(utm_*、fbclid、gclid等)
limit参数 -当需要更多上下文时,LLM可以覆盖默认值- 英语本地化(所有评论和输出)
- 新闻搜索工具(
duckduckgo_news_search) - 本地化结果的区域/地区支持
- 时间范围过滤
- 可通过以下方式配置日志记录
LOG_LEVEL - 现代ESLint 9.x平面配置
- 预处理格式
- Husky预提交挂钩
- 全面的测试套件
- 严格的TypeScript配置
许可证
麻省理工学院-参见 许可证 了解详情。
