{
  "markdown": "# mcp-repo-mapper\n\n<!-- mcp-name: io.github.LovRanRan/mcp-repo-mapper -->\n\n`mcp-repo-mapper` is a FastMCP server for deterministic repository structure mapping. It scans a local codebase and exposes file structure, language counts, Python import dependencies, circular dependency detection, framework detection, entry point candidates, and a cached repo structure resource.\n\nThe server does not call an LLM and does not execute user code. It is intended as a grounded structure tool for codebase onboarding agents such as `wayfinder`.\n\n## Codebase Onboarding Stack\n\n`mcp-repo-mapper` is the structure layer in a three-server MCP tool stack for Project 6 `wayfinder`, a codebase onboarding agent.\n\n- [`mcp-repo-mapper`](https://github.com/LovRanRan/mcp-repo-mapper) maps repository structure, languages, entry points, framework evidence, and Python dependency edges.\n- [`mcp-ast-explorer`](https://github.com/LovRanRan/mcp-ast-explorer) provides symbol-grounded Python definition, signature, reference, call-chain, and class-hierarchy lookups.\n- [`mcp-test-runner`](https://github.com/LovRanRan/mcp-test-runner) runs local pytest/Jest checks and coverage summaries so agent claims can be verified against execution.\n\nIn `wayfinder`, this server feeds the architecture-mapping step before semantic explanation or test verification begins.\n\n## Features\n\n- `scan_repo(path)` returns a typed repo scan with files, language breakdown, entry points, Python dependency graph, and detected frameworks.\n- `find_circular_deps(path)` returns circular dependencies from the static dependency graph.\n- `language_breakdown(path)` returns language counts by file count and bytes.\n- `detect_framework(path)` detects FastAPI, Flask, Django, Express, and Spring using registry-based markers.\n- `find_entry_points(path)` returns ranked entry point candidates such as Python mains, FastAPI apps, package start scripts, Dockerfiles, and Node indexes.\n- `repo-structure://{url_hash}` returns a cached JSON scan result after a tool call has populated the cache.\n\n## Install\n\n```bash\nuv sync --extra dev\n```\n\nRun the server locally:\n\n```bash\nuv run mcp-repo-mapper\n```\n\n## Development\n\n```bash\nuv run ruff check .\nuv run mypy\nuv run pytest\n```\n\n## Resource Flow\n\nResource reads use a cache populated by tool calls:\n\n1. Call `scan_repo(path)` or another scan-backed tool.\n2. Compute the repo hash with the same path.\n3. Read `repo-structure://{url_hash}`.\n\nThe public resource uses `repo-structure://...` because URL schemes cannot contain underscores.\n\n## Scope And Limitations\n\n- Dependency graph support is currently Python-only and based on static `ast` parsing.\n- Import graph resolution only records modules that exist inside the scanned repo.\n- Framework detection is heuristic marker matching, not a full build-system analysis.\n- The resource cache is in-memory and process-local.\n- The server scans local filesystem paths only.\n\n## License\n\nMIT\n",
  "bytes": 2928,
  "sha": "28aa3e891130d678eb3d691c1b402e3c091e31decbbd765f0f14d76e893c2d05",
  "repo_slug": "lovranran/mcp-repo-mapper",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_lovranran_mcp_repo_mapper_7d78b885/readme"
}