{"_id":"@benvargas/pi-exa-mcp","_rev":"5-be4cf32eeb19c6ab858e5c71d108bbc0","name":"@benvargas/pi-exa-mcp","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@benvargas/pi-exa-mcp","version":"1.0.0","keywords":["pi","pi-package","pi-extension","pi-coding-agent","ai","exa","mcp","web-search","code-search","model-context-protocol"],"author":{"name":"Ben Vargas"},"license":"MIT","_id":"@benvargas/pi-exa-mcp@1.0.0","maintainers":[{"name":"benvargas","email":"ben@vargas.com"}],"homepage":"https://github.com/ben-vargas/pi-packages/tree/main/packages/pi-exa-mcp#readme","bugs":{"url":"https://github.com/ben-vargas/pi-packages/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"2d159f6c9e8c7ed9d8d6e39c9061325b49f5d14b","tarball":"https://registry.npmjs.org/@benvargas/pi-exa-mcp/-/pi-exa-mcp-1.0.0.tgz","fileCount":4,"integrity":"sha512-0rcCVYs/08mb6EUAvouc/hN3SJCcklCkmGrrFw/ElHx1RX2QQlWeqdUMXhO+4EyFohuuAqjAQ+p2PR1r/X6OZQ==","signatures":[{"sig":"MEUCIQDv4uN6/x0D58TuVz3a3hmo41o5nLkvv4rMb3H4ENR5LAIgaNMOUSY6UVsxj8MRwPQr+fNHSLzTKFxd8FDhuFY3VN0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33703},"type":"module","gitHead":"caeea3b30b8c1d0d3b38cf73c5bd6946d2fee1b3","_npmUser":{"name":"benvargas","email":"ben@vargas.com"},"repository":{"url":"git+https://github.com/ben-vargas/pi-packages.git","type":"git","directory":"packages/pi-exa-mcp"},"_npmVersion":"11.7.0","description":"Exa MCP tools for pi - Web search and code context via Exa's Model Context Protocol","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"peerDependencies":{"@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-exa-mcp_1.0.0_1769793010099_0.40555985329191313","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@benvargas/pi-exa-mcp","version":"1.0.1","keywords":["pi","pi-package","pi-extension","pi-coding-agent","ai","exa","mcp","web-search","code-search","model-context-protocol"],"author":{"name":"Ben Vargas"},"license":"MIT","_id":"@benvargas/pi-exa-mcp@1.0.1","maintainers":[{"name":"benvargas","email":"ben@vargas.com"}],"homepage":"https://github.com/ben-vargas/pi-packages/tree/main/packages/pi-exa-mcp#readme","bugs":{"url":"https://github.com/ben-vargas/pi-packages/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"a26c4e2048f124272a2e6eeff47547aa43ced0c0","tarball":"https://registry.npmjs.org/@benvargas/pi-exa-mcp/-/pi-exa-mcp-1.0.1.tgz","fileCount":4,"integrity":"sha512-zlzPTWAo/rEl1trpYwx0Uz24yMhPqHsAwGYSP9HR0LGm4KFu/loVYVx3nTPO/yA5LKRlY0MAwQgjHCer9kyttw==","signatures":[{"sig":"MEYCIQCMaxEADmiMI2Yo2RNVdRk30wqZg6ZMzwB7ox/tFFmGhQIhAItYm5Fln5bkDDXk1Luc/rlH3/s4CAYSQaxyUR5TkDsb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34953},"type":"module","gitHead":"c33bb66a5eb7876bd213c457953dbe36e8e7aca0","_npmUser":{"name":"benvargas","email":"ben@vargas.com"},"repository":{"url":"git+https://github.com/ben-vargas/pi-packages.git","type":"git","directory":"packages/pi-exa-mcp"},"_npmVersion":"11.7.0","description":"Exa MCP tools for pi - Web search and code context via Exa's Model Context Protocol","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"peerDependencies":{"@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-exa-mcp_1.0.1_1769940801704_0.8075865496668957","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@benvargas/pi-exa-mcp","version":"1.1.0","keywords":["pi","pi-package","pi-extension","pi-coding-agent","ai","exa","mcp","web-search","code-search","model-context-protocol"],"author":{"name":"Ben Vargas"},"license":"MIT","_id":"@benvargas/pi-exa-mcp@1.1.0","maintainers":[{"name":"benvargas","email":"ben@vargas.com"}],"homepage":"https://github.com/ben-vargas/pi-packages/tree/main/packages/pi-exa-mcp#readme","bugs":{"url":"https://github.com/ben-vargas/pi-packages/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"50cd1cb382c35b4c52b25b2809fdfc3daf71363e","tarball":"https://registry.npmjs.org/@benvargas/pi-exa-mcp/-/pi-exa-mcp-1.1.0.tgz","fileCount":4,"integrity":"sha512-QMXdViDk4z2YCPwWOxQjzmOpBAd06R+q7ChXV3Dp+8cokw2K8WUfnlTmi0tZkf41aDnwvwAp3wrTzEGQni2xkQ==","signatures":[{"sig":"MEUCIQDlofVrKi8LzO8m3mIlD95zqxY+buawP3RZshZ0RAvOFwIgRxrIbT8wx4VR/mXPllTw+5fgk05Z/qJcXW2kkrSClz8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34953},"type":"module","gitHead":"e8ded2392e7f34117d697e18433cdc0886055978","_npmUser":{"name":"benvargas","email":"ben@vargas.com"},"repository":{"url":"git+https://github.com/ben-vargas/pi-packages.git","type":"git","directory":"packages/pi-exa-mcp"},"_npmVersion":"11.7.0","description":"Exa MCP tools for pi - Web search and code context via Exa's Model Context Protocol","directories":{},"_nodeVersion":"24.11.0","_hasShrinkwrap":false,"peerDependencies":{"@sinclair/typebox":"*","@mariozechner/pi-ai":"*","@mariozechner/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-exa-mcp_1.1.0_1770006111648_0.24651654346015262","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@benvargas/pi-exa-mcp","version":"1.1.1","keywords":["pi","pi-package","pi-extension","pi-coding-agent","ai","exa","mcp","web-search","code-search","model-context-protocol"],"author":{"name":"Ben Vargas"},"license":"MIT","_id":"@benvargas/pi-exa-mcp@1.1.1","maintainers":[{"name":"benvargas","email":"ben@vargas.com"}],"homepage":"https://github.com/ben-vargas/pi-packages/tree/main/packages/pi-exa-mcp#readme","bugs":{"url":"https://github.com/ben-vargas/pi-packages/issues"},"pi":{"extensions":["./extensions/index.ts"]},"dist":{"shasum":"0cf3b87b77a77c31192eec10ff519cbea1628b83","tarball":"https://registry.npmjs.org/@benvargas/pi-exa-mcp/-/pi-exa-mcp-1.1.1.tgz","fileCount":4,"integrity":"sha512-/HboIMVxfcvhAluy6hw7SRJ1p2budpY2hE40jJYuAtzVCqbDddnGpG4GgG094hRW5TaqOIS+pD5FiiDqPbmqPA==","signatures":[{"sig":"MEUCIQDrnF7Le+9t8NyvUnNUPIxag2ty3mzave8yBY/8ZPnzvgIgOuC/IqaKn1VpbgcdYEDNOVIBTvNRyKxnSfDz0lUCxPM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35074},"type":"module","gitHead":"d9370e9ba085ca27e91b113b6df06559f9aa7ba5","_npmUser":{"name":"benvargas","email":"ben@vargas.com"},"repository":{"url":"git+https://github.com/ben-vargas/pi-packages.git","type":"git","directory":"packages/pi-exa-mcp"},"_npmVersion":"11.9.0","description":"Exa MCP tools for pi - Web search and code context via Exa's Model Context Protocol","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":">=0.74.0","@earendil-works/pi-coding-agent":">=0.74.0"},"_npmOperationalInternal":{"tmp":"tmp/pi-exa-mcp_1.1.1_1779738046171_0.41797009439908717","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@benvargas/pi-exa-mcp","version":"1.2.0","description":"Exa MCP tools for pi - Web search and code context via Exa's Model Context Protocol","keywords":["pi","pi-package","pi-extension","pi-coding-agent","ai","exa","mcp","web-search","code-search","model-context-protocol"],"type":"module","pi":{"extensions":["./extensions/index.ts"]},"peerDependencies":{"@earendil-works/pi-ai":">=0.74.0","@earendil-works/pi-coding-agent":">=0.74.0","typebox":"*"},"repository":{"type":"git","url":"git+https://github.com/ben-vargas/pi-packages.git","directory":"packages/pi-exa-mcp"},"author":{"name":"Ben Vargas"},"license":"MIT","bugs":{"url":"https://github.com/ben-vargas/pi-packages/issues"},"homepage":"https://github.com/ben-vargas/pi-packages/tree/main/packages/pi-exa-mcp#readme","gitHead":"fc0a6ac2bfb712f8e4d0fbf72857fff629837619","_id":"@benvargas/pi-exa-mcp@1.2.0","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-sJdofmGFAXhYoa0K7qVib/sA32FeVpTn3aFmK6slE8KpaG4m24PQxfQjGFJxUyo2nfeoRlqhL1hboTP0MqEVHA==","shasum":"9a95349290de9229e81b4bfbe9daa11af996c5cd","tarball":"https://registry.npmjs.org/@benvargas/pi-exa-mcp/-/pi-exa-mcp-1.2.0.tgz","fileCount":4,"unpackedSize":36609,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEQLeUHRwk3DT6lm9nwPofgfXaq04DGLDenkfZ+euln0AiBtUChRv3SDM+UY17R67SEobtTeb5Vptkb7pTSaNifeog=="}]},"_npmUser":{"name":"benvargas","email":"ben@vargas.com"},"directories":{},"maintainers":[{"name":"benvargas","email":"ben@vargas.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-exa-mcp_1.2.0_1786047032514_0.565184613650537"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-30T17:10:09.994Z","modified":"2026-08-06T20:10:32.798Z","1.0.0":"2026-01-30T17:10:10.287Z","1.0.1":"2026-02-01T10:13:21.849Z","1.1.0":"2026-02-02T04:21:51.789Z","1.1.1":"2026-05-25T19:40:46.310Z","1.2.0":"2026-08-06T20:10:32.650Z"},"bugs":{"url":"https://github.com/ben-vargas/pi-packages/issues"},"author":{"name":"Ben Vargas"},"license":"MIT","homepage":"https://github.com/ben-vargas/pi-packages/tree/main/packages/pi-exa-mcp#readme","keywords":["pi","pi-package","pi-extension","pi-coding-agent","ai","exa","mcp","web-search","code-search","model-context-protocol"],"repository":{"type":"git","url":"git+https://github.com/ben-vargas/pi-packages.git","directory":"packages/pi-exa-mcp"},"description":"Exa MCP tools for pi - Web search and code context via Exa's Model Context Protocol","maintainers":[{"name":"benvargas","email":"ben@vargas.com"}],"readme":"# @benvargas/pi-exa-mcp\n\nExa MCP tools for [pi](https://github.com/badlogic/pi-mono), the AI coding agent.\n\nProvides real-time web search and code/documentation search via [Exa's](https://exa.ai) Model Context Protocol (MCP) over HTTP.\n\n## Features\n\n- **Web search** (`web_search_exa`) — Real-time web search for up-to-date information\n- **Code context** (`get_code_context_exa`) — Search code and documentation for API usage and examples\n- **Configurable limits** — Client-side truncation with configurable max bytes/lines\n- **Multiple config sources** — JSON config, environment variables, or CLI flags\n- **MCP protocol** — Full JSON-RPC 2.0 and SSE support for streaming responses\n\n## Installation\n\n```bash\npi install npm:@benvargas/pi-exa-mcp\n```\n\nOr try without installing:\n\n```bash\npi -e npm:@benvargas/pi-exa-mcp\n```\n\n## Setup\n\nNo API key is required for basic usage. For higher rate limits, configure your Exa API key using one of these methods:\n\n### Option 1: Environment Variable\n\n```bash\nexport EXA_API_KEY=\"your_exa_api_key\"\npi\n```\n\n### Option 2: JSON Config\n\nCreate `~/.pi/agent/extensions/exa-mcp.json` (or `$PI_CODING_AGENT_DIR/extensions/exa-mcp.json` if you relocate pi's agent directory):\n\n```json\n{\n  \"url\": \"https://mcp.exa.ai/mcp\",\n  \"apiKey\": \"your_exa_api_key\",\n  \"tools\": [\"web_search_exa\", \"get_code_context_exa\"],\n  \"timeoutMs\": 30000,\n  \"maxBytes\": 51200,\n  \"maxLines\": 2000\n}\n```\n\n### Option 3: CLI Flags\n\n```bash\npi --exa-mcp-api-key=your_exa_api_key\n```\n\n## Usage\n\nOnce installed, the AI will automatically use these tools when appropriate:\n\n```\n\"Search the web for the latest React features\"\n\"Find code examples for Rust error handling\"\n\"Look up the TypeScript 5.0 release notes\"\n```\n\n### Tools\n\n#### web_search_exa\n\nReal-time web search for up-to-date information.\n\n| Parameter | Description | Default |\n|-----------|-------------|---------|\n| `query` | Search query (required) | — |\n| `numResults` | Number of results to return | — |\n| `type` | Search mode: `auto`, `fast`, `deep` | — |\n| `livecrawl` | Live crawl behavior: `fallback`, `preferred` | — |\n| `contextMaxCharacters` | Max characters in extracted content | — |\n| `piMaxBytes` | Client-side max bytes override | — |\n| `piMaxLines` | Client-side max lines override | — |\n\n#### get_code_context_exa\n\nSearch code and documentation for API usage and examples.\n\n| Parameter | Description | Default |\n|-----------|-------------|---------|\n| `query` | Code search query (required) | — |\n| `tokensNum` | Token budget for retrieved context (1000-50000) | — |\n| `piMaxBytes` | Client-side max bytes override | — |\n| `piMaxLines` | Client-side max lines override | — |\n\n## Configuration\n\n### Config File Locations\n\nConfig files are loaded in order (first match wins):\n\n1. Path from `--exa-mcp-config` flag\n2. Path from `EXA_MCP_CONFIG` environment variable\n3. `./.pi/extensions/exa-mcp.json` (project-level)\n4. `<agent-dir>/extensions/exa-mcp.json` (global) — the agent directory is resolved the same way pi resolves it: `PI_CODING_AGENT_DIR` if set, otherwise `~/.pi/agent`\n5. `~/.pi/agent/extensions/exa-mcp.json` (legacy fallback) — only consulted when `PI_CODING_AGENT_DIR` relocates the agent directory, so configs created at the previously documented home path keep working\n\nIf none exist, the extension writes a default config to the global path with `apiKey` set to `null`.\n\n### Config File Format\n\n```json\n{\n  \"url\": \"https://mcp.exa.ai/mcp\",\n  \"tools\": [\"web_search_exa\", \"get_code_context_exa\"],\n  \"apiKey\": null,\n  \"timeoutMs\": 30000,\n  \"protocolVersion\": \"2025-06-18\",\n  \"maxBytes\": 51200,\n  \"maxLines\": 2000\n}\n```\n\n### Environment Variables\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `EXA_MCP_URL` | MCP endpoint URL | `https://mcp.exa.ai/mcp` |\n| `EXA_MCP_TOOLS` | Comma-separated tool list | — |\n| `EXA_API_KEY` / `EXA_MCP_API_KEY` | Exa API key | — |\n| `EXA_MCP_TIMEOUT_MS` | Request timeout (ms) | `30000` |\n| `EXA_MCP_PROTOCOL_VERSION` | MCP protocol version | `2025-06-18` |\n| `EXA_MCP_MAX_BYTES` | Max bytes to keep from output | `51200` |\n| `EXA_MCP_MAX_LINES` | Max lines to keep from output | `2000` |\n| `EXA_MCP_CONFIG` | Path to JSON config file | — |\n\n### CLI Flags\n\n| Flag | Description |\n|------|-------------|\n| `--exa-mcp-url` | Override the Exa MCP endpoint |\n| `--exa-mcp-tools` | Comma-separated MCP tool list |\n| `--exa-mcp-api-key` | Exa API key |\n| `--exa-mcp-timeout-ms` | HTTP timeout (milliseconds) |\n| `--exa-mcp-protocol` | MCP protocol version |\n| `--exa-mcp-config` | Path to JSON config file |\n| `--exa-mcp-max-bytes` | Max bytes to keep from output |\n| `--exa-mcp-max-lines` | Max lines to keep from output |\n\n## Output Truncation\n\nTool output is automatically truncated to prevent context window overflow:\n\n- **Default limits**: 51200 bytes and 2000 lines\n- **Client overrides**: Models can request higher limits via `piMaxBytes`/`piMaxLines` (clamped to configured max)\n- **Temp files**: When truncated, full output is saved to a temp file with the path included in the response\n\n## Requirements\n\n- pi v0.74.0 or later\n- Optional: Exa API key for higher rate limits\n\n## Uninstall\n\n```bash\npi remove npm:@benvargas/pi-exa-mcp\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}