{"_id":"@keenable/mcp","_rev":"2-b701152b4bcce3f23ddfe18773a69337","name":"@keenable/mcp","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@keenable/mcp","version":"0.1.0","keywords":["mcp","modelcontextprotocol","web-search","search","web","fetch","markdown","keenable"],"author":{"url":"https://keenable.ai","name":"Keenable","email":"support@keenable.ai"},"license":"MIT","_id":"@keenable/mcp@0.1.0","maintainers":[{"name":"ilya.bogin","email":"ilya.bogin@keenable.ai"},{"name":"ilyagusev","email":"ilya.gusev@keenable.ai"},{"name":"grigorevp","email":"p@grigorev.me"}],"homepage":"https://keenable.ai","bugs":{"url":"https://github.com/keenableai/keenable-mcp/issues"},"bin":{"keenable-mcp":"src/index.js"},"dist":{"shasum":"3964dec35b45a31c88cbfc8faf3190c30ac651a7","tarball":"https://registry.npmjs.org/@keenable/mcp/-/mcp-0.1.0.tgz","fileCount":5,"integrity":"sha512-o2odkWX5Y0Q9mfetNnE91UnopGcILz1H3IbHa/Iw1iAAglr9p+Iui1VcUwC4GU0285UpjWcWCSA297yI5uxbug==","signatures":[{"sig":"MEUCIQDhL3ETtehZRLUGXsNVB7FS0Z8SZATW7qNnMjK5ghh8lwIgJb4M+9jkLmHpyxtQWPOsLRAOlyxsr9sKZoTIDZ4JWO4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7934},"type":"module","engines":{"node":">=18"},"gitHead":"7ae0ee5ba97a046c6962b2c0ab700ed07c6cff2f","mcpName":"ai.keenable/web-search","_npmUser":{"name":"ilya.bogin","email":"ilya.bogin@keenable.ai"},"repository":{"url":"git+https://github.com/keenableai/keenable-mcp.git","type":"git"},"_npmVersion":"10.9.2","description":"MCP server for live web search and clean-markdown page fetch over the Keenable web index. Bridges to the hosted Keenable MCP server.","directories":{},"_nodeVersion":"23.11.0","dependencies":{"@modelcontextprotocol/sdk":"^1.12.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.0_1782127273007_0.6473170631737497","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@keenable/mcp","version":"0.1.1","description":"MCP server for live web search and clean-markdown page fetch over the Keenable web index. Bridges to the hosted Keenable MCP server.","license":"MIT","type":"module","mcpName":"ai.keenable/web-search","bin":{"keenable-mcp":"src/index.js"},"homepage":"https://keenable.ai","repository":{"type":"git","url":"git+https://github.com/keenableai/keenable-mcp.git"},"bugs":{"url":"https://github.com/keenableai/keenable-mcp/issues"},"keywords":["mcp","modelcontextprotocol","web-search","search","web","fetch","markdown","keenable"],"author":{"name":"Keenable","email":"support@keenable.ai","url":"https://keenable.ai"},"engines":{"node":">=18"},"dependencies":{"@modelcontextprotocol/sdk":"^1.12.0"},"_id":"@keenable/mcp@0.1.1","gitHead":"abf6efc290acb3e86798ef8dcef2c38477e130ad","_nodeVersion":"23.11.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-S4u1ebn57i7oKJYWDsGr9oMDLL9PoYeyo9TYj8V8vnLLP1uXdDQLrYstnlaGoq4mVne9oE7RzWnoA35OJmwlcQ==","shasum":"1bbfd7b08214dcbeb27668fa38201b2efedfb6ec","tarball":"https://registry.npmjs.org/@keenable/mcp/-/mcp-0.1.1.tgz","fileCount":6,"unpackedSize":11802,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAEMhvvFFcp+oY5kDsLBLlNTIq6F+AwuABcxGXVra0ABAiBY1nN6mncRyjWyKLdhJ7bD2ZRFsLGnd15booWx3Ce/dw=="}]},"_npmUser":{"name":"ilya.bogin","email":"ilya.bogin@keenable.ai"},"directories":{},"maintainers":[{"name":"ilya.bogin","email":"ilya.bogin@keenable.ai"},{"name":"ilyagusev","email":"ilya.gusev@keenable.ai"},{"name":"grigorevp","email":"p@grigorev.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_0.1.1_1782629027888_0.6814609683206547"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-22T11:21:12.822Z","modified":"2026-06-28T06:43:48.190Z","0.1.0":"2026-06-22T11:21:13.138Z","0.1.1":"2026-06-28T06:43:48.015Z"},"bugs":{"url":"https://github.com/keenableai/keenable-mcp/issues"},"author":{"name":"Keenable","email":"support@keenable.ai","url":"https://keenable.ai"},"license":"MIT","homepage":"https://keenable.ai","keywords":["mcp","modelcontextprotocol","web-search","search","web","fetch","markdown","keenable"],"repository":{"type":"git","url":"git+https://github.com/keenableai/keenable-mcp.git"},"description":"MCP server for live web search and clean-markdown page fetch over the Keenable web index. Bridges to the hosted Keenable MCP server.","maintainers":[{"name":"ilya.bogin","email":"ilya.bogin@keenable.ai"},{"name":"ilyagusev","email":"ilya.gusev@keenable.ai"},{"name":"grigorevp","email":"p@grigorev.me"}],"readme":"# Keenable MCP\n\nMCP server for live web search and clean-markdown page fetch over the\n[Keenable](https://keenable.ai) web index.\n\n- **Hosted endpoint:** `https://api.keenable.ai/mcp` (Streamable HTTP)\n- **Tools:** `search_web_pages`, `fetch_page_content`\n- **Keyless by default** (1,000 requests/hour). An optional API key lifts the cap.\n\nThe server is hosted, so most clients just point at the URL. For clients (or\nconfig paths) that only accept a stdio `command` there is a thin npm wrapper\n(`@keenable/mcp`) that bridges to the same endpoint.\n\n## Tools\n\n| Tool | Description |\n|---|---|\n| `search_web_pages` | Live web search. Args: `query` (required), plus optional `mode`, `site`, `published_after` / `published_before`, `acquired_after` / `acquired_before`. |\n| `fetch_page_content` | Fetch a URL and return clean markdown. Args: `url` (required), optional `max_chars` (default 50000). |\n\n## Use it\n\n### Remote (recommended)\n\nClients with remote MCP support — Cursor, Cline, VS Code, and Claude Desktop's\nCustom Connectors UI — connect to the URL directly:\n\n```json\n{\n  \"mcpServers\": {\n    \"keenable\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://api.keenable.ai/mcp\"\n    }\n  }\n}\n```\n\n### Stdio (e.g. Claude Desktop's `claude_desktop_config.json`)\n\nFor clients or config paths that only accept a stdio `command`, run the wrapper\nwith `npx`:\n\n```json\n{\n  \"mcpServers\": {\n    \"keenable\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@keenable/mcp\"]\n    }\n  }\n}\n```\n\nThat is all you need for keyless use.\n\n## API key (optional)\n\nKeenable is keyless by default. To lift the hourly rate limit, pass a key.\n\nRemote:\n\n```json\n{\n  \"mcpServers\": {\n    \"keenable\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://api.keenable.ai/mcp\",\n      \"headers\": { \"X-API-Key\": \"YOUR_KEY\" }\n    }\n  }\n}\n```\n\nStdio:\n\n```json\n{\n  \"mcpServers\": {\n    \"keenable\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@keenable/mcp\"],\n      \"env\": { \"KEENABLE_API_KEY\": \"YOUR_KEY\" }\n    }\n  }\n}\n```\n\n## How the wrapper works\n\n`@keenable/mcp` is a small stdio bridge: it connects to the hosted server over\nStreamable HTTP and forwards every tool the server exposes. There is no\nsearch logic in this package; the index and tools live behind\n`https://api.keenable.ai/mcp`. Environment variables:\n\n- `KEENABLE_API_KEY` — optional API key, sent as `X-API-Key`.\n- `KEENABLE_MCP_URL` — override the endpoint (defaults to `https://api.keenable.ai/mcp`).\n\n## Links\n\n- Docs: https://docs.keenable.ai/mcp-server\n- Site: https://keenable.ai\n- Registry: [`ai.keenable/web-search`](https://registry.modelcontextprotocol.io/v0/servers?search=ai.keenable) (Official MCP Registry)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}