karate-graph-mcp
🚀 Анализатор графов функций Karate
Мощный инструмент MCP (Model Context Protocol) для анализа файлов функций (feature files) фреймворка Karate и создания интерактивных графов зависимостей.
📋 Содержание
Related MCP server: GID MCP Server
✨ Возможности
Основные функции
🔍 Парсинг файлов функций - Разбор файлов функций Karate с использованием синтаксиса Gherkin
🎯 Анализ зависимостей - Извлечение и анализ зависимостей (рабочие процессы, API, страницы, БД)
📊 Интерактивная визуализация - Создание красивых HTML-графов с легендой
🎫 Интеграция с Jira - Извлечение и отслеживание тегов Jira (@PROJ-123)
🔄 Анализ влияния - Определение затронутых тест-кейсов при изменении компонентов
📈 Поддержка нескольких проектов - Управление и анализ нескольких проектов
💾 Экспорт/Импорт - Экспорт графов в форматы JSON/GraphML
⚡ Оптимизация производительности - Быстрый анализ с использованием кэширования и индексов
Функции визуализации
🎨 Цветовая кодировка узлов по типу (Тест, Рабочий процесс, API, Страница, База данных)
🔍 Интерактивные подсказки с метаданными (путь к файлу, номера строк, теги Jira)
🖱️ Клик для выделения связей и зависимостей
📊 Легенда в правом верхнем углу с пояснением цветов и фигур
🔄 Физическая симуляция для автоматической компоновки
🎯 Представление влияния с выделением измененных компонентов и затронутых тестов
🚀 Быстрый старт
1. Установка зависимостей
pip install -e .
pip install pyvis # For visualization2. Запуск демо
# Set UTF-8 encoding (Windows)
$env:PYTHONIOENCODING="utf-8"
# Run large project demo
python test_large_project.py3. Просмотр результатов
cd output
start ecommerce-platform_full.html📦 Установка
Предварительные требования
Python 3.8 или выше
Менеджер пакетов pip
Установка из исходного кода
# Clone repository
git clone <repository-url>
cd karate-feature-graph-analyzer
# Install dependencies
pip install -e .
# Install visualization library
pip install pyvis
# Verify installation
pytest tests/ -vЗависимости
Основные зависимости (устанавливаются автоматически):
networkx- Операции с графамиhypothesis- Тестирование на основе свойствpydantic- Валидация данных
Дополнительные зависимости:
pyvis- Интерактивные визуализации
💻 Использование
Базовое использование
from karate_graph_analyzer.mcp_interface.mcp_tool import KarateGraphAnalyzerTool
# Initialize tool
tool = KarateGraphAnalyzerTool()
# Register project
tool.register_project(
name="my-project",
root_path="/path/to/karate/project",
feature_file_patterns=["**/*.feature"]
)
# Analyze project
analysis = tool.analyze_project("my-project")
print(f"Found {analysis['statistics']['total_nodes']} nodes")
# Query dependencies
deps = tool.query_dependencies("tc_0001", transitive=True)
print(f"Found {deps['count']} dependencies")
# Impact analysis
impact = tool.impact_analysis("api_0001")
print(f"Affected: {impact['total_count']} test cases")
# Export graph
export = tool.export_graph("my-project", format="json")
with open("graph.json", "w") as f:
f.write(export['data'])Визуализация
from karate_graph_analyzer.visualization.graph_visualizer import GraphVisualizer
# Get graph
graph = tool.graphs["my-project"]
# Create visualizer
visualizer = GraphVisualizer(graph)
# Render full graph
visualizer.render("output/graph.html", height="900px")
# Render impact view
visualizer.render_impact_view(
changed_component_id="api_0001",
affected_test_case_ids=["tc_0001", "tc_0002"],
output_path="output/impact.html"
)Командная строка (через скрипт)
# Analyze large project
python test_large_project.py
# Output will be in output/ directory:
# - ecommerce-platform_full.html (full graph)
# - ecommerce-platform_impact.html (impact view)
# - ecommerce-platform_graph.json (graph data)
# - LARGE_PROJECT_ANALYSIS_REPORT.md (detailed report)📁 Структура проекта
karate-feature-graph-analyzer/
├── src/karate_graph_analyzer/
│ ├── models.py # Data models
│ ├── parser/ # Feature file parsing
│ │ └── feature_parser.py
│ ├── graph/ # Graph construction
│ │ └── graph_builder.py
│ ├── analyzer/ # Dependency analysis
│ │ └── dependency_analyzer.py
│ ├── mcp_interface/ # MCP protocol
│ │ └── mcp_tool.py
│ ├── storage/ # Project registry
│ │ └── project_registry.py
│ ├── cache/ # AST caching
│ │ └── cache_manager.py
│ ├── visualization/ # Graph visualization
│ │ └── graph_visualizer.py
│ └── logging_config.py # Logging setup
│
├── tests/
│ ├── unit/ # 306 unit tests
│ ├── integration/ # Integration tests
│ └── fixtures/ # Test data
│
├── output/ # Generated files
│ ├── ecommerce-platform_full.html
│ ├── ecommerce-platform_impact.html
│ ├── ecommerce-platform_graph.json
│ ├── LARGE_PROJECT_ANALYSIS_REPORT.md
│ └── README.md
│
├── test_project_demo/ # Small demo project
├── test_project_large/ # Large demo project (e-commerce)
├── examples/ # Usage examples
├── docs/ # Documentation
│ ├── API.md
│ └── jira_tag_extraction.md
│
├── test_large_project.py # Demo script
├── pyproject.toml # Project config
├── pytest.ini # Test config
└── README.md # This file📚 Документация
Основная документация
Документация API - Полный справочник API для всех функций MCP
Извлечение тегов Jira - Как извлекаются теги Jira
Отчет об анализе - Детальный анализ демо-проекта
Руководство по выводу - Как использовать созданные визуализации
Спецификации
Требования - Функциональные требования
Дизайн - Архитектура и дизайн
Задачи - Задачи по реализации
🎯 Примеры
Пример 1: Анализ демо-проекта
# Run demo
python test_large_project.py
# View results
cd output
start ecommerce-platform_full.htmlЧто вы увидите:
84 узла (73 тест-кейса, 6 рабочих процессов, 3 страницы, 1 API, 1 БД)
26 ребер (зависимостей)
Интерактивный граф с легендой
Цветовая кодировка по типу
Всплывающие подсказки с метаданными при наведении
Пример 2: Анализ влияния
# Find what tests are affected by API change
impact = tool.impact_analysis("api_0001")
print(f"Changed: {impact['changed_component']}")
print(f"Affected: {impact['total_count']} test cases")
for tc in impact['affected_test_cases']:
print(f" - {tc['name']} (depth: {tc['depth']})")
if tc['jira_tags']:
print(f" Jira: {', '.join(tc['jira_tags'])}")Вывод:
Changed: api_0001
Affected: 14 test cases
- Successful login (depth: 1)
Jira: @AUTH-101
- Get user profile (depth: 1)
Jira: @USER-101
...Пример 3: Поиск общих компонентов
# Find reusable components across projects
common = tool.find_common_components(["project1", "project2"])
for comp in common['components']:
print(f"{comp['component_type']}: {comp['identifier']}")
print(f" Used in {comp['usage_count']} projects")
print(f" Projects: {', '.join(comp['projects'])}")🧪 Тестирование
Запуск всех тестов
# Run all tests
pytest tests/ -v
# Run specific test suite
pytest tests/unit/ -v
pytest tests/integration/ -v
# Run with coverage
pytest tests/ --cov=src/karate_graph_analyzer --cov-report=htmlСтатистика тестов
Всего тестов: 306
Пройдено: 306 (100%)
Не пройдено: 0
Пропущено: 1
Покрытие: Полное
Категории тестов
Модульные тесты (tests/unit/) - Тестирование отдельных компонентов
Интеграционные тесты (tests/integration/) - Тестирование взаимодействия компонентов
Тесты свойств (опционально) - Тестирование на основе свойств с помощью Hypothesis
🎨 Руководство по визуализации
Понимание легенды
Когда вы открываете HTML-файл визуализации, посмотрите в правый верхний угол, чтобы увидеть легенду:
📊 Legend
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🟢 Test Case - Scenario hoặc test
🔵 Workflow - Reusable workflow
🟠 API - API endpoint
🟣 Page - Page object
🔴 Database - Database operation
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
💡 Tip: Hover để xem chi tiết
🖱️ Click để highlight connections
🔍 Scroll để zoom in/outИнтерактивные функции
Наведение - Наведите курсор мыши на узел, чтобы увидеть подсказку с:
Именем узла
Типом узла
Путем к файлу
Номером строки
Тегами Jira
Клик - Нажмите на узел, чтобы выделить:
Выбранный узел
Все связанные узлы
Все соединяющие ребра
Масштабирование - Прокрутите колесо мыши для приближения/отдаления
Панорамирование - Перетащите фон, чтобы перемещаться по графу
Изменение положения - Перетаскивайте узлы, чтобы изменить компоновку
🔧 Конфигурация
Конфигурация парсера
from karate_graph_analyzer.models import ParserConfig
config = ParserConfig(
jira_tag_patterns=[
r'@[A-Z]+-\d+', # @PROJ-123
r'@[a-z]+-\d+', # @proj-123
r'@[A-Z]+_\d+', # @PROJ_123
],
workflow_directories=['workflows', 'common'],
page_object_directories=['pages', 'page-objects'],
variable_patterns=[r'\$\{(\w+)\}'],
api_extraction_rules={
'extract_from_variables': True,
'extract_from_strings': True,
}
)
# Use custom config
tool.register_project(
name="my-project",
root_path="/path/to/project",
parser_config=config
)📊 Ключевые метрики
Производительность
Время анализа: < 1 секунды для 4 файлов
Время запроса: < 10 мс для запросов зависимостей
Анализ влияния: < 50 мс для 6 затронутых тестов
Время экспорта: < 100 мс для 9 узлов
Визуализация: < 1 секунды для отрисовки
Масштабируемость
Протестировано на: 84 узлах, 26 ребрах
Поддерживает: 1000+ узлов (оценочно)
Память: Эффективно с использованием кэширования
Хранилище: Формат JSON, ~500 байт на узел
🤝 Участие в разработке
Вклад приветствуется! Пожалуйста, следуйте этим рекомендациям:
Сделайте форк репозитория
Создайте ветку для функции (
git checkout -b feature/amazing-feature)Зафиксируйте свои изменения (
git commit -m 'Add amazing feature')Отправьте изменения в ветку (
git push origin feature/amazing-feature)Откройте Pull Request
Настройка среды разработки
# Clone your fork
git clone <your-fork-url>
cd karate-feature-graph-analyzer
# Install in development mode
pip install -e ".[dev]"
# Run tests
pytest tests/ -v
# Run linter
flake8 src/
# Format code
black src/📝 Лицензия
Этот проект лицензирован по лицензии MIT - подробности см. в файле LICENSE.
🙏 Благодарности
Karate Framework - За потрясающий фреймворк для BDD-тестирования
NetworkX - За операции с графами
Pyvis - За интерактивные визуализации
Hypothesis - За тестирование на основе свойств
📞 Поддержка
Документация
Примеры
Проблемы
Если вы столкнулись с какими-либо проблемами:
Проверьте документацию
Просмотрите примеры
Откройте issue на GitHub
🎉 Быстрые ссылки
📖 Документация API - Полный справочник API
📊 Отчет об анализе - Детальный анализ
🎨 Визуализации - Созданные графы
🧪 Тесты - Набор тестов
📝 Спецификации - Требования и дизайн
Создано с ❤️ с использованием разработки на основе спецификаций (Spec-Driven Development)
Статус: ✅ Готов к продакшену Версия: 1.0.0 Последнее обновление: 30 апреля 2026 г.
🚀 Удачного анализа!
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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.66119MIT
- AlicenseAqualityDmaintenanceEnables AI to analyze, query, and manage a graph-based representation of software architecture for impact analysis, dependency tracking, and design.20121AGPL 3.0
- FlicenseNot gradedqualityAmaintenanceEnables 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
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).
IaC attack-path auditor: finds internet-to-crown-jewel chains in Terraform/CFN/K8s.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/duyngo91/karate-graph-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server