{"_id":"@asdrubalinasmyth/web-search-mcp","_rev":"4-1755f3934b84e6db9fc6abf4e2513b95","name":"@asdrubalinasmyth/web-search-mcp","dist-tags":{"latest":"1.0.9"},"versions":{"1.0.6":{"name":"@asdrubalinasmyth/web-search-mcp","version":"1.0.6","keywords":["mcp","modelcontextprotocol","web","search","scrape"],"author":"","license":"MIT","_id":"@asdrubalinasmyth/web-search-mcp@1.0.6","maintainers":[{"name":"asdrubalinasmyth","email":"prompts_floury0n@icloud.com"}],"homepage":"https://github.com/OsnofianResearch/web-search-mcp#readme","bugs":{"url":"https://github.com/OsnofianResearch/web-search-mcp/issues"},"bin":{"web-search-mcp":"dist/server.js"},"dist":{"shasum":"599194b6c2459a72d69a7a02548dc3bf39f59841","tarball":"https://registry.npmjs.org/@asdrubalinasmyth/web-search-mcp/-/web-search-mcp-1.0.6.tgz","fileCount":3,"integrity":"sha512-SMja8dFv4ofTI9Q6K193v5n0S0zWkz1559qPJobg8chCoZok5c+e4Xy3+CZv2DFvB1/FoRWYwckmTHN8B58XQg==","signatures":[{"sig":"MEUCIA6Q3xci1z2NjqS4YCCxfQvY7vVma1JyVOSg77nKKCClAiEA73rySk8hogMq6r4wdJexBZDnrPBjmKaGgaN3fEKUEX8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asdrubalinasmyth%2fweb-search-mcp@1.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4289},"type":"module","engines":{"node":">=20"},"gitHead":"525d6815600a1ec603488ab8051db413bca7b1cb","prepare":"npm run build","scripts":{"lint":"eslint .","test":"vitest run","build":"npm run clean && tsc -p tsconfig.build.json","check":"tsc -p tsconfig.json --noEmit && eslint . && vitest run","clean":"rimraf dist","smoke":"tsx scripts/smoke.ts","start":"tsx src/server.ts"},"_npmUser":{"name":"asdrubalinasmyth","email":"prompts_floury0n@icloud.com"},"repository":{"url":"git+https://github.com/OsnofianResearch/web-search-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server to search the web and fetch page contents","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","jsdom":"^26.1.0","undici":"^7.13.0","@mozilla/readability":"^0.6.0","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","eslint":"^9.32.0","rimraf":"^6.0.1","vitest":"^3.2.4","globals":"^16.3.0","typescript":"^5.9.2","@types/node":"^24.2.0","@types/jsdom":"^21.1.7","@typescript-eslint/parser":"^8.39.0","@typescript-eslint/eslint-plugin":"^8.39.0"},"_npmOperationalInternal":{"tmp":"tmp/web-search-mcp_1.0.6_1772615818089_0.7694696658763955","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@asdrubalinasmyth/web-search-mcp","version":"1.0.7","keywords":["mcp","modelcontextprotocol","web","search","scrape"],"author":"","license":"MIT","_id":"@asdrubalinasmyth/web-search-mcp@1.0.7","maintainers":[{"name":"asdrubalinasmyth","email":"prompts_floury0n@icloud.com"}],"homepage":"https://github.com/OsnofianResearch/web-search-mcp#readme","bugs":{"url":"https://github.com/OsnofianResearch/web-search-mcp/issues"},"bin":{"web-search-mcp":"dist/server.js"},"dist":{"shasum":"e54c32cda96b4719aeb4d116fc024f7607eb194d","tarball":"https://registry.npmjs.org/@asdrubalinasmyth/web-search-mcp/-/web-search-mcp-1.0.7.tgz","fileCount":3,"integrity":"sha512-vNLAZdJ2udWvCiYrqm8LOdcg9uWbyZPv5cY7jlu++qKR0V2d8WWDTtQvRD7BKuGP0IZyfh4FYHaUXcTBglOmrg==","signatures":[{"sig":"MEQCIAwTfCGiSuXDEUp3fGS1G42zQ3kSln7kj8jtLf+qW7+1AiA0NkYMpC0P6ZY1UabKGKv0qzx4CZOqJoohsRgMDGJhLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asdrubalinasmyth%2fweb-search-mcp@1.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5034},"type":"module","engines":{"node":">=20"},"gitHead":"709b115a32a24673beadd4ed610b73213aa31a72","prepare":"npm run build","scripts":{"lint":"eslint .","test":"vitest run","build":"npm run clean && tsc -p tsconfig.build.json","check":"tsc -p tsconfig.json --noEmit && eslint . && vitest run","clean":"rimraf dist","smoke":"tsx scripts/smoke.ts","start":"tsx src/server.ts"},"_npmUser":{"name":"asdrubalinasmyth","email":"prompts_floury0n@icloud.com"},"repository":{"url":"git+https://github.com/OsnofianResearch/web-search-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server to search the web and fetch page contents","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","jsdom":"^26.1.0","undici":"^7.13.0","@mozilla/readability":"^0.6.0","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","eslint":"^9.32.0","rimraf":"^6.0.1","vitest":"^3.2.4","globals":"^16.3.0","typescript":"^5.9.2","@types/node":"^24.2.0","@types/jsdom":"^21.1.7","@typescript-eslint/parser":"^8.39.0","@typescript-eslint/eslint-plugin":"^8.39.0"},"_npmOperationalInternal":{"tmp":"tmp/web-search-mcp_1.0.7_1772616871508_0.693995963315404","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@asdrubalinasmyth/web-search-mcp","version":"1.0.8","keywords":["mcp","modelcontextprotocol","web","search","scrape"],"author":"","license":"MIT","_id":"@asdrubalinasmyth/web-search-mcp@1.0.8","maintainers":[{"name":"asdrubalinasmyth","email":"prompts_floury0n@icloud.com"}],"homepage":"https://github.com/OsnofianResearch/web-search-mcp#readme","bugs":{"url":"https://github.com/OsnofianResearch/web-search-mcp/issues"},"bin":{"web-search-mcp":"dist/server.js"},"dist":{"shasum":"fc4add5a6f6d6bbab86f179838b72ec7d77d2119","tarball":"https://registry.npmjs.org/@asdrubalinasmyth/web-search-mcp/-/web-search-mcp-1.0.8.tgz","fileCount":4,"integrity":"sha512-KtUuWi5nPApojA8ie4oOUQbbk2z4Xq+NXIjE+vmO7NqIVTuS8D/oFOEa7pPYCNjsrge6JvbRnlJJNqRdG0fQcg==","signatures":[{"sig":"MEUCIQC3eB2Z9WMZsPrgFOGZniP7yOUtNeu5a6mEUHHokoDFYAIgN2gZZG5w3+4r+95AL3DantVKWvMD3tZdd+lFiloblw4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asdrubalinasmyth%2fweb-search-mcp@1.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11909},"type":"module","engines":{"node":">=20"},"gitHead":"b247e2aead55fd4cfcaea4961d4841d4aa480c9c","prepare":"npm run build","scripts":{"lint":"eslint .","test":"vitest run","build":"npm run clean && tsc -p tsconfig.build.json","check":"tsc -p tsconfig.json --noEmit && eslint . && vitest run","clean":"rimraf dist","smoke":"tsx scripts/smoke.ts","start":"tsx src/server.ts"},"_npmUser":{"name":"asdrubalinasmyth","email":"prompts_floury0n@icloud.com"},"repository":{"url":"git+https://github.com/OsnofianResearch/web-search-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server to search the web and fetch page contents","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","jsdom":"^26.1.0","undici":"^7.13.0","@mozilla/readability":"^0.6.0","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.3","eslint":"^9.32.0","rimraf":"^6.0.1","vitest":"^3.2.4","globals":"^16.3.0","typescript":"^5.9.2","@types/node":"^24.2.0","@types/jsdom":"^21.1.7","@typescript-eslint/parser":"^8.39.0","@typescript-eslint/eslint-plugin":"^8.39.0"},"_npmOperationalInternal":{"tmp":"tmp/web-search-mcp_1.0.8_1772618368861_0.49380445056700517","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@asdrubalinasmyth/web-search-mcp","version":"1.0.9","type":"module","description":"MCP server to search the web and fetch page contents","bin":{"web-search-mcp":"dist/server.js"},"scripts":{"start":"tsx src/server.ts","clean":"rimraf dist","build":"npm run clean && tsc -p tsconfig.build.json","lint":"eslint .","test":"vitest run","check":"tsc -p tsconfig.json --noEmit && eslint . && vitest run","smoke":"tsx scripts/smoke.ts"},"engines":{"node":">=20"},"publishConfig":{"access":"public"},"prepare":"npm run build","repository":{"type":"git","url":"git+https://github.com/OsnofianResearch/web-search-mcp.git"},"bugs":{"url":"https://github.com/OsnofianResearch/web-search-mcp/issues"},"homepage":"https://github.com/OsnofianResearch/web-search-mcp#readme","keywords":["mcp","modelcontextprotocol","web","search","scrape"],"author":"","license":"MIT","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","@mozilla/readability":"^0.6.0","jsdom":"^28.1.0","undici":"^7.22.0","zod":"^4.3.6"},"devDependencies":{"@types/jsdom":"^28.0.0","@types/node":"^25.3.3","@typescript-eslint/eslint-plugin":"^8.56.1","@typescript-eslint/parser":"^8.56.1","eslint":"^10.0.2","globals":"^17.4.0","rimraf":"^6.1.3","tsx":"^4.21.0","typescript":"^5.9.3","vitest":"^4.0.18"},"_id":"@asdrubalinasmyth/web-search-mcp@1.0.9","gitHead":"e927119e6b87ccf97fdc6df8971b7f141323bcd2","_nodeVersion":"20.20.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-aIszLRYGiQZDgZEpf82jWIA9zz6UMDEPFgBJkXlkAxA8MVJcx8qSyt0JvGH27JzFZaN2axAPRyGZdHoGYRBoTA==","shasum":"4ac7ff73d87a73e9c15766d814922857e194310d","tarball":"https://registry.npmjs.org/@asdrubalinasmyth/web-search-mcp/-/web-search-mcp-1.0.9.tgz","fileCount":4,"unpackedSize":11909,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@asdrubalinasmyth%2fweb-search-mcp@1.0.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCJLLDGLeAkwhsBjuLhdtZOACawIZYl3ZgAvrLJ0Fbe/wIgUpKsv9HmB4ZhH/sy8lwjcC2J4vu+/BkVzM2dzl0f10Y="}]},"_npmUser":{"name":"asdrubalinasmyth","email":"prompts_floury0n@icloud.com"},"directories":{},"maintainers":[{"name":"asdrubalinasmyth","email":"prompts_floury0n@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/web-search-mcp_1.0.9_1772809222686_0.739942104356937"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-04T09:16:57.999Z","modified":"2026-03-06T15:00:23.120Z","1.0.6":"2026-03-04T09:16:58.293Z","1.0.7":"2026-03-04T09:34:31.664Z","1.0.8":"2026-03-04T09:59:28.997Z","1.0.9":"2026-03-06T15:00:22.843Z"},"bugs":{"url":"https://github.com/OsnofianResearch/web-search-mcp/issues"},"license":"MIT","homepage":"https://github.com/OsnofianResearch/web-search-mcp#readme","keywords":["mcp","modelcontextprotocol","web","search","scrape"],"repository":{"type":"git","url":"git+https://github.com/OsnofianResearch/web-search-mcp.git"},"description":"MCP server to search the web and fetch page contents","maintainers":[{"name":"asdrubalinasmyth","email":"prompts_floury0n@icloud.com"}],"readme":"## Web Search MCP\n\nSecurity-hardened fork of [guhcostan/web-search-mcp](https://github.com/guhcostan/web-search-mcp). Minimal MCP server that can search the web and extract readable page content.\n\n### Add to LM Studio\n\n<a href=\"https://lmstudio.ai/install-mcp?name=web-search-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBhc2RydWJhbGluYXNteXRoL3dlYi1zZWFyY2gtbWNwQGxhdGVzdCJdfQ%3D%3D\"><img src=\"https://files.lmstudio.ai/deeplink/mcp-install-light.svg\" alt=\"Add MCP Server web-search-mcp to LM Studio\" /></a>\n\nOr add manually in LM Studio → Settings → MCP Servers:\n\n```json\n{\n  \"mcpServers\": {\n    \"web-search-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@asdrubalinasmyth/web-search-mcp@latest\"]\n    }\n  }\n}\n```\n\n### Features\n\n- **search_web**: Query the web (DuckDuckGo HTML) and return result URLs and titles\n- **fetch_page**: Fetch any URL and extract readable content using Mozilla Readability + JSDOM\n\n### Requirements\n\n- Node.js 20+ (recommended: 20.18.1+)\n\n### Install\n\n```bash\nnpm install\n```\n\n### Run (stdio)\n\n```bash\nnpm start\n```\n\n### Install globally\n\n```bash\nnpm i -g @asdrubalinasmyth/web-search-mcp\n```\n\nThen reference the binary `web-search-mcp`.\n\n### Integrate with MCP clients\n\n#### Cursor\n\nAdd to your Cursor MCP settings (`~/.cursor/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"web-search-mcp\": { \"command\": \"web-search-mcp\" }\n  }\n}\n```\n\nWithout global install, use npx:\n\n```json\n{\n  \"mcpServers\": {\n    \"web-search-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@asdrubalinasmyth/web-search-mcp@latest\"]\n    }\n  }\n}\n```\n\n#### LM Studio\n\nIn LM Studio → Settings → MCP Servers, add:\n\n```json\n{\n  \"mcpServers\": {\n    \"web-search-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@asdrubalinasmyth/web-search-mcp@latest\"]\n    }\n  }\n}\n```\n\n#### Claude Desktop\n\nAdd to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows):\n\n```json\n{\n  \"mcpServers\": {\n    \"web-search-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@asdrubalinasmyth/web-search-mcp@latest\"]\n    }\n  }\n}\n```\n\n### Tools\n\n- **search_web**\n  - input:\n    - `query` (string, required)\n    - `limit` (number, optional, 1–10, default 5)\n  - output: array of `{ url: string; title?: string; snippet?: string }`\n\n- **fetch_page**\n  - input:\n    - `url` (string URL, required)\n  - output: `{ url: string; title?: string; content: string }`\n\n### Development\n\nType-check, lint and tests:\n\n```bash\nnpm run check\n```\n\nRun individually:\n\n```bash\nnpm run build\nnpm run lint\nnpm test\n```\n\n### Notes\n\n- Web search uses DuckDuckGo HTML; results may vary and are HTML-scraped (no API key required)\n- Be mindful of target site terms of use and robots policies when fetching pages\n- `fetch_page` only accepts `https://` URLs and blocks requests to private/internal IP ranges (SSRF protection)\n\n### License\n\nMIT","readmeFilename":"README.md"}