依赖MCP服务器
一种模型上下文协议(MCP)服务器,用于分析代码库以生成依赖关系图和架构见解。此服务器有助于理解跨多种编程语言的代码结构、依赖关系和架构模式。
特性
- 多语言支持:分析TypeScript、JavaScript、C#、Python等中的依赖关系
- 依赖图生成:以JSON或DOT格式创建详细的依赖关系图
- 架构分析:推断架构层并根据规则进行验证
- 文件元数据:从源文件中提取导入、导出和其他元数据
- 评分系统:根据架构规则和模式评估代码库
安装
- 克隆存储库
- 安装依赖项:
npm install- 构建项目:
npm run build配置
添加到MCP设置文件(通常位于~/.config/cline/MCP_settings.json或等效文件中):
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 } } }环境变量:
- MAX_LINES_TO_RED:从每个文件读取的最大行数(默认值:1000)
- CACHE_DIR:存储依赖关系缓存文件的目录(默认:.rependency CACHE)
- CACHE_TTL:缓存生存时间(毫秒)(默认值:1小时=3600000)
可用工具
分析依赖关系
分析代码库中的依赖关系并生成依赖关系图。
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
});get_dependence_graph
获取JSON或DOT格式的代码库的依赖关系图。
const result = await client.callTool("DependencyMCP", "get_dependency_graph", {
path: "/path/to/project",
format: "dot" // or "json" (default)
});获取_文件_元数据
获取特定文件的详细元数据。
const result = await client.callTool("DependencyMCP", "get_file_metadata", {
path: "/path/to/file.ts"
});get_architectural_score
根据架构规则和模式对代码库进行评分。
const result = await client.callTool("DependencyMCP", "get_architectural_score", {
path: "/path/to/project",
rules: [
{
pattern: "src/domain/**/*",
allowed: ["src/domain/**/*"],
forbidden: ["src/infrastructure/**/*"]
}
]
});输出示例
依赖关系图(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": []
}
}建筑评分
{
"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"
}发展
服务器使用TypeScript构建,并使用:
- Zod用于模式验证
- 用于文件比较的diff
- glob模式匹配的极小匹配
项目结构
dependency-mcp/
├── src/
│ └── index.mts # Main server implementation
├── package.json
├── tsconfig.json
└── README.md添加对新语言的支持
要添加对新编程语言的支持,请执行以下操作:
- 将文件扩展名添加到默认值
fileTypes数组 - 在中实现特定语言的正则表达式模式
parseFileImports和parseFileExports - 将任何特定于语言的架构模式添加到
inferArchitecturalLayer
许可证
麻省理工学院
