karate-graph-mcp
🚀 Analizador de Grafos de Características de Karate
Una potente herramienta MCP (Model Context Protocol) para analizar archivos de características del Framework Karate y generar gráficos de dependencia interactivos.
📋 Tabla de Contenidos
Related MCP server: GID MCP Server
✨ Características
Capacidades Principales
🔍 Análisis de Archivos de Características - Analiza archivos de características de Karate con sintaxis Gherkin
🎯 Análisis de Dependencias - Extrae y analiza dependencias (flujos de trabajo, APIs, páginas, BD)
📊 Visualización Interactiva - Genera hermosos gráficos HTML con leyenda
🎫 Integración con Jira - Extrae y rastrea etiquetas de Jira (@PROJ-123)
🔄 Análisis de Impacto - Identifica casos de prueba afectados cuando cambian los componentes
📈 Soporte Multi-Proyecto - Gestiona y analiza múltiples proyectos
💾 Exportación/Importación - Exporta gráficos a formatos JSON/GraphML
⚡ Optimizado para el Rendimiento - Análisis rápido con caché e índices
Características de Visualización
🎨 Nodos codificados por colores según el tipo (Prueba, Flujo de trabajo, API, Página, Base de datos)
🔍 Información sobre herramientas interactiva con metadatos (ruta del archivo, números de línea, etiquetas de Jira)
🖱️ Clic para resaltar conexiones y dependencias
📊 Leyenda en la esquina superior derecha que explica colores y formas
🔄 Simulación física para diseño automático
🎯 Vista de impacto que resalta los componentes modificados y las pruebas afectadas
🚀 Inicio Rápido
1. Instalar Dependencias
pip install -e .
pip install pyvis # For visualization2. Ejecutar Demo
# Set UTF-8 encoding (Windows)
$env:PYTHONIOENCODING="utf-8"
# Run large project demo
python test_large_project.py3. Ver Resultados
cd output
start ecommerce-platform_full.html📦 Instalación
Requisitos Previos
Python 3.8 o superior
Gestor de paquetes pip
Instalar desde el Código Fuente
# 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/ -vDependencias
Dependencias principales (instaladas automáticamente):
networkx- Operaciones de grafoshypothesis- Pruebas basadas en propiedadespydantic- Validación de datos
Dependencias opcionales:
pyvis- Visualizaciones interactivas
💻 Uso
Uso Básico
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'])Visualización
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"
)Línea de Comandos (vía Script)
# 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)📁 Estructura del Proyecto
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📚 Documentación
Documentación Principal
Documentación de la API - Referencia completa de la API para todas las funciones MCP
Extracción de Etiquetas de Jira - Cómo se extraen las etiquetas de Jira
Informe de Análisis - Análisis detallado del proyecto de demostración
Guía de Salida - Cómo utilizar las visualizaciones generadas
Especificaciones
Requisitos - Requisitos funcionales
Diseño - Arquitectura y diseño
Tareas - Tareas de implementación
🎯 Ejemplos
Ejemplo 1: Analizar Proyecto de Demostración
# Run demo
python test_large_project.py
# View results
cd output
start ecommerce-platform_full.htmlLo que verás:
84 nodos (73 casos de prueba, 6 flujos de trabajo, 3 páginas, 1 API, 1 BD)
26 aristas (dependencias)
Gráfico interactivo con leyenda
Codificado por colores según el tipo
Información sobre herramientas al pasar el ratón con metadatos
Ejemplo 2: Análisis de Impacto
# 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'])}")Salida:
Changed: api_0001
Affected: 14 test cases
- Successful login (depth: 1)
Jira: @AUTH-101
- Get user profile (depth: 1)
Jira: @USER-101
...Ejemplo 3: Encontrar Componentes Comunes
# 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'])}")🧪 Pruebas
Ejecutar Todas las Pruebas
# 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=htmlEstadísticas de Pruebas
Total de Pruebas: 306
Pasadas: 306 (100%)
Fallidas: 0
Omitidas: 1
Cobertura: Integral
Categorías de Pruebas
Pruebas Unitarias (tests/unit/) - Prueba componentes individuales
Pruebas de Integración (tests/integration/) - Prueba interacciones entre componentes
Pruebas de Propiedades (opcional) - Pruebas basadas en propiedades con Hypothesis
🎨 Guía de Visualización
Entendiendo la Leyenda
Cuando abras un archivo HTML de visualización, busca la esquina superior derecha para ver la leyenda:
📊 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/outCaracterísticas Interactivas
Pasar el ratón - Mueve el ratón sobre el nodo para ver la información con:
Nombre del nodo
Tipo de nodo
Ruta del archivo
Número de línea
Etiquetas de Jira
Clic - Haz clic en el nodo para resaltar:
El nodo seleccionado
Todos los nodos conectados
Todas las aristas de conexión
Zoom - Desplázate con la rueda del ratón para acercar/alejar
Panorámica - Arrastra el fondo para moverte
Reposicionar - Arrastra los nodos para reorganizar el diseño
🔧 Configuración
Configuración del Analizador
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
)📊 Métricas Clave
Rendimiento
Tiempo de Análisis: < 1 segundo para 4 archivos
Tiempo de Consulta: < 10ms para consultas de dependencia
Análisis de Impacto: < 50ms para 6 pruebas afectadas
Tiempo de Exportación: < 100ms para 9 nodos
Visualización: < 1 segundo para renderizar
Escalabilidad
Probado con: 84 nodos, 26 aristas
Soporta: 1000+ nodos (estimado)
Memoria: Eficiente con caché
Almacenamiento: Formato JSON, ~500 bytes por nodo
🤝 Contribución
¡Las contribuciones son bienvenidas! Por favor, sigue estas pautas:
Haz un fork del repositorio
Crea una rama de características (
git checkout -b feature/amazing-feature)Confirma tus cambios (
git commit -m 'Add amazing feature')Envía a la rama (
git push origin feature/amazing-feature)Abre una Solicitud de Extracción (Pull Request)
Configuración de Desarrollo
# 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/📝 Licencia
Este proyecto está bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.
🙏 Agradecimientos
Karate Framework - Por el increíble framework de pruebas BDD
NetworkX - Para operaciones de grafos
Pyvis - Para visualizaciones interactivas
Hypothesis - Para pruebas basadas en propiedades
📞 Soporte
Documentación
Ejemplos
Problemas
Si encuentras algún problema:
Revisa la documentación
Revisa los ejemplos
Abre un problema en GitHub
🎉 Enlaces Rápidos
📖 Documentación de la API - Referencia completa de la API
📊 Informe de Análisis - Análisis detallado
🎨 Visualizaciones - Gráficos generados
🧪 Pruebas - Suite de pruebas
📝 Especificaciones - Requisitos y diseño
Creado con ❤️ usando Desarrollo Basado en Especificaciones
Estado: ✅ Listo para Producción Versión: 1.0.0 Última Actualización: 30 de abril de 2026
🚀 ¡Feliz Análisis!
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