# 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](/mcp/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](https://github.com/vola-trebla/ast-impact-mapper-mcp/issues/19) · 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](https://github.com/vola-trebla/ast-impact-mapper-mcp/issues/18) · 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](https://github.com/vola-trebla/ast-impact-mapper-mcp/issues/17) · 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](https://github.com/vola-trebla/ast-impact-mapper-mcp/issues/16) · 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

1. Bui

[Read the thread](https://github.com/vola-trebla/ast-impact-mapper-mcp/issues/15) · 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](https://github.com/vola-trebla/ast-impact-mapper-mcp/issues/13) · 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](https://github.com/vola-trebla/ast-impact-mapper-mcp/issues/12) · 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:

```ts
function isTestFile(filePath: string): boolean {
  return /\.(spec|test)\.(ts|tsx|js|jsx)$/.test(filePath)
    || /\/__tests__\//.test(filePath);
}
```

[Read the thread](https://github.com/vola-trebla/ast-impact-mapper-mcp/issues/11) · 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.

```ts
const graphCache = new Map<string, { forward: Map<...>, reverse: Map<...> }>();
```

First call builds and caches; subsequent calls reuse

[Read the thread](https://github.com/vola-trebla/ast-impact-mapper-mcp/issues/10) · 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:

1. A sample project structure (5-6 files, 2 tests)
2. `get_affected_tests` call + real JSON response
3. `explain_impact` call + import chain output

Keep it minimal — enough to understand the format without reading the code.

[Read the thread](https://github.com/vola-trebla/ast-impact-mapper-mcp/issues/7) · 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`

```json
{
  "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](https://github.com/vola-trebla/ast-impact-mapper-mcp/issues/4) · 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`:

```json
{
  "project_root": "/my-project",
  "git_diff": "src/utils/auth.ts\nsrc/api/userService.ts\nREADME.md"
}
```

The tool parses the string,

[Read the thread](https://github.com/vola-trebla/ast-impact-mapper-mcp/issues/3) · 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.

```json
{
  "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).
