An MCP (Model Context Protocol) server that combines DuckDuckGo search capabilities with web page content extraction and screenshot functionality. This server bridges the gap between searching for information and accessing web content programmatically.
# 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
Build the project first using the installation steps above
Configure the MCP server in your Cline settings:
Edit your Cline MCP settings file at:
%APPDATA%\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\cline_mcp_settings.json
Add the following configuration:
{
"mcpServers": {
"duckduckmcp": {
"command": "node",
"args": ["path/to/mcp-duckduckresearch/build/index.js"],
"disabled": false,
"alwaysAllow": []
}
}
}
Replace path/to/mcp-duckduckresearch
with the actual path where you cloned this repository.
Once configured, the following tools will be available in Roo Code:
Search the web using DuckDuckGo. Example usage in Roo Code:
<use_mcp_tool>
<server_name>duckduckmcp</server_name>
<tool_name>search_duckduckgo</tool_name>
<arguments>
{
"query": "typescript best practices",
"options": {
"region": "zh-cn",
"safeSearch": "MODERATE",
"numResults": 10
}
}
</arguments>
</use_mcp_tool>
Visit a webpage and extract its content as Markdown:
<use_mcp_tool>
<server_name>duckduckmcp</server_name>
<tool_name>visit_page</tool_name>
<arguments>
{
"url": "https://example.com",
"takeScreenshot": false
}
</arguments>
</use_mcp_tool>
Take a screenshot of the currently loaded page:
<use_mcp_tool>
<server_name>duckduckmcp</server_name>
<tool_name>take_screenshot</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>
Here's a complete example of searching for information and visiting a result:
<use_mcp_tool>
<server_name>duckduckmcp</server_name>
<tool_name>search_duckduckgo</tool_name>
<arguments>
{
"query": "TypeScript best practices",
"options": {
"numResults": 10,
"safeSearch": "MODERATE"
}
}
</arguments>
</use_mcp_tool>
<use_mcp_tool>
<server_name>duckduckmcp</server_name>
<tool_name>visit_page</tool_name>
<arguments>
{
"url": "https://example.com/typescript-practices",
"takeScreenshot": true
}
</arguments>
</use_mcp_tool>
The server will automatically handle:
# 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
The project uses Vitest for testing. Tests are organized into:
Run tests with:
# 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
)This project is licensed under the MIT License - see the LICENSE file for details.
{
"mcpServers": {
"duckduckmcp": {
"env": {},
"args": [
"path/to/mcp-duckduckresearch/build/index.js"
],
"command": "node"
}
}
}
Seamless access to top MCP servers powering the future of AI integration.