MMI架构分析器
模型上下文协议(MCP)服务器,用于使用Carola Lilienthal的MMI(模块化成熟度指数)框架分析C#项目架构质量。
概述
此MCP服务器提供自动分析。NET/C#项目评估Carola Lilienthal MMI框架中四个关键维度的架构质量:
- 维度2:分层 -验证清洁架构层依赖关系
- 尺寸5:封装 -分析公共类型可见性与内部类型可见性
- 维度8:抽象层次 -检测业务逻辑与技术细节的混合
- 维度9:循环依赖关系 -使用Tarjan算法识别依赖循环
特性
令牌优化报告:紧凑模式将令牌使用量减少66%\ 交互式热图:D3.js可视化与循环检测\ 增量分析:文件哈希缓存,监控速度提高70%\ 实时监控:实时分析和趋势跟踪\ 循环检测:基于图形的循环依赖性分析,带有视觉突出显示
安装
先决条件
- Node.js 18或更高版本
- 光标IDE
设置
- 克隆此存储库:
git clone https://github.com/lady-logic/mmi-analyzer.git
cd mmi-analyzer- 安装依赖项:
npm install- 在游标中配置:
添加到光标MCP设置(~/.cursor/config.json 或通过设置→ MCP):
{
"mcpServers": {
"mmi-analyzer": {
"command": "node",
"args": ["C:/path/to/mmi-analyzer/src/server.js"]
}
}
}注: 使用绝对路径。在Windows上,使用正斜杠。
- 重新启动游标
用法
MMI分析仪提供七种工具,可通过Cursor的AI助手访问:
1.完成MMI分析
analyze_mmi(projectPath: "D:/Projects/MyApp")
analyze_mmi(projectPath: "D:/Projects/MyApp", mode: "detailed") // Full report运行所有四维分析,并提供总体架构质量评分。
2.交互式建筑热图
visualize_architecture(projectPath: "D:/Projects/MyApp")生成D3.js可视化,显示:
- 按质量分数着色的节点文件(绿色=优秀,红色=关键)
- 依赖关系作为链接(灰色=正常,红色=违规,粉色=循环)
- 循环依赖的动画脉冲
- 按层或周期进行交互式过滤
- 点击节点查看详细问题
3.循环依赖性分析
analyze_cycles(projectPath: "D:/Projects/MyApp")
analyze_cycles(projectPath: "D:/Projects/MyApp", mode: "detailed")检测整个项目中的循环依赖关系:
- 使用graphlib的Tarjan算法进行循环检测
- 分析所有C#依赖关系(使用语句)
- 严重性分类:
- 🔴 关键的:循环中涉及的域层 - 🟠 高:双向循环依赖 - 🟡 中等:循环3-4个文件 - 🔵 低:循环中有5+个文件
- 显示完整的循环路径
4.实时监控
start_monitoring(projectPath: "D:/Projects/MyApp")
get_monitoring_status()
stop_monitoring(projectPath: "D:/Projects/MyApp")手表 .cs 文件,并通过趋势可视化自动分析变化。
5.分层分析
analyze_layering(projectPath: "D:/Projects/MyApp")检测清洁架构违规(例如,域取决于基础架构)。
6.封装分析
analyze_encapsulation(projectPath: "D:/Projects/MyApp")标识应为内部的过度暴露类型。
7.抽象层次分析
analyze_abstraction(projectPath: "D:/Projects/MyApp")发现业务逻辑与技术细节(SQL、HTTP、文件I/O)的混合。
报告模式
压缩模式(默认)
- 令牌优化输出(减少约66%)
- 分组违规
- 简明建议
- 非常适合快速检查和监控
详细模式
- 完整违规列表
- 代码示例
- 综合表格
- 非常适合记录和深入分析
输出示例
# Complete MMI Analysis Report
Overall MMI Score: 4.2/5 (Gut)
## MMI Scorecard
| Dimension | Score | Level | Status |
|------------------------|-------|------------|--------|
| Layering | 5/5 | Exzellent | ✅ |
| Encapsulation | 4/5 | Gut | ✅ |
| Abstraction Levels | 3/5 | Akzeptabel | 🟡 |
| Circular Dependencies | 5/5 | Exzellent | ✅ |
## 🎯 Priority Actions
1. **Fix abstraction mixing** - Remove SQL queries from Domain layer热图可视化
交互式热图提供实时视觉反馈:
颜色编码:
- 🟢 绿色:优秀(4.5-5.0)
- 🔵 蓝色:良好(3.5-4.5)
- 🟠 橙色:可接受(2.5-3.5)
- 🔴 红色:严重(\<2.5)
- 🟣 粉红色:循环依赖
交互功能:
- 拖动节点以重新排列
- 缩放和平移
- 按层或周期过滤
- 点击节点查看详细问题
- 动画粉红色脉冲链接显示循环
建筑
mmi-analyzer/
├── src/
│ ├── server.js # MCP server implementation
│ ├── config/
│ │ └── report-config.js # Report mode configuration
│ ├── analyzers/
│ │ ├── layering.js # Dimension 2: Layer dependencies
│ │ ├── encapsulation.js # Dimension 5: Type visibility
│ │ ├── abstraction.js # Dimension 8: Abstraction mixing
│ │ └── cycle-analyzer.js # Dimension 9: Circular dependencies
│ ├── formatters/ # Report formatters (compact/detailed)
│ │ ├── cycle-formatter.js # Cycle-specific formatting
│ │ └── combined-formatter.js # 4D MMI reports
│ ├── monitoring/ # File watching & history
│ ├── visualizations/ # Heatmap generator with cycle viz
│ └── utils/
│ └── file-cache.js # Hash-based caching
├── package.json
└── README.md评分系统
MMI分数(0-5):
- 5 - 优秀:最先进的建筑
- 4-勇气:强大的架构,需要小幅改进
- 3、可接受:基础扎实,建议进行一些重构
- 2、值得改进:重大技术债务
- 1、不好:需要进行重大重构
- 0、批评:架构从根本上被打破
循环评分:
- 0个周期=5分
- 循环中\<1%的文件=4分
- \<3%的文件循环=3分
- \<5%的文件循环=2分
- \<10%的文件循环=1分
- 循环中≥10%的文件=0分
演出
- 紧凑型报告:约2400个代币(详细信息为7000个)
- 监控:仅分析更改的文件(减少70%)
- 缓存:基于MD5哈希的文件跟踪
- 循环检测:O(V+E)使用Tarjan的SCC算法
- 分析:全扫描,后续:增量扫描
打破循环
当检测到循环依赖关系时,该工具会建议解决策略:
- 依赖倒置 -介绍接口
- 事件驱动架构 -使用消息总线(例如MassTransit)
- 提取常见依赖关系 -创建共享模块
- 合并组件 -组合人工分隔的代码
- 反腐败层 -添加翻译层
故障排除
服务器未连接
- 检查Cursor配置中的绝对路径
- 验证Node.js版本:
node --version(需要18+) - 检查日志:
mmi-analyzer.log在服务器目录中
无分析结果
- 确保项目路径包含
.cs文件 - 验证项目是否遵循文件夹结构(
Domain/,Application/,Infrastructure/)
缓存问题
- 删除
.mmi-cache.json在项目根源上迫使全面重新分析
未检测到循环
- 确保文件正确
namespace声明 - 检查一下
using语句引用项目命名空间 - 多个文件可以共享同一命名空间(受支持)
贡献
欢迎投稿!这是一个学习MCP服务器开发的实验工具。
许可证
麻省理工学院
参考文献
- 多媒体交互系统框架: Carola Lilienthal-Langlebige软件架构
- MCP协议: 人类模型上下文协议
- 整洁架构:罗伯特·C·马丁
- 循环检测:Tarjan的强连接组件算法
______________________________________________________________________
状态:实验性| 版本: 0.4.0
