Servidor DependencyMCP
Un servidor de Protocolo de Contexto de Modelo (MCP) que analiza bases de código para generar gráficos de dependencias e información arquitectónica. Este servidor ayuda a comprender la estructura del código, las dependencias y los patrones arquitectónicos en múltiples lenguajes de programación.
Características
Compatibilidad con varios idiomas : analiza dependencias en TypeScript, JavaScript, C#, Python y más
Generación de gráficos de dependencia : crea gráficos de dependencia detallados en formato JSON o DOT
Análisis arquitectónico : infiere capas arquitectónicas y las valida según las reglas
Metadatos de archivo : extrae importaciones, exportaciones y otros metadatos de los archivos de origen
Sistema de puntuación : evalúa el código base en función de las reglas y patrones arquitectónicos
Related MCP server: Code Explainer MCP
Instalación
Clonar el repositorio
Instalar dependencias:
npm installConstruir el proyecto:
npm run buildConfiguración
Agregue a su archivo de configuración de MCP (generalmente ubicado en ~/.config/cline/mcp_settings.json o equivalente):
json { mcpServers: { \DependencyMCP: { \command: \node, \args: [\path/to/dependency-mcp/dist/index.js], \env: { \MAX_LINES_TO_READ: \1000, \CACHE_DIR: \path/to/dependency-mcp/.dependency-cache, \CACHE_TTL: \3600000 } } }Variables de entorno:
MAX_LINES_TO_READ: Número máximo de líneas a leer de cada archivo (predeterminado: 1000)
CACHE_DIR: Directorio para almacenar archivos de caché de dependencia (predeterminado: .dependency-cache)
CACHE_TTL: Tiempo de vida de la caché en milisegundos (valor predeterminado: 1 hora = 3600000)
Herramientas disponibles
analizar_dependencias
Analiza las dependencias en una base de código y genera un gráfico de dependencia.
const result = await client.callTool("DependencyMCP", "analyze_dependencies", {
path: "/path/to/project",
excludePatterns: ["node_modules", "dist"], // optional
maxDepth: 10, // optional
fileTypes: [".ts", ".js", ".cs"] // optional
});obtener_gráfico_de_dependencias
Obtiene el gráfico de dependencia para una base de código en formato JSON o DOT.
const result = await client.callTool("DependencyMCP", "get_dependency_graph", {
path: "/path/to/project",
format: "dot" // or "json" (default)
});obtener metadatos del archivo
Obtiene metadatos detallados sobre un archivo específico.
const result = await client.callTool("DependencyMCP", "get_file_metadata", {
path: "/path/to/file.ts"
});obtener_puntuación_arquitectónica
Califica el código base según reglas y patrones arquitectónicos.
const result = await client.callTool("DependencyMCP", "get_architectural_score", {
path: "/path/to/project",
rules: [
{
pattern: "src/domain/**/*",
allowed: ["src/domain/**/*"],
forbidden: ["src/infrastructure/**/*"]
}
]
});Ejemplo de salida
Gráfico de dependencia (JSON)
{
"src/index.ts": {
"path": "src/index.ts",
"imports": ["./utils", "./services/parser"],
"exports": ["analyze", "generateGraph"],
"namespaces": [],
"architecturalLayer": "Infrastructure",
"dependencies": ["src/utils.ts", "src/services/parser.ts"],
"dependents": []
}
}Puntuación arquitectónica
{
"score": 85,
"violations": [
"src/domain/user.ts -> src/infrastructure/database.ts violates architectural rules"
],
"details": "Score starts at 100 and deducts 5 points per violation"
}Desarrollo
El servidor está construido con TypeScript y utiliza:
Zod para la validación de esquemas
diff para comparación de archivos
minimatch para coincidencia de patrones globulares
Estructura del proyecto
dependency-mcp/
├── src/
│ └── index.mts # Main server implementation
├── package.json
├── tsconfig.json
└── README.mdAñadiendo compatibilidad con nuevos idiomas
Para agregar soporte para un nuevo lenguaje de programación:
Agregar extensiones de archivo a la matriz
fileTypespredeterminadaImplementar patrones de expresiones regulares específicos del lenguaje en
parseFileImportsyparseFileExportsAgregue cualquier patrón arquitectónico específico del idioma a
inferArchitecturalLayer
Licencia
Instituto Tecnológico de Massachusetts (MIT)