
How to add PageMap to Cursor
Converts raw HTML into compressed, AI-readable page maps (97% token reduction) so agents can read and act on any web page. Paste the config into ~/.cursor/mcp.json and restart Cursor.
Last updated June 14, 2026 · 32★ · stdio · no auth
Cursor config for PageMap
pip install retio-pagemap{
"mcpServers": {
"pagemap": {
"command": "uvx",
"args": [
"retio-pagemap"
]
}
}
}Requires `uv` (the Python package runner). Install it from https://docs.astral.sh/uv/ if `uvx` is not found.
Setup steps
- 1Open Cursor → Settings → MCP → Add new MCP server (or edit ~/.cursor/mcp.json directly).
- 2Paste the PageMap config below into the "mcpServers" object.
- 3Fill in placeholder secrets, then save.
- 4Cursor reloads MCP servers automatically — check Settings → MCP for a green status dot.
- 5Ask Cursor to use one of PageMap's tools to confirm it's connected.
Before you start
- Python 3.11+
- Chromium (auto-installed on first use; can be installed manually via 'playwright install chromium')
- uvx (or pip) to launch the server
What PageMap can do in Cursor
get_page_mapStart here. Navigate to a URL and get a full structured map with numbered refs for every interactive element.
execute_actionClick, type, select, or hover using a ref number from the last get_page_map.
fill_formFill multiple form fields in one call — more efficient than sequential execute_action calls.
scroll_pageScroll to reveal lazy-loaded content before calling get_page_map again.
wait_forWait for dynamic content to appear (e.g. after a search or form submit).
take_screenshotCapture the visual state when the PageMap alone is ambiguous.
get_page_stateCheck the current URL and title without a full rebuild. Use after actions that may navigate.
navigate_backGo back one step in browser history.
Security
Treats all web content as untrusted: SSRF defense, prompt-injection defense (content boundaries, role-prefix stripping, suspicious-content flagging), RFC 9309 robots.txt compliance (opt out with --ignore-robots), DOM/HTML/response size guards, and per-session cookie/storage isolation. Private/local IPs are blocked by default — enable with --allow-local or PAGEMAP_ALLOW_LOCAL=1. Users are responsible for complying with target sites' terms of service and applicable law.
PageMap + Cursor FAQ
Where is the Cursor config file?
Cursor reads MCP servers from ~/.cursor/mcp.json. Paste the PageMap config there under the "mcpServers" key and restart the client.
Is PageMap safe to use with Cursor?
Treats all web content as untrusted: SSRF defense, prompt-injection defense (content boundaries, role-prefix stripping, suspicious-content flagging), RFC 9309 robots.txt compliance (opt out with --ignore-robots), DOM/HTML/response size guards, and per-session cookie/storage isolation. Private/local IPs are blocked by default — enable with --allow-local or PAGEMAP_ALLOW_LOCAL=1. Users are responsible for complying with target sites' terms of service and applicable law.
How is PageMap different from Playwright MCP, Firecrawl, or Jina Reader?
PageMap produces a far smaller, interaction-capable map (2-5K tokens per page) and supports unlimited multi-page sessions, while Playwright MCP dumps large accessibility snapshots that overflow context after 2-3 pages and Firecrawl/Jina are read-only markdown converters.
Do I need to install a browser manually?
No. Chromium is auto-installed on first use. If it isn't found, run 'pip install retio-pagemap && playwright install chromium' to install it manually.
Can it run over HTTP instead of STDIO?
Yes. The default is local STDIO, but a Docker image runs an HTTP server: 'docker run -p 8000:8000 retio1001/pagemap --transport http' (multi-arch amd64/arm64 images on Docker Hub and GHCR).