{"_id":"@daanrongen/lightpanda-mcp","_rev":"5-809461bb36937df75d89bea0ec236822","name":"@daanrongen/lightpanda-mcp","dist-tags":{"latest":"1.1.5"},"versions":{"1.0.1":{"name":"@daanrongen/lightpanda-mcp","version":"1.0.1","keywords":["mcp","lightpanda","headless-browser","model-context-protocol","effect"],"license":"MIT","_id":"@daanrongen/lightpanda-mcp@1.0.1","maintainers":[{"name":"daanrongen","email":"hi@daan.website"}],"homepage":"https://github.com/daanrongen/lightpanda-mcp#readme","bugs":{"url":"https://github.com/daanrongen/lightpanda-mcp/issues"},"bin":{"lightpanda-mcp":"dist/main.js"},"dist":{"shasum":"a345216df64842cbb3e688355ea23f3c127b04e2","tarball":"https://registry.npmjs.org/@daanrongen/lightpanda-mcp/-/lightpanda-mcp-1.0.1.tgz","fileCount":3,"integrity":"sha512-Rx98AVpjmYKxSkW2fZcTDWBjbIlipI0zr+fVu+DnnB7kKC6VQxOLG0dJtU0I5gUlnDqisVUw22goNGITeYSrVQ==","signatures":[{"sig":"MEUCIQCln4VzZYaiqRkayKub9Gxmf1/KFrtIfBULdiJ9b7FS1wIgBgnfYsVdMAyK2v+LYvzsj6XysLhr7NkafujZV4yVOjU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4798478},"main":"./dist/main.js","type":"module","engines":{"bun":">=1.0.0"},"gitHead":"2f6ff1a4dd5af2a5980b81f1002ae8fdafd4525e","scripts":{"dev":"bun --watch src/main.ts","lint":"biome check .","test":"bun test","build":"bun build src/main.ts --outfile dist/main.js --target bun","format":"biome format --write .","inspect":"DANGEROUSLY_OMIT_AUTH=true mcp-inspector bun src/main.ts","typecheck":"tsc -p tsconfig.check.json","postversion":"git push --follow-tags","release:major":"npm version major","release:minor":"npm version minor","release:patch":"npm version patch"},"_npmUser":{"name":"daanrongen","email":"hi@daan.website"},"repository":{"url":"git+https://github.com/daanrongen/lightpanda-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server for Lightpanda — navigate pages, extract content, click elements, fill forms, take screenshots, and evaluate JavaScript over stdio","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^3.24.1","effect":"^3.21.0","puppeteer-core":"^22.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.1.5","bun-types":"latest","typescript":"^5.8.3","@biomejs/biome":"^2.4.12"},"_npmOperationalInternal":{"tmp":"tmp/lightpanda-mcp_1.0.1_1776443649653_0.15819092147748637","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@daanrongen/lightpanda-mcp","version":"1.1.0","keywords":["mcp","lightpanda","headless-browser","model-context-protocol","effect"],"license":"MIT","_id":"@daanrongen/lightpanda-mcp@1.1.0","maintainers":[{"name":"daanrongen","email":"hi@daan.website"}],"homepage":"https://github.com/daanrongen/lightpanda-mcp#readme","bugs":{"url":"https://github.com/daanrongen/lightpanda-mcp/issues"},"bin":{"lightpanda-mcp":"dist/main.js"},"dist":{"shasum":"ce5a9bc1215e7c76e6943af5db6c45295d2fe348","tarball":"https://registry.npmjs.org/@daanrongen/lightpanda-mcp/-/lightpanda-mcp-1.1.0.tgz","fileCount":3,"integrity":"sha512-6+1ilIC4rGLehtiWM1Nvg9yz6EH+52CIkYofNQugBPOujisd13KPdYT+jBY2UJU1hakE3f7MV8u6ZTBDXhZ4YA==","signatures":[{"sig":"MEUCIQDc0ncpG85obG0FGtWJTJ1ZEJSdMALXHAtj+tQQ6wtdWwIgVBVTfmgQD+TujhFps7KAKKBZRCfA0maL7TWsj+UEl3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4804977},"main":"./dist/main.js","type":"module","engines":{"bun":">=1.0.0"},"gitHead":"67d38a5e2fe10457d021fd5bbb8dbb9e5c63140f","scripts":{"dev":"bun --watch src/main.ts","lint":"biome check .","test":"bun test","build":"bun build src/main.ts --outfile dist/main.js --target bun","format":"biome format --write .","inspect":"DANGEROUSLY_OMIT_AUTH=true mcp-inspector bun src/main.ts","typecheck":"tsc -p tsconfig.check.json","postversion":"git push --follow-tags","release:major":"npm version major","release:minor":"npm version minor","release:patch":"npm version patch"},"_npmUser":{"name":"daanrongen","email":"hi@daan.website"},"repository":{"url":"git+https://github.com/daanrongen/lightpanda-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server for Lightpanda — navigate pages, extract content, click elements, fill forms, take screenshots, and evaluate JavaScript over stdio","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^3.24.1","effect":"^3.21.0","puppeteer-core":"^22.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.1.5","bun-types":"latest","typescript":"^5.8.3","@biomejs/biome":"^2.4.12"},"_npmOperationalInternal":{"tmp":"tmp/lightpanda-mcp_1.1.0_1776553411703_0.008295438370056418","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@daanrongen/lightpanda-mcp","version":"1.1.1","keywords":["mcp","lightpanda","headless-browser","model-context-protocol","effect"],"license":"MIT","_id":"@daanrongen/lightpanda-mcp@1.1.1","maintainers":[{"name":"daanrongen","email":"hi@daan.website"}],"homepage":"https://github.com/daanrongen/lightpanda-mcp#readme","bugs":{"url":"https://github.com/daanrongen/lightpanda-mcp/issues"},"bin":{"lightpanda-mcp":"dist/main.js"},"dist":{"shasum":"28bd908d13c043970fb0a195b0a87b92522a2596","tarball":"https://registry.npmjs.org/@daanrongen/lightpanda-mcp/-/lightpanda-mcp-1.1.1.tgz","fileCount":3,"integrity":"sha512-EHk0OdKVUcszifZ3cXgLYeM/OBLrZvyQlZes/zU4472yP0vi+s8Q+hIMAfPwy4fxxQeSfXqPQy12U3pDQbrhaQ==","signatures":[{"sig":"MEUCIQDv4a3aPpFOZhWwQiF7Q/FpJr93jO+ELRpHa+5gIvsGsAIgEjXnzpFUC9V0ZnLWD207FfiZmzRbPBpZbaxxHxGK1Mo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4805267},"main":"./dist/main.js","type":"module","engines":{"bun":">=1.0.0"},"gitHead":"5eaa6a9889fdb17b27ff8237c38e0fb5e2aaa8c8","scripts":{"dev":"bun --watch src/main.ts","lint":"biome check .","test":"bun test","build":"bun build src/main.ts --outfile dist/main.js --target bun","format":"biome format --write .","inspect":"DANGEROUSLY_OMIT_AUTH=true mcp-inspector bun src/main.ts","typecheck":"tsc -p tsconfig.check.json","postversion":"git push --follow-tags","release:major":"npm version major","release:minor":"npm version minor","release:patch":"npm version patch"},"_npmUser":{"name":"daanrongen","email":"hi@daan.website"},"repository":{"url":"git+https://github.com/daanrongen/lightpanda-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server for Lightpanda — navigate pages, extract content, click elements, fill forms, take screenshots, and evaluate JavaScript over stdio","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^3.24.1","effect":"^3.21.0","puppeteer-core":"^22.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.1.5","bun-types":"latest","typescript":"^5.8.3","@biomejs/biome":"^2.4.12"},"_npmOperationalInternal":{"tmp":"tmp/lightpanda-mcp_1.1.1_1776553943605_0.2560201114450449","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@daanrongen/lightpanda-mcp","version":"1.1.3","keywords":["mcp","lightpanda","headless-browser","model-context-protocol","effect"],"license":"MIT","_id":"@daanrongen/lightpanda-mcp@1.1.3","maintainers":[{"name":"daanrongen","email":"hi@daan.website"}],"homepage":"https://github.com/daanrongen/lightpanda-mcp#readme","bugs":{"url":"https://github.com/daanrongen/lightpanda-mcp/issues"},"bin":{"lightpanda-mcp":"dist/main.js"},"dist":{"shasum":"e86b440eda32486c4507dc806a0c4e8a5eef2e31","tarball":"https://registry.npmjs.org/@daanrongen/lightpanda-mcp/-/lightpanda-mcp-1.1.3.tgz","fileCount":3,"integrity":"sha512-eBsapPuZWUNOMjnolol90dg8hknSIpjcrMH7JQVo/4YjFeY/xL7VIWODdij1z6WBCsHUb9d2XJK0bOSacAjC4Q==","signatures":[{"sig":"MEUCIQC4m/kyn1ASeMXJXjo7FFbhSwtX8NeRlyPnDmBp+hEzmAIgKpo26A5+yvi1vGzRJeFDtr0vYS3PWd2DnEWtJNxwOgA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@daanrongen%2flightpanda-mcp@1.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4807159},"main":"./dist/main.js","type":"module","_from":"file:daanrongen-lightpanda-mcp-1.1.3.tgz","engines":{"bun":">=1.0.0"},"scripts":{"dev":"bun --watch src/main.ts","lint":"biome check .","test":"bun test","build":"bun build src/main.ts --outfile dist/main.js --target bun","format":"biome format --write .","inspect":"DANGEROUSLY_OMIT_AUTH=true mcp-inspector bun src/main.ts","typecheck":"tsc -p tsconfig.check.json","postversion":"git push --follow-tags","release:major":"npm version major","release:minor":"npm version minor","release:patch":"npm version patch"},"_npmUser":{"name":"daanrongen","email":"hi@daan.website"},"_resolved":"/home/runner/work/lightpanda-mcp/lightpanda-mcp/daanrongen-lightpanda-mcp-1.1.3.tgz","_integrity":"sha512-eBsapPuZWUNOMjnolol90dg8hknSIpjcrMH7JQVo/4YjFeY/xL7VIWODdij1z6WBCsHUb9d2XJK0bOSacAjC4Q==","repository":{"url":"git+https://github.com/daanrongen/lightpanda-mcp.git","type":"git"},"_npmVersion":"10.9.7","description":"MCP server for Lightpanda — navigate pages, extract content, click elements, fill forms, take screenshots, and evaluate JavaScript over stdio","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.24.1","effect":"^3.21.0","puppeteer-core":"^22.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lefthook":"^2.1.5","bun-types":"latest","typescript":"^5.8.3","@biomejs/biome":"^2.4.12"},"_npmOperationalInternal":{"tmp":"tmp/lightpanda-mcp_1.1.3_1776718437363_0.030944715902731623","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@daanrongen/lightpanda-mcp","version":"1.1.5","description":"MCP server for Lightpanda — navigate pages, extract content, click elements, fill forms, take screenshots, and evaluate JavaScript over stdio","type":"module","bin":{"lightpanda-mcp":"dist/main.js"},"main":"./dist/main.js","scripts":{"dev":"bun --watch src/main.ts","inspect":"DANGEROUSLY_OMIT_AUTH=true mcp-inspector bun src/main.ts","build":"bun build src/main.ts --outfile dist/main.js --target bun","typecheck":"tsc -p tsconfig.check.json","test":"bun test","lint":"biome check .","format":"biome format --write .","release:patch":"npm version patch","release:minor":"npm version minor","release:major":"npm version major","postversion":"git push --follow-tags"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/daanrongen/lightpanda-mcp.git"},"keywords":["mcp","lightpanda","headless-browser","model-context-protocol","effect"],"engines":{"bun":">=1.0.0"},"publishConfig":{"access":"public"},"dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","effect":"^3.21.0","puppeteer-core":"^22.0.0","zod":"^3.24.1"},"devDependencies":{"@biomejs/biome":"^2.4.12","bun-types":"latest","lefthook":"^2.1.5","typescript":"^5.8.3"},"_id":"@daanrongen/lightpanda-mcp@1.1.5","bugs":{"url":"https://github.com/daanrongen/lightpanda-mcp/issues"},"homepage":"https://github.com/daanrongen/lightpanda-mcp#readme","_integrity":"sha512-uJsHEPIyCwkBR8co6AuOcdKUESHZ06HfecyBvUL7moPzlBiOitGjEMD8DmeVZ4jteCMqdmGPFFWzFmOAYf6dng==","_resolved":"/home/runner/work/lightpanda-mcp/lightpanda-mcp/daanrongen-lightpanda-mcp-1.1.5.tgz","_from":"file:daanrongen-lightpanda-mcp-1.1.5.tgz","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-uJsHEPIyCwkBR8co6AuOcdKUESHZ06HfecyBvUL7moPzlBiOitGjEMD8DmeVZ4jteCMqdmGPFFWzFmOAYf6dng==","shasum":"6ec357f6abbbec708d347e5234b649ed3bcecbc8","tarball":"https://registry.npmjs.org/@daanrongen/lightpanda-mcp/-/lightpanda-mcp-1.1.5.tgz","fileCount":3,"unpackedSize":4807159,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@daanrongen%2flightpanda-mcp@1.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDKlDZ9QT64slKcNuWnVeEEDsues2td53oPWfNTS7nQcQIgKzbarKvizkUKVPXcFvNx46N6fBYWM+KYgcfh9Up2iQo="}]},"_npmUser":{"name":"daanrongen","email":"hi@daan.website"},"directories":{},"maintainers":[{"name":"daanrongen","email":"hi@daan.website"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lightpanda-mcp_1.1.5_1776719197869_0.5358260481465837"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-17T16:34:09.568Z","modified":"2026-04-20T21:06:38.357Z","1.0.1":"2026-04-17T16:34:09.896Z","1.1.0":"2026-04-18T23:03:31.913Z","1.1.1":"2026-04-18T23:12:23.794Z","1.1.3":"2026-04-20T20:53:57.560Z","1.1.5":"2026-04-20T21:06:38.072Z"},"bugs":{"url":"https://github.com/daanrongen/lightpanda-mcp/issues"},"license":"MIT","homepage":"https://github.com/daanrongen/lightpanda-mcp#readme","keywords":["mcp","lightpanda","headless-browser","model-context-protocol","effect"],"repository":{"type":"git","url":"git+https://github.com/daanrongen/lightpanda-mcp.git"},"description":"MCP server for Lightpanda — navigate pages, extract content, click elements, fill forms, take screenshots, and evaluate JavaScript over stdio","maintainers":[{"name":"daanrongen","email":"hi@daan.website"}],"readme":"# lightpanda-mcp\n\nMCP server for [Lightpanda](https://lightpanda.io/) — navigate pages, extract content, click elements, fill forms, take screenshots, and evaluate JavaScript over stdio.\n\n## Installation\n\n```bash\nbunx @daanrongen/lightpanda-mcp\n```\n\n## Tools (6 total)\n\n| Domain     | Tools                                                            | Coverage                                                      |\n| ---------- | ---------------------------------------------------------------- | ------------------------------------------------------------- |\n| **Browse** | `navigate`, `get_content`, `click`, `fill`, `screenshot`, `evaluate` | Page navigation, content extraction, interaction, JS evaluation |\n\n## Configuration\n\n| Variable          | Required | Description                                                    |\n| ----------------- | -------- | -------------------------------------------------------------- |\n| `LIGHTPANDA_URL`  | Yes      | Lightpanda CDP WebSocket URL (e.g. `ws://localhost:9222`)      |\n\n## Setup\n\n### Claude Desktop\n\nEdit `~/Library/Application Support/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"lightpanda\": {\n      \"type\": \"stdio\",\n      \"command\": \"bunx\",\n      \"args\": [\"@daanrongen/lightpanda-mcp\"],\n      \"env\": {\n        \"LIGHTPANDA_URL\": \"ws://localhost:9222\"\n      }\n    }\n  }\n}\n```\n\n### Claude Code CLI\n\n```bash\nclaude mcp add lightpanda -e LIGHTPANDA_URL=ws://localhost:9222 -- bunx @daanrongen/lightpanda-mcp\n```\n\n## Development\n\n```bash\nbun install\nbun run dev        # run with --watch\nbun test           # run test suite\nbun run lint       # lint and check formatting\nbun run typecheck  # type check\nbun run build      # bundle to dist/main.js\nbun run inspect    # open MCP Inspector in browser\n```\n\n## Inspecting locally\n\n`bun run inspect` launches the [MCP Inspector](https://github.com/modelcontextprotocol/inspector) against the local build:\n\n```bash\nbun run build && bun run inspect\n```\n\nThis opens the Inspector UI in your browser where you can call any tool interactively and inspect request/response shapes.\n\n## Architecture\n\n```\nsrc/\n├── config.ts                        # Effect Config — LIGHTPANDA_URL\n├── main.ts                          # Entry point — ManagedRuntime + StdioServerTransport\n├── domain/\n│   ├── LightpandaClient.ts          # Context.Tag service interface\n│   ├── errors.ts                    # LightpandaError, NavigationError, EvalError\n│   └── models.ts                    # Schema.Class models (PageContent, Link)\n├── infra/\n│   ├── LightpandaClientLive.ts      # Layer.scoped — connects via puppeteer-core CDP\n│   └── LightpandaClientTest.ts      # In-memory Ref-based test adapter\n└── mcp/\n    ├── server.ts                    # McpServer wired to ManagedRuntime\n    ├── utils.ts                     # runTool, formatSuccess, formatError\n    └── tools/\n        └── browse.ts                # navigate, get_content, click, fill, screenshot, evaluate\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}