MCP鸭子研究
MCP(模型上下文协议)服务器,将DuckDuckGo搜索功能与网页内容提取和屏幕截图功能相结合。此服务器弥合了搜索信息和以编程方式访问web内容之间的差距。
特性
- 🔍 DuckDuckGo搜索:使用DuckDuckGo的搜索引擎搜索网络
- 📄 内容提取:访问网页并将其内容提取为Markdown
- 📸 电脑屏幕截图工具:使用自动大小优化功能对网页进行截图
- ⚡ 稳健的错误处理:内置防止机器人检测和内容验证的保护
- 🔒 安全搜索选项:可配置的安全搜索级别,用于适当的内容过滤
安装
# Clone the repository
git clone https://github.com/yourusername/mcp-duckduckresearch.git
cd mcp-duckduckresearch
# Install dependencies
npm install
# Build the project
npm run build使用Cline和Roo代码
熟料安装
- 首先使用上述安装步骤构建项目
- 在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.搜索_鸭子
使用DuckDuckGo搜索网络。Roo Code中的示例用法:
duckduckmcp
search_duckduckgo
{
"query": "typescript best practices",
"options": {
"region": "zh-cn",
"safeSearch": "MODERATE",
"numResults": 10
}
}
2.访问_页面
访问网页并将其内容提取为Markdown:
duckduckmcp
visit_page
{
"url": "https://example.com",
"takeScreenshot": false
}
3.拍摄_屏幕截图
对当前加载的页面进行截图:
duckduckmcp
take_screenshot
{}
Roo代码中的工作流示例
以下是搜索信息和访问结果的完整示例:
- 首先,搜索信息:
duckduckmcp
search_duckduckgo
{
"query": "TypeScript best practices",
"options": {
"numResults": 10,
"safeSearch": "MODERATE"
}
}
- 然后,访问其中一个结果:
duckduckmcp
visit_page
{
"url": "https://example.com/typescript-practices",
"takeScreenshot": true
}
服务器将自动处理:
- 浏览器初始化和清理
- 内容提取和转换为Markdown
- 截图捕获和优化
- 错误处理和重试
发展
先决条件
- Node.js(v18或更高版本)
- npm
- 一个能够运行Chrome/Chromium的系统(适用于剧作家)
设置开发环境
# Install dependencies
npm install
# Start in development mode
npm run dev
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
# Format code
npm run format
# Lint code
npm run lint项目结构
mcp-duckduckresearch/
├── src/
│ ├── browser.ts # Browser management and content extraction
│ ├── search.ts # DuckDuckGo search implementation
│ ├── types.ts # Type definitions and schemas
│ ├── utils.ts # Utility functions
│ └── index.ts # Main server implementation
├── tests/
│ ├── unit/ # Unit tests
│ └── integration/ # Integration tests
└── package.json # Project configuration测试
该项目使用Vitest进行测试。测试分为:
- 单元测试:测试单个组件和功能
- 集成测试:测试完整的工作流程
- 测试覆盖率:目标覆盖率>80%
使用以下工具运行测试:
# Run all tests
npm test
# Run with coverage
npm run test:coverage贡献
- 分叉存储库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
