Reported issues for ast-impact-mapper-mcp
Pod holds 16 of 16 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.
Back to ast-impact-mapper-mcp.
Most discussed
feat: add analyze_api_surface_mutation tool
Problem
The current impact analysis treats all changes equally. A developer renaming a local variable (internal refactor) and a developer adding a required parameter to an exported function (breaking API change) both produce the same "affected" verdict. The agent cannot distinguish severity, prioritize test execution, or correctly label PRs.
What the agent gains
Classifies each change as internal_refactor or breaking_api_change. Enables the agent to:
- Flag PRs that break downstream
Read the thread · 2026-05-18 · closed · 0 comments
feat: add differentiate_type_impact tool
Problem
If module B changes only a TypeAliasDeclaration or InterfaceDeclaration, module A's compiled JavaScript is unchanged — TypeScript types are erased at compile time. But the current BFS marks A as affected regardless, triggering redundant test runs.
In a large codebase with heavy type refactoring (e.g. migrating to stricter types, adding generics), this causes massive unnecessary CI execution.
What the agent gains
Prunes entire test branches when the change is type-only AND t
Read the thread · 2026-05-18 · closed · 0 comments
feat: surface circular dependency chains in get_dependency_graph
Problem
The BFS traversal already skips visited nodes to prevent infinite recursion on circular imports — but it silently discards the cycle information. The agent never learns that circular dependencies exist, even though the traversal data is right there.
Circular dependencies are a meaningful code quality signal:
- Tight architectural coupling
- Unpredictable module initialization order at runtime
- Memory overhead during resolution
- DI framework failures (Angular, NestJS, InversifyJS)
Read the thread · 2026-05-18 · closed · 0 comments
fix: get_affected_tests_by_branch misses renamed/moved files
Problem
get_affected_tests_by_branch uses plain git diff to find changed files. When a developer moves src/utils/helper.ts → src/shared/helper.ts, git reports it as a full delete + add. The dependency graph loses continuity — historical import connections to the old path are severed, and the mapper incorrectly concludes that all dependents are "no longer relevant."
Additionally, whitespace-only changes (linter auto-formatting, prettier --write) trigger unnecessary full test runs.
Read the thread · 2026-05-18 · closed · 0 comments
feat: add identify_unreachable_modules tool
Problem
Large codebases accumulate dead files — TypeScript sources that are never imported by anything. These are safe to delete but hard to find manually. The current server maps forward impact (what does this change affect?) but never maps isolation (what is never referenced by anything?).
What the agent gains
Safe dead code candidates with zero incoming import edges in the full project graph. Enables automated repository hygiene without manual auditing.
Implementation
- Bui
Read the thread · 2026-05-18 · closed · 0 comments
feat: add mermaid diagram output to get_dependency_graph
Problem
JSON import lists are hard to read for deeply nested dependency chains. A visual graph would make it immediately obvious which files are central to the architecture.
Solution
Add optional format: "json" | "mermaid" parameter to get_dependency_graph.
When format = "mermaid", return a Mermaid flowchart:
graph TD
A[src/fixtures/base-fixture.ts] --> B[src/pages/google-home-page.ts]
A --> C[src/pages/google-results-page.ts]
D[tests/google-pom.spec.ts] --> A
Age
Read the thread · 2026-05-15 · closed · 0 comments
feat: add get_affected_tests_by_branch tool
Problem
get_affected_tests requires the caller to supply changed files manually. In practice, the agent needs to run git diff --name-only main first, parse the output, then call the tool. It would be cleaner if the server did this itself.
Solution
New tool get_affected_tests_by_branch — project_root, base_branch? (default main)
Internally runs git diff --name-only <base_branch>...HEAD via Node child_process.execSync, parses the output through parseGitDiff, and cal
Read the thread · 2026-05-15 · closed · 0 comments
feat: support tests directories as test file locations
Problem
isTestFile only matches *.spec.ts / *.test.ts patterns. Projects using Jest conventions store tests in __tests__/ directories with plain .ts filenames — these are completely invisible to the current graph.
Solution
Extend isTestFile to also match any file inside a __tests__ directory:
function isTestFile(filePath: string): boolean {
return /\.(spec|test)\.(ts|tsx|js|jsx)$/.test(filePath)
|| /\/__tests__\//.test(filePath);
}
Read the thread · 2026-05-15 · closed · 0 comments
Most recent
perf: cache dependency graphs per project root
Problem
buildForwardGraph and buildReverseGraph traverse all source files on every tool call. On projects with 1000+ files this adds significant latency — the graphs are rebuilt even when nothing has changed.
Solution
Cache forwardGraph and reverseGraph alongside the Project in memory. Invalidate both when refresh_project is called.
const graphCache = new Map<string, { forward: Map<...>, reverse: Map<...> }>();
First call builds and caches; subsequent calls reuse
Read the thread · 2026-05-15 · closed · 0 comments
docs: add README worked example with real JSON output
Problem
The README describes the tools but shows no actual output. New users can't tell if the tool is working correctly or what to expect.
Task
Add a "Example output" section to the README showing:
- A sample project structure (5-6 files, 2 tests)
get_affected_testscall + real JSON responseexplain_impactcall + import chain output
Keep it minimal — enough to understand the format without reading the code.
Read the thread · 2026-05-15 · closed · 0 comments
feat: add get_test_summary tool — project-wide test coverage overview
Problem
There's no way to get a bird's-eye view of the project's test structure. An agent has to call multiple tools to understand the overall state.
Tool design
get_test_summary — project_root
{
"total_source_files": 48,
"total_test_files": 23,
"covered_source_files": 36,
"coverage_rate": 0.75,
"most_imported_files": [
{ "file": "src/utils/auth.ts", "imported_by_count": 14 },
{ "file": "src/api/client.ts", "imported_by_count": 11 }
],
"deepest_imp
[Read the thread](https://github.com/vola-trebla/ast-impact-mapper-mcp/issues/6) · 2026-05-15 · closed · 0 comments
### feat: JavaScript and JSX support
## Problem
The current implementation only resolves `.ts` and `.tsx` imports. Projects with mixed JS/TS codebases (common in repos migrating to TypeScript) will have broken dependency graphs — JS files won't appear as nodes and their test files will be missed.
## Task
- Add `.js` and `.jsx` to the file glob when no tsconfig is found
- Ensure ts-morph resolves `.js` imports correctly (requires `allowJs: true` in the Project config)
- Test against a mixed JS/TS project
- Document the limitation
[Read the thread](https://github.com/vola-trebla/ast-impact-mapper-mcp/issues/5) · 2026-05-15 · closed · 0 comments
### feat: add refresh_project tool for cache invalidation
## Problem
The project AST is cached in memory per `project_root` on first call and never invalidated. If source files change while the MCP server is running, the graph becomes stale and returns wrong results.
## Proposed change
Add a **`refresh_project`** tool — `project_root`
Drops the cached `Project` instance for that root so the next call re-parses from disk.
```json
{ "project_root": "/my-project", "message": "Cache cleared. Next call will re-parse the project." }
Also consider:
Read the thread · 2026-05-15 · closed · 0 comments
feat: accept raw git diff output in get_affected_tests
Problem
Right now get_affected_tests requires changed_files[] — a clean array of file paths. But in practice the agent gets git diff --name-only output: a raw newline-separated string with relative paths, sometimes including deleted files or renamed files.
Proposed change
Add an optional git_diff string input to get_affected_tests:
{
"project_root": "/my-project",
"git_diff": "src/utils/auth.ts\nsrc/api/userService.ts\nREADME.md"
}
The tool parses the string,
Read the thread · 2026-05-15 · closed · 0 comments
feat: add get_coverage_gaps tool — find source files with no test coverage
Problem
You can't improve test coverage if you don't know where the gaps are. Right now there's no way to ask "which source files have zero tests that import them?"
Tool design
get_coverage_gaps — project_root, source_dirs?, limit?
Returns source files that are not reachable from any test file through the import graph.
{
"uncovered_files": [
"src/utils/formatDate.ts",
"src/api/paymentService.ts"
],
"total_source_files": 48,
"total_uncovered": 12,
[Read the thread](https://github.com/vola-trebla/ast-impact-mapper-mcp/issues/2) · 2026-05-15 · closed · 0 comments
### smoke test: verify all 3 tools against a real Playwright project
## Problem
The tools are implemented but never validated against a real TypeScript/Playwright project. We need to confirm the AST graph is built correctly and results are accurate before expanding further.
## Task
- Point the MCP server at `sample-playwright-project` (or any real TS project)
- Call all 3 tools manually and verify output makes sense
- Fix any resolution bugs (path aliases, index files, node_modules leaking into graph)
- Document any edge cases found
[Read the thread](https://github.com/vola-trebla/ast-impact-mapper-mcp/issues/1) · 2026-05-15 · closed · 0 comments
The remaining reports are on [the project's issue tracker](https://github.com/vola-trebla/ast-impact-mapper-mcp/issues).