karate-graph-mcp
Extracts and tracks Jira issue tags (e.g., @PROJ-123) from Karate feature files for traceability.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@karate-graph-mcp analyze my Karate project and show the dependency graph"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Karate Graph
Karate Graph is an MCP-powered analyzer for Karate Framework projects. It helps AI agents scan .feature files, Java helpers, JavaScript helpers, database usage, execution reports, and dependency graphs so the AI can answer impact, reuse, failure, and visual-report questions with project context.
What It Helps With
Scan Karate projects and build dependency graphs.
Generate interactive visual HTML reports.
Search API, workflow, feature, Java, JavaScript, DB, and reusable helper usage.
Analyze change impact and suggest test cases to rerun.
Inspect failure hotspots, flaky risk, execution history, and debug context.
Help AI understand feature intent, variables, assertions, duplicate steps, and call/read chains.
Related MCP server: codescan
Visual Report Preview
Real project scan:

Clean overview mockup:
Install
Install from PyPI:
pip install -U karate-graphInstall a specific version:
pip install -U karate-graph==0.1.1Verify the package:
python -m pip show karate-graph
python -m karate_graph_analyzer.mcp_server --help
python -m karate_graph_analyzer.mcp_server --versionIf karate-graph-mcp is on your PATH, this also works:
karate-graph-mcp --help
karate-graph-mcp --versionOn Windows, if where karate-graph-mcp cannot find the command, use the python -m MCP config below. That avoids PATH issues.
Configure MCP
Karate Graph is mainly used through an MCP client such as Codex, Claude Desktop, Cursor, or another AI tool that supports MCP.
Recommended Windows Config
Use the full Python path from:
where pythonExample Codex config.toml:
[mcp_servers.karate-graph]
command = "C:\\Program Files\\Python311\\python.exe"
args = ["-m", "karate_graph_analyzer.mcp_server"]
env = { PYTHONIOENCODING = "utf-8" }If your Python is installed somewhere else, replace command with that path.
Generic MCP JSON Config
{
"mcpServers": {
"karate-graph": {
"command": "python",
"args": ["-m", "karate_graph_analyzer.mcp_server"],
"env": {
"PYTHONIOENCODING": "utf-8"
}
}
}
}Local Source Development Config
Only use PYTHONPATH when you want the MCP server to run directly from your local repo source instead of the package installed by pip.
{
"mcpServers": {
"karate-graph": {
"command": "python",
"args": ["-m", "karate_graph_analyzer.mcp_server"],
"env": {
"PYTHONPATH": "E:/Project/auto/karate_graph/src",
"PYTHONIOENCODING": "utf-8"
}
}
}
}After editing MCP config, restart your MCP client.
End-To-End Usage
The normal flow is:
Check MCP server health.
Register the Karate project.
Analyze the project.
Generate the visual report.
Use search, impact, DB, reuse, and failure tools.
1. Health Check
Ask your AI to call:
mcp_health()
mcp_version()
list_projects()Expected result:
MCP server is reachable.
Package version is returned.
Existing registered projects are listed.
2. Register Project
Register a Karate project once:
register_project(
name="karate-core",
root_path="E:/Project/auto/karate-fw/karate-core",
feature_file_patterns=["**/*.feature"]
)Notes:
nameis the project alias used by all other tools.root_pathshould be the absolute path to the Karate project.feature_file_patternscan be omitted; default is usually["**/*.feature"].
For very large projects where real test cases live only under feature(s)/**testcase,
enable strict test-case directory mode. This lets reusable feature packages such as
reuse, shared, helpers, or services stay outside the test-case count without
renaming the project structure:
register_project(
name="karate-core",
root_path="E:/Project/auto/karate-fw/karate-core",
feature_file_patterns=["**/*.feature"],
parser_config={
"strict_test_case_directory_mode": true,
"test_case_directories": ["testcase", "testcases"],
"feature_root_directories": ["feature", "features"],
"default_non_test_feature_type": "COMMON",
"common_directories": ["common", "services", "reuse", "reusable", "shared", "helpers"],
"scan_exclude_directories": [
".git", ".gradle", ".idea", ".karate_cache", "build", "dist",
"node_modules", "out", "output", "reports", "target"
],
"javascript_file_patterns": ["**/*.js"],
"large_project_streaming_scan": true,
"scan_parallel_enabled": true,
"scan_parallel_workers": 8,
"scan_parallel_threshold": 2000,
"incremental_scan_enabled": true,
"scan_store_enabled": true,
"scan_log_every": 2000,
"visualization_large_graph_threshold": 1500,
"visualization_physics_enabled": null,
"visualization_node_limit": 5000,
"visualization_edge_limit": 12000,
"visualization_progressive_enabled": true,
"visualization_chunk_size": 1000,
"visualization_auto_load_chunks": 0,
"cycle_detection_enabled": true,
"cycle_detection_node_limit": 20000,
"ai_context_cache_feature_threshold": 5000,
"ai_context_similarity_pool_limit": 1000,
"ai_context_duplicate_location_limit": 25
}
)When parser_config is provided, Karate Graph still keeps values auto-detected from
karate-config*.js and only applies the explicit overrides above.
For projects with tens of thousands of feature files, prefer narrow feature patterns when possible:
feature_file_patterns=[
"src/test/java/features/**/*testcase/**/*.feature",
"src/test/java/feature/**/*testcase/**/*.feature",
"src/test/java/features/**/reuse/**/*.feature",
"src/test/java/feature/**/reuse/**/*.feature"
]Performance tips:
Use
large_project_streaming_scan=truefor very large repositories. It avoids keeping every parsed feature AST in memory.If not set manually, streaming scan is automatically used when the matched feature count reaches
large_project_streaming_threshold(default20000).Keep
include_structural_nodes=falsefor the first scan. Turn it on only when you need folder/file nodes in the visual graph.Keep
scan_exclude_directoriesupdated with generated folders such astarget,reports,output, andnode_modules.Narrow
javascript_file_patternsif only some JavaScript folders matter, for example["src/test/java/**/*.js", "src/test/resources/**/*.js"].For huge graphs, leave
visualization_physics_enabled=null. Karate Graph will disable physics automatically aftervisualization_large_graph_thresholdnodes.Full 100k-node interactive canvases are not practical in a browser. The report opens with a capped working view (
visualization_node_limit) and, whenvisualization_progressive_enabled=true, writes extra.jschunks next to the HTML so you can load more nodes from the report without freezing the first page load.Keep
visualization_auto_load_chunks=0for very large reports. Use the report'sLoad morebutton to add chunks on demand.Keep
cycle_detection_node_limitenabled. Full cycle enumeration is skipped above the limit because it can dominate scan time on 100k-node graphs.AI feature/DB context tools stream large feature sets instead of caching every parsed AST after
ai_context_cache_feature_threshold.scenario_similarity_mapusesai_context_similarity_pool_limitto avoid O(N²) comparisons across the whole repository.Duplicate step/flow tools count all matches but only keep
ai_context_duplicate_location_limitexample locations per group.Turn on
scan_parallel_enabled=truefor faster parsing on large repos; tune workers withscan_parallel_workers.Keep
incremental_scan_enabled=trueto re-parse only changed files and skip unchanged files when scanning again.Use
get_scan_output(project_name)after analyze to inspectchanged_files,unchanged_files,deleted_files, node/edge counts, and cache usage.
3. Scan / Analyze Project
Build the dependency graph:
analyze_project(
project_name="karate-core",
include_structural_nodes=true
)Use include_structural_nodes=true when you want the visual report to include folder/file structure. Use false for a cleaner graph focused on test and dependency nodes.
4. Generate Visual Report
Create the interactive HTML graph:
visualize_project(
project_name="karate-core",
output_path="E:/Project/auto/karate-fw/karate-core/output/karate_graph.html"
)Open the generated file in your browser:
E:/Project/auto/karate-fw/karate-core/output/karate_graph.htmlThe dashboard supports search by:
test case ID or Jira tag
scenario name
feature path
API path
Java class or method
JavaScript file or function
database table, host, provider, or query keyword
5. Render Execution Report
If you have Karate JSON execution reports, process a report folder:
process_reports_folder(
project_name="karate-core",
directory_path="E:/Project/auto/karate-fw/karate-core/target/karate-reports",
output_path="E:/Project/auto/karate-fw/karate-core/output/execution_graph.html"
)Or render one report file:
render_execution_report(
project_name="karate-core",
report_path="E:/Project/auto/karate-fw/karate-core/target/karate-reports/karate-summary-json.txt",
output_path="E:/Project/auto/karate-fw/karate-core/output/execution_graph.html"
)Execution reports add pass/fail/not-run status, failure hotspots, flaky risk, failure history, and debug context.
Common AI Prompts
After MCP is configured, you can ask your AI:
Register project karate-core at E:/Project/auto/karate-fw/karate-core and analyze it.Generate visual report for karate-core and tell me the output file path.Search all test cases related to order creation.Find reusable random string or random number helpers before adding a new one.If locators/checkout.json changes, which test cases are impacted?Which feature steps are duplicated and safe to refactor?Which test cases touch the orders table?Show the top failure hotspots and prioritize what to fix first.Build an AI debug context pack for this failed node and error message.Tool Groups
Project And Graph
mcp_health()checks MCP server connectivity.mcp_version()returns package version.register_project(name, root_path, feature_file_patterns, parser_config)registers a project.list_projects()lists registered projects.delete_project(name)removes one project from registry.clear_all_projects()resets all registered projects.analyze_project(project_name, include_structural_nodes)scans a project and builds graph data.bulk_analyze()analyzes all registered projects.query_dependencies(component_id, transitive)finds dependencies of a component.impact_analysis(component_id)finds impacted tests and workflows from a changed component.get_subgraph(node_id, radius)returns local graph context around a node.find_path(source_id, target_id)finds dependency paths between nodes.global_search(query)searches all graph nodes.query_node_by_metadata(key, value)searches graph nodes by metadata.
Visual And Export
visualize_project(project_name, output_path)generates an interactive graph HTML file.render_execution_report(project_name, report_path, output_path)generates a graph from one execution report.process_reports_folder(project_name, directory_path, output_path)scans a report folder and generates execution visualization.compare_projects(base_project_name, new_project_name, output_path)creates a diff visualization.merge_projects(project_names, new_project_name)merges multiple project graphs.export_graph(project_name, format)exports graph data asjsonorgraphml.
API, Workflow, Test Case, Page
search_api(project_name, method, path, domain)searches API endpoints.get_api_stats(project_name, keyword)summarizes API usage.search_workflow(project_name, path, scenario_tag, keyword)searches workflow/scenario usage.search_test_case(project_name, jira_tag, name_pattern)searches test cases by ID/tag/name.get_page_stats(project_name, domain)summarizes page/action usage.common_usage_map(project_name, limit)shows commonly reused components.unused_components(project_name, limit)lists unused components.
Java And JavaScript Reuse
search_java_usage(project_name, query, include_methods)finds Java class/method usage and linked tests.search_js_usage(project_name, query, include_functions)finds JavaScript file/function usage and linked tests.javascript_structure_map(project_name, limit)shows JS files, functions, dependencies, and test usage.search_reusable_function(project_name, query, language, limit)searches Java/JS helpers for reuse candidates.
search_reusable_function returns tags, aliases, usage examples, stability score, source location, and related test usage where available.
Smart Retest And Change Impact
change_impact_preview(project_name, changed_paths, limit)previews tests impacted by changed files/components.test_selection_suggestion(project_name, changed_paths, limit)suggests a compact rerun set.get_impact_radius(node_id, depth)shows impact within a graph radius.get_component_importance(project_name)ranks important graph components.
Example:
change_impact_preview(
project_name="karate-core",
changed_paths=["src/test/java/helpers/RandomUtil.java", "locators/checkout.json"],
limit=30
)Feature Understanding
feature_intent_index(project_name, query, limit)summarizes scenario intent and major signals.feature_behavior_map(project_name, feature_path, scenario_tag, scenario_name, node_id, limit)groups preconditions, actions, and expectations.variable_data_flow_trace(project_name, feature_path, scenario_tag, scenario_name, node_id, limit)traces variables from definition to usage.assertion_map(project_name, query, limit)indexes status/match/assert checks.call_read_deep_context(project_name, feature_path, scenario_tag, scenario_name, node_id, max_depth, limit)expands nested call/read chains.ai_feature_context_pack(project_name, feature_path, scenario_tag, scenario_name, node_id, max_call_depth, limit)returns an AI-ready context pack.scenario_similarity_map(project_name, query, limit, top_k)finds similar scenarios.feature_reuse_advisor(project_name, min_group_size, min_flow_length, limit, include_low_signal)finds duplicate steps and repeated flows.similar_common_components(project_name, limit)finds common components with similar dependency shape.
Use include_low_signal=false in feature_reuse_advisor to ignore generic Karate template steps such as When method POST or Then status 201.
Database Understanding
db_query_index(project_name, query, limit, include_components, link_status)indexes DB queries and DB components.search_db_usage(project_name, query, limit, link_status)searches by table, operation, host, dialect, provider, path, or query keyword.db_data_flow_trace(project_name, feature_path, scenario_tag, scenario_name, node_id, limit)traces DB variables, calls, and assertions.db_assertion_map(project_name, query, limit)indexes DB-related assertions.db_impact_preview(project_name, changed_entities, limit)previews impacted tests from changed DB entities.
Supported DB detection includes PostgreSQL, MySQL, MariaDB, Oracle, SQL Server, SQLite, DB2, H2, Redshift, Snowflake, ClickHouse, MongoDB, Redis, DynamoDB, Cassandra/CQL, Elasticsearch/OpenSearch, Neo4j/Cypher, and generic SQL.
Example:
db_impact_preview(
project_name="karate-core",
changed_entities=["orders", "postgres", "jdbc:postgresql"],
limit=30
)Failure Debugging
get_failure_hotspots(project_name)finds components contributing most to failures.top_hotspots(project_name, limit)returns top failure hotspots.prioritize_fix_queue(project_name, limit)ranks fixes by failure impact and risk.flaky_risk(project_name, limit)finds test cases with mixed pass/fail history.search_error_pattern(project_name, pattern, limit)searches failed nodes by error text or fingerprint.get_failure_history(project_name, node_id)returns execution trend and flaky score.get_failure_debug_context(project_name, node_id, error_message, radius, max_historical)builds an AI debug pack.record_fix(project_name, node_id, error_message, solution, description)records a known fix.get_fix_suggestions(project_name, node_id, error_message)finds historical fix suggestions.auto_fix_hint_pack(project_name, node_id, error_message, max_historical)builds a step-by-step fix checklist.
Typical Workflows
Find Existing Helper Before Coding
search_reusable_function(
project_name="karate-core",
query="random string random number uuid",
language="all",
limit=20
)Use the highest-score helper when the tags, aliases, examples, and stability score match your need.
Check What A File Change Impacts
test_selection_suggestion(
project_name="karate-core",
changed_paths=["src/test/java/helpers/RandomUtil.java"],
limit=20
)Use this before running regression to choose a smaller high-signal test set.
Understand A Feature Before Editing
ai_feature_context_pack(
project_name="karate-core",
feature_path="checkout.feature",
max_call_depth=3,
limit=10
)This gives the AI intent, variable flow, assertions, call/read chain, and graph context.
Find Duplicate Feature Steps
feature_reuse_advisor(
project_name="karate-core",
min_group_size=2,
min_flow_length=3,
limit=50,
include_low_signal=false
)Use this to find duplicate steps or repeated flows that can be extracted into reusable feature components.
Debug Failed Regression
process_reports_folder(
project_name="karate-core",
directory_path="E:/Project/auto/karate-fw/karate-core/target/karate-reports"
)Then ask:
top_hotspots(project_name="karate-core", limit=10)
prioritize_fix_queue(project_name="karate-core", limit=10)
get_failure_debug_context(project_name="karate-core", node_id="<failed-node-id>")Troubleshooting
where karate-graph-mcp Cannot Find The Command
The package may be installed correctly, but the Python Scripts folder is missing from PATH.
Use this instead:
python -m karate_graph_analyzer.mcp_server --helpAnd configure MCP with:
[mcp_servers.karate-graph]
command = "C:\\Program Files\\Python311\\python.exe"
args = ["-m", "karate_graph_analyzer.mcp_server"]
env = { PYTHONIOENCODING = "utf-8" }MCP Command Looks Like It Is Hanging
That is normal when running the MCP server without a client:
python -m karate_graph_analyzer.mcp_serverThe server is waiting for MCP stdio messages from the AI client.
Do Not Patch site-packages Manually
Avoid editing installed files under paths like:
C:/Users/<user>/AppData/Roaming/Python/Python311/site-packages/karate_graph_analyzerIf there is a real package bug, fix the source repo, bump the package version, publish a new version, and upgrade with:
pip install -U karate-graph==<new-version>Manual patches are overwritten by pip upgrades and do not help other machines.
Development
Install local development dependencies:
git clone <repository-url>
cd karate-graph
pip install -e ".[dev]"Run tests:
pytestBuild and validate package:
python -m pip install build twine
python -m build
python -m twine check dist/*Publish to TestPyPI before PyPI:
python -m twine upload --repository testpypi dist/*
python -m twine upload dist/*Use a PyPI API token with TWINE_USERNAME=__token__.
Project Structure
karate-graph/
|-- src/karate_graph_analyzer/
| |-- mcp_server.py
| |-- mcp_interface/
| |-- parser/
| |-- graph/
| |-- services/
| |-- utils/
| `-- visualization/
|-- tests/
`-- pyproject.tomlLicense
MIT
Available Tools
61 toolsai_feature_context_packC
Build AI-ready feature context: intent, variables, assertions, call/read chain, graph context.
Inputs: project_name (required), feature_path, scenario_tag, scenario_name, +3 more. Returns: object
analyze_projectB
Analyze a registered project to build its dependency graph.
Inputs: project_name (required), include_structural_nodes. Returns: object
assertion_mapC
Index status/match/assert steps across feature files.
Inputs: project_name (required), query, limit. Returns: object
auto_fix_hint_packC
Build a step-by-step auto-fix checklist from smart + historical suggestions.
Inputs: project_name (required), node_id (required), error_message (required), max_historical. Returns: object
bulk_analyzeA
Analyze all registered projects at once.
Inputs: no named parameters. Returns: object
call_read_deep_contextC
Return nested call/read context for selected feature scenarios.
Inputs: project_name (required), feature_path, scenario_tag, scenario_name, +3 more. Returns: object
change_impact_previewB
Preset query: preview impacted test cases from changed files/components.
Inputs: project_name (required), changed_paths (required), limit. Returns: object
clear_all_projectsA
Clear all registered projects from the registry and in-memory cache. Useful for resetting the analyzer state.
Inputs: no named parameters. Returns: object
common_usage_mapB
Return reusable components sorted by how many test cases use them.
Inputs: project_name (required), limit. Returns: object
compare_projectsA
Compare two projects and generate a diff visualization report (Added/Removed/Modified).
Inputs: base_project_name (required), new_project_name (required), output_path. Returns: object
db_assertion_mapC
Index DB-related assertions across feature files.
Inputs: project_name (required), query, limit. Returns: object
db_data_flow_traceC
Trace DB-related variable/call/assertion flow in selected scenarios.
Inputs: project_name (required), feature_path, scenario_tag, scenario_name, +2 more. Returns: object
db_impact_previewC
Preview impacted tests from changed DB entities.
Inputs: project_name (required), changed_entities (required), limit. Returns: object
db_query_indexC
Build/search DB query and DB component index.
Inputs: project_name (required), query, limit, include_components, +1 more. Returns: object
delete_projectB
Delete a project from the registry and in-memory cache.
Inputs: name (required). Returns: object
export_graphC
Export the dependency graph to a file format.
Inputs: project_name (required), format. Returns: object
feature_behavior_mapC
Build scenario behavior maps for AI: preconditions, actions, expectations.
Inputs: project_name (required), feature_path, scenario_tag, scenario_name, +2 more. Returns: object
feature_intent_indexC
Build/search scenario intent summaries from feature files.
Inputs: project_name (required), query, limit. Returns: object
feature_reuse_advisorA
Find duplicate feature steps/flows and return AI-safe refactor suggestions.
Inputs: project_name (required), min_group_size, min_flow_length, limit, +1 more. Returns: object
find_pathB
Find all simple paths between two nodes to analyze traceability.
Inputs: source_id (required), target_id (required). Returns: object
flaky_riskB
Preset query: test cases with mixed pass/fail history (flaky risk).
Inputs: project_name (required), limit. Returns: object
get_api_statsC
Get API statistics for an analyzed project.
Inputs: project_name (required), keyword. Returns: object
get_component_importanceC
Get nodes sorted by their architectural importance (huyết mạch).
Inputs: project_name (required). Returns: object
get_failure_debug_contextA
Build an AI-ready debug pack: failure fingerprint, run history, local dependency graph, related hotspots, source snippet, and fix checklist.
Inputs: project_name (required), node_id (required), error_message, radius, +1 more. Returns: object
get_failure_historyB
Return execution history, flaky score, and failure fingerprint trend for a node.
Inputs: project_name (required), node_id (required). Returns: object
get_failure_hotspotsB
Identify components (APIs, Workflows) that contribute most to test failures. Returns a sorted list of hotspots based on failure impact score.
Inputs: project_name (required). Returns: object
get_fix_suggestionsB
Get historical fix suggestions for a component and error pattern.
Inputs: project_name (required), node_id (required), error_message (required). Returns: object
get_impact_radiusB
Analyze impact within a specific radius for AI reasoning. Identifies components that depend on the specified node.
Inputs: node_id (required), depth. Returns: object
get_page_statsB
Get Page statistics for an analyzed project.
Inputs: project_name (required), domain. Returns: object
get_project_healthB
Get an architectural health report (cycles, orphans, complexity).
Inputs: project_name (required). Returns: object
get_scan_outputC
Get latest persistent scan output data for a project.
Inputs: project_name (required). Returns: object
get_subgraphB
Extract a local subgraph for AI context. Provides a concise view of a node and its neighbors.
Inputs: node_id (required), radius. Returns: object
global_searchB
Search across all nodes in all projects using a global keyword.
Inputs: query (required). Returns: object
impact_analysisB
Identify all test cases and workflows affected by a change in this component.
Inputs: component_id (required). Returns: object
javascript_structure_mapC
Return JavaScript files, exported/helper functions, dependencies, and test usage.
Inputs: project_name (required), limit. Returns: object
list_projectsA
List all registered projects and their analysis status.
Inputs: no named parameters. Returns: result
mcp_healthA
Health probe for MCP connectivity and server state.
Inputs: no named parameters. Returns: object
mcp_versionA
Return server and package version metadata.
Inputs: no named parameters. Returns: object
merge_projectsB
Merge multiple projects into one global dependency graph.
Inputs: project_names (required), new_project_name. Returns: object
prioritize_fix_queueB
Preset query: rank failures/components to fix first by impact and risk.
Inputs: project_name (required), limit. Returns: object
process_reports_folderB
Scan a directory for Karate JSON reports, apply them, and generate a visualization. Returns an AI-distilled summary of failures.
Inputs: project_name (required), directory_path (required), output_path. Returns: object
query_dependenciesC
Find all components that the specified component depends on.
Inputs: component_id (required), transitive. Returns: object
query_node_by_metadataA
Search nodes by metadata attributes across all projects. Useful for finding all nodes in a specific 'feature' or 'category'.
Inputs: key (required), value (required). Returns: object
record_fixA
Record a successful fix for a component and error pattern. This helps the AI 'learn' how to fix similar issues in the future.
Inputs: project_name (required), node_id (required), error_message (required), solution (required), +1 more. Returns: object
register_projectB
Register a new Karate project for analysis.
Inputs: name (required), root_path (required), feature_file_patterns, parser_config. Returns: object
render_execution_reportC
Generate an execution report visualization (Living Graph) with Pass/Fail/Not Run status.
Inputs: project_name (required), report_path (required), output_path. Returns: object
scenario_similarity_mapC
Find similar scenarios based on intent keywords for AI reuse and suggestion.
Inputs: project_name (required), query, limit, top_k. Returns: object
search_apiB
Search for API endpoints in an analyzed project.
Inputs: project_name (required), method, path, domain. Returns: object
search_db_usageC
Search DB usage by table/query/operation/host/path keywords.
Inputs: project_name (required), query (required), limit, link_status. Returns: object
search_error_patternA
Search failed nodes by error text, fingerprint, or failed-step pattern.
Inputs: project_name (required), pattern (required), limit. Returns: object
search_java_usageB
Search Java class/method usage and the test cases that call them.
Inputs: project_name (required), query (required), include_methods, limit. Returns: object
search_js_usageC
Search JavaScript file/function usage and the test cases that call them.
Inputs: project_name (required), query, include_functions, limit. Returns: object
search_reusable_functionA
Search Java/JavaScript source for reusable helper functions before adding new code.
Inputs: project_name (required), query (required), language, limit. Returns: object
search_test_caseB
Search for test cases by Jira ID or name.
Inputs: project_name (required), jira_tag, name_pattern. Returns: object
search_workflowC
Search for workflows or specific scenarios.
Inputs: project_name (required), path, scenario_tag, keyword. Returns: object
similar_common_componentsC
Find common/scenario/action components that share the same dependency shape.
Inputs: project_name (required), limit. Returns: object
test_selection_suggestionB
Preset query: suggest smallest high-signal test subset to rerun after change.
Inputs: project_name (required), changed_paths (required), limit. Returns: object
top_hotspotsC
Preset query: top failure hotspots for a project.
Inputs: project_name (required), limit. Returns: object
unused_componentsC
Preset query: unused components flattened across types.
Inputs: project_name (required), limit. Returns: object
variable_data_flow_traceB
Trace variables in feature scenarios from definition/source to usage.
Inputs: project_name (required), feature_path, scenario_tag, scenario_name, +2 more. Returns: object
visualize_projectC
Generate an interactive HTML visualization for a project.
Inputs: project_name (required), output_path. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 61 tools
Despite the large number of tools, each has a clearly distinct purpose and description, with specific targets like search_api vs search_test_case, and impact_analysis vs change_impact_preview. Overlaps are minimal and descriptions clarify differences.
All tool names follow a consistent verb_noun pattern with underscores, using lowercase throughout. No mixing of styles such as camelCase or different conventions, making the naming predictable and readable.
With 61 tools, the count is extremely high for an MCP server. Even though the domain is broad, the tool surface is overly large and would benefit from consolidation or modularization, as most servers in this ecosystem have fewer than 20 tools.
The tool set covers the full lifecycle of Karate testing analysis: project registration, dependency graph construction, impact analysis, failure debugging, search, presets, and visualization. There are no obvious gaps in the analytical capabilities offered.
Maintenance
Related MCP Connectors
Generate SBOMs, scan vulnerabilities, and analyze dependencies from local projects or Git repos.
AI Agent with Architectural Memory. Impact analysis (free), tests and code from the graph (pro).
Change-impact intelligence for tracing dependencies, stale references and required updates.
AI-powered codebase analysis — call graphs, security, dead code, complexity. 150+ tools.
Related MCP Servers
- AlicenseAqualityDmaintenanceAnalyzes codebases to generate dependency graphs and architectural insights across multiple programming languages, helping developers understand code structure and validate against architectural rules.649 npm20MIT
- FlicenseNot gradedqualityBmaintenanceEnables querying a Neo4j-based code graph for Python projects, providing tools for code structure, call graph, and test coverage analysis.1-
- AlicenseNot gradedqualityDmaintenanceAnalyzes GitHub and local repositories to automatically generate visual architectural diagrams such as dependency graphs, class diagrams, and data flow diagrams.2MIT
- AlicenseAqualityBmaintenanceTurn any .NET test-automation solution into a queryable map in one SQLite file — features, steps, API clients, page objects, and their dependencies. Zero config, no AI, no network, 100% deterministic.113MIT