{"name":"io.github.vola-trebla/ast-impact-mapper-mcp","slug":"vola-trebla-ast-impact-mapper-mcp","title":null,"description":"MCP server that uses TypeScript AST to find which tests are affected by a code change","url":"https://mcp.market/server/vola-trebla-ast-impact-mapper-mcp","rating":null,"grade":"C","score":63,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":6,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-05-21T12:59:02.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/vola-trebla/ast-impact-mapper-mcp","website":null,"version":"0.3.1","remotes":[],"packages":[{"registryType":"npm","identifier":"ast-impact-mapper-mcp","version":"0.3.1","transport":{"type":"stdio"}}],"tools":[{"name":"analyze_api_surface_mutation","description":"Compares a file against its HEAD version and classifies the change as","write_action":false,"price_micros":0,"input_schema":null},{"name":"detect_architectural_cycles","description":"Detects circular import dependencies — A imports B which imports C which imports A.","write_action":false,"price_micros":0,"input_schema":null},{"name":"differentiate_type_impact","description":"Classifies each changed file as type-only or runtime, then splits affected tests into","write_action":false,"price_micros":0,"input_schema":null},{"name":"explain_impact","description":"Finds the exact import chain that connects a changed source file to a test file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_skeleton_view","description":"Generates a token-optimized representation of a source file by stripping function and method bodies, keeping only JSDocs and declarations with line numbers.","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_test_command","description":"Outputs the optimal test execution command for Jest, Vitest, or Playwright based on changed files.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_affected_tests","description":"Given a list of changed source files, returns which test files are affected —","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_affected_tests_by_branch","description":"Runs `git diff --name-only <base_branch>...HEAD` internally and returns affected test files.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_coverage_gaps","description":"Finds source files that are not reachable from any test file through the import graph —","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_dependency_graph","description":"Returns the direct import graph for a specific file:","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_rename_aware_diff","description":"Like get_affected_tests_by_branch, but correctly handles renamed and moved files.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_symbol_dependency_graph","description":"Retrieves a bidirectional or directed dependency graph mapped to individual declarations, functions, and variables.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_test_summary","description":"Returns a bird's-eye view of the project's test structure: coverage rate,","write_action":false,"price_micros":0,"input_schema":null},{"name":"identify_unreachable_modules","description":"Finds source files that are never imported by any other file — dead code candidates safe to delete.","write_action":false,"price_micros":0,"input_schema":null},{"name":"refresh_project","description":"Clears the cached AST for a project root, forcing a full re-parse on the next call.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":63,"grade":"C","scanned_at":"2026-09-27T17:08:16.185Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T17:08:16.172Z","components":{"code":{"score":13,"max":25,"notes":["8 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":8,"max":15,"notes":["last push 129 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"exec.shell-concat","severity":"high","component":"code","title":"Shell command built from a string (injection risk)","evidence":"dist/analyzer.js: …fOutput; try { diffOutput = execSync(`git diff --name-only ${baseBranch}...HEAD`, { cwd: …"}],"inputs":{"packages":[{"registryType":"npm","identifier":"ast-impact-mapper-mcp","version":"0.3.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-05-21T12:06:45.856Z","repositoryUrl":"git+https://github.com/vola-trebla/ast-impact-mapper-mcp.git"}],"repo":{"found":true,"owner":"vola-trebla","repo":"ast-impact-mapper-mcp","archived":false,"pushedAt":"2026-05-21T12:59:02Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/14157914?v=4","ownerCreatedAt":"2015-09-07T06:57:28Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/14157914?v=4&s=128","source":"github"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-05-21T12:59:02.000Z","score":6}}}},"grade_history":[],"reviews":[]}