Project Mapper by PLUT_OS
Runs entirely in this browser tab

See what your AI actually knows.

Point it at a project folder. It reads your AGENTS.md, README, and docs/, traces which source file imports which, finds the MCP servers and skills wired into it, and draws each as its own map you can click through — then export any one of them on its own, or all of it at once.

What to map

…or drag a project folder in here

Your browser does not support the folder-picker API — using the file input fallback instead. Chrome, Edge and other Chromium browsers give the smoothest experience.

No server. No upload. Your project never leaves this browser tab.

Documentation, as a graph

README, AGENTS.md, CLAUDE.md, .cursorrules, everything under docs/ — parsed for headings, a one-line summary, and every link between them. You see the shape of your AI docs, not just a folder listing.

docs/handoff/BOARD.md → links to → AGENTS.md

Every MCP server, found

Reads the configs that actually live inside your project — Claude Code (.mcp.json), Cursor (.cursor/mcp.json), VS Code (.vscode/mcp.json), Gemini CLI (.gemini/settings.json). Windsurf, Zed, Codex and Claude Desktop keep theirs elsewhere on the machine, so they can't show up here.

API_KEY = ••••••

Skills, catalogued

Every SKILL.md under .claude/skills/ and shared-skills/ — name and description, pulled straight from the frontmatter. One list of every capability your AI has been given.

project-onboarder — .claude/skills/

Privacy

Your project never leaves the browser. There is no server-side component and no upload: the folder you pick is read — and, for setup, written — by this tab and nowhere else.

The scan makes no network requests

Not "we don't keep it" — there is nothing to keep. Open devtools, watch the Network tab, and scan a folder: nothing goes out. That is what makes this safe to point at a real project.

Secrets are masked before anything renders

Every env value in an MCP server entry becomes •••••• before it reaches the screen or an export. Only the variable names are shown, so a key sitting in .mcp.json cannot ride along into an exported file.

One honest exception, and it is not your data

This page loads three webfonts from Google on first paint. No project content is involved, but it is an off-origin request, so "nothing leaves the browser, ever" would be too strong a sentence to write. Offline it simply fails and the page falls back to system fonts.