{"_id":"@alanarantes/mcp-duckduck-go","_rev":"3-ada8db97008bbc33010ed10d70944055","name":"@alanarantes/mcp-duckduck-go","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@alanarantes/mcp-duckduck-go","version":"1.0.0","keywords":["mcp","model-context-protocol","duckduckgo","search","websearch","npx"],"author":{"name":"Alan Arantes"},"license":"MIT","_id":"@alanarantes/mcp-duckduck-go@1.0.0","maintainers":[{"name":"alanarantes","email":"alanarantes@gmail.com"}],"bin":{"mcp-duckduck-go":"build/index.js"},"dist":{"shasum":"74efd8d666dd7ad68444c7d9169564246a8a39b4","tarball":"https://registry.npmjs.org/@alanarantes/mcp-duckduck-go/-/mcp-duckduck-go-1.0.0.tgz","fileCount":4,"integrity":"sha512-vi9RDkm3IpGRf7APACEfs/OF/pL8kLkwLToUyYfoDJ8YnlGZbdMjb1XJn+KJm251NgHf5U58+zeTRo2Zb9rnlQ==","signatures":[{"sig":"MEUCIDAxV5Z7/oJZGXQFeoR2RSjByWam/E8+l8JzRVZrfzZzAiEAyF31qsLGkq373e3NTKR8tKZMG9gaCIDsulPy953838Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9172},"main":"build/index.js","type":"module","types":"./build/index.d.ts","gitHead":"439c213f7c41a8d775ac1e08c0b8205d059cfaec","scripts":{"build":"tsc","start":"node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"alanarantes","email":"alanarantes@gmail.com"},"_npmVersion":"11.16.0","description":"MCP server providing web search capabilities via DuckDuckGo","directories":{},"_nodeVersion":"24.18.0","dependencies":{"dotenv":"^16.4.7","cheerio":"^1.2.0","@modelcontextprotocol/sdk":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.3","@types/node":"^22.10.10"},"_npmOperationalInternal":{"tmp":"tmp/mcp-duckduck-go_1.0.0_1785600298637_0.23490582125609505","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alanarantes/mcp-duckduck-go","version":"1.0.1","keywords":["mcp","model-context-protocol","duckduckgo","search","websearch","npx"],"author":{"name":"Alan Arantes"},"license":"MIT","_id":"@alanarantes/mcp-duckduck-go@1.0.1","maintainers":[{"name":"alanarantes","email":"alanarantes@gmail.com"}],"bin":{"mcp-duckduck-go":"build/index.js"},"dist":{"shasum":"8f76fb9b743324c8ce4d7e0a8106743d5cb8563a","tarball":"https://registry.npmjs.org/@alanarantes/mcp-duckduck-go/-/mcp-duckduck-go-1.0.1.tgz","fileCount":4,"integrity":"sha512-/Yjr8KumP/Pbbnib33UQ6RKFTZG7iZ+jYacCm69Wjsh+DN89fJd9MpaxWZT9RcrSAmgjvkITFEmC2uHwkeSk3g==","signatures":[{"sig":"MEQCIA1U5jLzlvk8ZeonjXIyXznTAN23mkCzPt0gUvz65vkwAiAhmSwGtgCTmpQXBdMA5POcUuidXrN3zrkfHESRiTCFqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10374},"main":"build/index.js","type":"module","types":"./build/index.d.ts","gitHead":"82cd24fa7bee464f2cdaf731bfc0b5da822e156d","scripts":{"build":"tsc","start":"node build/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"alanarantes","email":"alanarantes@gmail.com"},"_npmVersion":"11.16.0","description":"MCP server providing web search capabilities via DuckDuckGo with a robust Yahoo Search fallback to bypass bot challenges and SSL verification settings","directories":{},"_nodeVersion":"24.18.0","dependencies":{"dotenv":"^16.4.7","cheerio":"^1.2.0","@modelcontextprotocol/sdk":"^1.5.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.3","@types/node":"^22.10.10"},"_npmOperationalInternal":{"tmp":"tmp/mcp-duckduck-go_1.0.1_1785600652077_0.47216262518555063","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@alanarantes/mcp-duckduck-go","version":"1.0.2","description":"MCP server providing web search capabilities via DuckDuckGo with resilient multi-provider fallback (Bing, Yahoo, Wikipedia) and automatic SSL inspection recovery","main":"build/index.js","type":"module","bin":{"mcp-duckduck-go":"build/index.js"},"scripts":{"build":"tsc","prepublishOnly":"npm run build","start":"node build/index.js"},"keywords":["mcp","model-context-protocol","duckduckgo","search","websearch","npx"],"author":{"name":"Alan Arantes"},"license":"MIT","dependencies":{"@alanarantes/mcp-duckduck-go":"^1.0.1","@modelcontextprotocol/sdk":"^1.5.0","cheerio":"^1.2.0","dotenv":"^16.4.7"},"devDependencies":{"@types/node":"^22.10.10","typescript":"^5.7.3"},"gitHead":"0f1741d59e832e4d7fa909e546db1df338bec9c9","types":"./build/index.d.ts","_id":"@alanarantes/mcp-duckduck-go@1.0.2","_nodeVersion":"24.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-xfyYIHdcJmFCwWlJEb6CG7f3qj1BPoSFdZK+G5yXtPISGVTNHCUqD0FvDSzmitSybtIjlqFj7rDhst8bqnZGkw==","shasum":"3f7cfd9183dbb876bc4a82f56ed06dff0fc04e23","tarball":"https://registry.npmjs.org/@alanarantes/mcp-duckduck-go/-/mcp-duckduck-go-1.0.2.tgz","fileCount":4,"unpackedSize":15322,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD/V03J8MFGTOD7f+RLjhBR+godW5F7cv3ATOBRIzZ5KQIhAOGnVDv4IqW8HwIedeIgzHutkIF6mqeqYTU1oSGelf0x"}]},"_npmUser":{"name":"alanarantes","email":"alanarantes@gmail.com"},"directories":{},"maintainers":[{"name":"alanarantes","email":"alanarantes@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-duckduck-go_1.0.2_1788667598854_0.05883721273958997"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-01T16:04:58.489Z","modified":"2026-09-06T04:06:39.117Z","1.0.0":"2026-08-01T16:04:58.781Z","1.0.1":"2026-08-01T16:10:52.218Z","1.0.2":"2026-09-06T04:06:38.991Z"},"author":{"name":"Alan Arantes"},"license":"MIT","keywords":["mcp","model-context-protocol","duckduckgo","search","websearch","npx"],"description":"MCP server providing web search capabilities via DuckDuckGo with resilient multi-provider fallback (Bing, Yahoo, Wikipedia) and automatic SSL inspection recovery","maintainers":[{"name":"alanarantes","email":"alanarantes@gmail.com"}],"readme":"# @alanarantes/mcp-duckduck-go\n\nAn official [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that provides LLMs with web search capabilities via DuckDuckGo, complete with a robust fallback.\n\nDesigned to be executed directly via `npx` with no local configuration, API keys, or Python environments required.\n\n---\n\n## 💡 How It Works (Resilient Multi-Provider Fallback)\n\nSearch engines frequently challenge automated scripts using bot detection (such as CAPTCHAs, rate-limits, or HTTP 500 errors). To ensure maximum search reliability, this server implements an automated 4-tier fallback pipeline:\n1. **DuckDuckGo**: First attempts to query DuckDuckGo's static HTML search natively.\n2. **Bing**: If DuckDuckGo returns a bot challenge, rate-limit, or error, the server seamlessly queries Bing and extracts clean direct destination URLs.\n3. **Yahoo Search**: If Bing is unavailable, it queries Yahoo Search with modern browser headers.\n4. **Wikipedia**: If all search engines are rate-limited or restricted on your network, it queries Wikipedia's open JSON API as a zero-failure factual fallback.\n\nAdditionally, the server automatically recovers from corporate SSL certificate inspection (`UNABLE_TO_VERIFY_LEAF_SIGNATURE`) so searches don't crash on corporate proxies.\n\n---\n\n## ⚙️ Configuration\n\nYou can customize the runtime environment by passing the following environment variables:\n\n| Variable | Default | Description |\n|---|---|---|\n| `BYPASS_SSL_VERIFICATION` | `false` | Set to `true` to bypass TLS/SSL verification errors (`UNABLE_TO_VERIFY_LEAF_SIGNATURE`) if you are behind a corporate proxy or certificate inspection firewall. |\n| `DEBUG` | `false` | Set to `true` to output MCP operational logs to standard error (`stderr`). |\n\n---\n\n## Quick Start (npx)\n\nYou can run this server directly using `npx`:\n\n```bash\nnpx -y @alanarantes/mcp-duckduck-go\n```\n\n---\n\n## Integration with MCP Clients\n\n### Claude Desktop Configuration\n\nAdd the following to your `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"duckduckgo\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@alanarantes/mcp-duckduck-go\"]\n    }\n  }\n}\n```\n\nOn Windows, if your client fails to start standard `npx` commands natively, use the Windows shell wrapper:\n\n```json\n{\n  \"mcpServers\": {\n    \"duckduckgo\": {\n      \"command\": \"cmd.exe\",\n      \"args\": [\"/c\", \"npx\", \"-y\", \"@alanarantes/mcp-duckduck-go\"]\n    }\n  }\n}\n```\n\n---\n\n## Provided MCP Tools\n\n- **`search_duckduckgo`**: Search the web using DuckDuckGo. Returns the top 10 search results containing titles, snippets, and links.\n  - Arguments:\n    - `query` (string, required): The search query.\n\n---\n\n## Development & Local Testing\n\n1. Install dependencies:\n   ```bash\n   npm install\n   ```\n2. Build the project:\n   ```bash\n   npm run build\n   ```\n3. Test locally using the MCP Inspector:\n   ```powershell\n   npx @modelcontextprotocol/inspector node build/index.js\n   ```\n\n---\n\n## Publishing to npm\n\n1. Update package name in `package.json`.\n2. Login to your npm account:\n   ```bash\n   npm login\n   ```\n3. Build & publish:\n   ```bash\n   npm run build\n   npm publish --access public\n   ```\n\n---\n\n## License\n\nMIT © Alan Arantes\n","readmeFilename":"README.md"}