<div align="center">
<img src="https://img.shields.io/npm/v/@oevortex/ddg_search.svg" alt="npm 版本" />
<img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg" alt="许可证:Apache 2.0" />
<img src="https://img.shields.io/badge/YouTube-%40OEvortex-red.svg" alt="YouTube 频道" />
<h1>DuckDuckGo & Felo AI 搜索 MCP 🔍🧠</h1>
<p>一个快速、尊重隐私的模型上下文协议(MCP)服务器,用于网络搜索和基于AI的响应,采用DuckDuckGo和Felo AI。</p>
<a href="https://glama.ai/mcp/servers/@OEvortex/ddg_search">
<img width="380" height="200" src="https://gips0.baidu.com/it/u=1289873615,4013099989&fm=3081&app=3081&f=PNG?w=760&h=400" alt="DuckDuckGo 搜索 MCP 服务器" />
</a>
<a href="https://youtube.com/@OEvortex"><strong>订阅以获取更新和教程</strong></a>
</div>
[!IMPORTANT]
DuckDuckGo 搜索 MCP 支持模型上下文协议(MCP)标准,使其与各种AI助手和工具兼容。
✨ 功能
<div style="display: flex; flex-wrap: wrap; gap: 1.5em; margin-bottom: 1.5em;">
<div><b>🌐 网络搜索</b> 使用DuckDuckGo HTML</div>
<div><b>🧠 AI 搜索</b> 使用Felo AI</div>
<div><b>📄 URL 内容提取</b> 带智能过滤</div>
<div><b>📊 URL 元数据提取</b> (标题、描述、图片)</div>
<div><b>⚡ 性能优化</b> 带缓存</div>
<div><b>🛡️ 安全特性</b> 包括速率限制和轮换用户代理</div>
<div><b>🔌 MCP兼容</b> 服务器实现</div>
<div><b>🆓 不需要API密钥</b> - 开箱即用</div>
</div>
[!IMPORTANT]
与许多搜索工具不同,此包执行实际的网页抓取而不是使用有限的API,为您提供更全面的结果。
🚀 快速开始
<div style="background: #222; color: #fff; padding: 1.5em; border-radius: 8px; margin: 1.5em 0;">
<b>立即运行:</b>
npx -y @oevortex/ddg_search@latest
</div>
[!TIP]
这将下载并直接运行最新版本的MCP服务器,无需安装——非常适合与AI助手快速使用。
🛠️ 安装选项
<details>
<summary><b>全局安装</b></summary>
npm install -g @oevortex/ddg_search
全局运行:
ddg-search-mcp
</details>
<details>
<summary><b>本地安装(开发)</b></summary>
git clone https://github.com/OEvortex/ddg_search.git
cd ddg_search
npm install
npm start
</details>
🧑💻 命令行选项
npx -y @oevortex/ddg_search@latest --help
[!TIP]
使用--version标志检查您正在运行的版本。
🤖 与MCP客户端一起使用
[!IMPORTANT]
最常见的使用方式是将其集成到兼容MCP的AI助手中。
在您的MCP客户端配置中添加服务器:
{
"mcpServers": {
"ddg-search": {
"command": "npx",
"args": ["-y", "@oevortex/ddg_search@latest"]
}
}
}
或者如果已全局安装:
{
"mcpServers": {
"ddg-search": {
"command": "ddg-search-mcp"
}
}
}
[!TIP]
配置后,请重启您的MCP客户端以应用更改。
🧰 工具概述
<div style="display: flex; flex-wrap: wrap; gap: 2.5em; margin: 1.5em 0;">
<div style="margin-bottom: 1.5em;">
<b>🔍 网络搜索工具</b><br/>
<code>web-search</code><br/>
<ul>
<li><b>query</b> (字符串,必需):搜索查询</li>
<li><b>page</b> (整数,可选,默认值:1):页码</li>
<li><b>numResults</b> (整数,可选,默认值:10):结果数量(1-20)</li>
</ul>
<i>示例:搜索“气候变化解决方案”</i>
</div>
<div style="margin-bottom: 1.5em;">
<b>🧠 Felo AI 搜索工具</b><br/>
<code>felo-search</code><br/>
<ul>
<li><b>query</b> (字符串,必需):搜索查询或提示</li>
<li><b>stream</b> (布尔值,可选,默认值:false):是否流式传输响应</li>
</ul>
<i>示例:搜索Felo AI“用简单的话解释量子计算”</i>
</div>
<div style="margin-bottom: 1.5em;">
<b>📄 获取URL工具</b><br/>
<code>fetch-url</code><br/>
<ul>
<li><b>url</b> (字符串,必需):要获取的URL</li>
<li><b>maxLength</b> (整数,可选,默认值:10000):最大内容长度</li>
<li><b>extractMainContent</b> (布尔值,可选,默认值:true):提取主要内容</li>
<li><b>includeLinks</b> (布尔值,可选,默认值:true):包括链接文本</li>
<li><b>includeImages</b> (布尔值,可选,默认值:true):包括图像alt文本</li>
<li><b>excludeTags</b> (数组,可选):要排除的标签</li>
</ul>
<i>示例:从"https://example.com"获取内容</i>
</div>
<div style="margin-bottom: 1.5em;">
<b>📊 URL 元数据工具</b><br/>
<code>url-metadata</code><br/>
<ul>
<li><b>url</b> (字符串,必需):要提取元数据的URL</li>
</ul>
<i>示例:获取"https://example.com"的元数据</i>
</div>
</div>
📁 项目结构
bin/ # 命令行界面
src/
index.js # 主入口点
tools/ # 工具定义和处理程序
searchTool.js
fetchUrlTool.js
metadataTool.js
feloTool.js
utils/
search.js # 搜索和URL实用程序
search_felo.js # Felo AI 搜索实用程序
package.json
README.md
🤝 贡献
欢迎贡献!请打开问题或提交拉取请求。
[!NOTE]
请遵循现有的代码风格,并为新功能添加测试。
📺 YouTube 频道
<div align="center">
<a href="https://youtube.com/@OEvortex"><img src="https://img.shields.io/badge/YouTube-%40OEvortex-red.svg" alt="YouTube 频道" /></a>
<br/>
<a href="https://youtube.com/@OEvortex">youtube.com/@OEvortex</a>
</div>
📄 许可证
Apache 许可证 2.0
[!NOTE]
此项目根据Apache许可证2.0发布——请参阅<a href="LICENSE">LICENSE</a>文件了解详情。
<div align="center">
<sub>由 <a href="https://youtube.com/@OEvortex">@OEvortex</a> 制作 ❤️</sub>
</div>