Model Context Protocol (MCP) server for analyzing C# project architecture quality using the MMI (Modularity Maturity Index) framework by Carola Lilienthal.
This MCP server provides automated analysis of .NET/C# projects to assess architecture quality across four critical dimensions from Carola Lilienthal's MMI framework:
- Dimension 2: Layering - Validates Clean Architecture layer dependencies
- Dimension 5: Encapsulation - Analyzes public vs internal type visibility
- Dimension 8: Abstraction Levels - Detects mixing of business logic with technical details
- Dimension 9: Circular Dependencies - Identifies dependency cycles using Tarjan's algorithm
Token-Optimized Reports: Compact mode reduces token usage by 66%
Interactive Heatmap: D3.js visualization with cycle detection
Incremental Analysis: File-hash caching for 70% faster monitoring
Live Monitoring: Real-time analysis with trend tracking
Cycle Detection: Graph-based circular dependency analysis with visual highlighting
- Node.js 18 or higher
- Cursor IDE
- Clone this repository:
git clone https://github.com/lady-logic/mmi-analyzer.git
cd mmi-analyzer- Install dependencies:
npm install- Configure in Cursor:
Add to your Cursor MCP settings (~/.cursor/config.json or via Settings β MCP):
{
"mcpServers": {
"mmi-analyzer": {
"command": "node",
"args": ["C:/path/to/mmi-analyzer/src/server.js"]
}
}
}Note: Use absolute paths. On Windows, use forward slashes.
- Restart Cursor
The MMI Analyzer provides seven tools accessible via Cursor's AI assistant:
analyze_mmi(projectPath: "D:/Projects/MyApp")
analyze_mmi(projectPath: "D:/Projects/MyApp", mode: "detailed") // Full report
Runs all four dimension analyses and provides an overall architecture quality score.
visualize_architecture(projectPath: "D:/Projects/MyApp")
Generates D3.js visualization showing:
- Files as nodes colored by quality score (green=excellent, red=critical)
- Dependencies as links (gray=normal, red=violations, pink=cycles)
- Animated pulsing for circular dependencies
- Interactive filtering by layer or cycles
- Click nodes to see detailed issues
analyze_cycles(projectPath: "D:/Projects/MyApp")
analyze_cycles(projectPath: "D:/Projects/MyApp", mode: "detailed")
Detects circular dependencies across the entire project:
- Uses graphlib's Tarjan algorithm for cycle detection
- Analyzes ALL C# dependencies (using statements)
- Severity classification:
- π΄ CRITICAL: Domain layer involved in cycle
- π HIGH: 2-way circular dependency
- π‘ MEDIUM: 3-4 files in cycle
- π΅ LOW: 5+ files in cycle
- Shows complete cycle paths
start_monitoring(projectPath: "D:/Projects/MyApp")
get_monitoring_status()
stop_monitoring(projectPath: "D:/Projects/MyApp")
Watches .cs files and automatically analyzes changes with trend visualization.
analyze_layering(projectPath: "D:/Projects/MyApp")
Detects Clean Architecture violations (e.g., Domain depending on Infrastructure).
analyze_encapsulation(projectPath: "D:/Projects/MyApp")
Identifies over-exposed types that should be internal.
analyze_abstraction(projectPath: "D:/Projects/MyApp")
Finds mixing of business logic with technical details (SQL, HTTP, File I/O).
- Token-optimized output (~66% reduction)
- Grouped violations
- Concise recommendations
- Perfect for quick checks and monitoring
- Full violation listings
- Code examples
- Comprehensive tables
- Ideal for documentation and deep analysis
# 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 layerThe interactive heatmap provides real-time visual feedback:
Color Coding:
- π’ Green: Excellent (4.5-5.0)
- π΅ Blue: Good (3.5-4.5)
- π Orange: Acceptable (2.5-3.5)
- π΄ Red: Critical (<2.5)
- π£ Pink: Circular dependency
Interactive Features:
- Drag nodes to rearrange
- Zoom and pan
- Filter by layer or cycles
- Click nodes for detailed issues
- Animated pink pulsing links show cycles
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 Scores (0-5):
- 5 - Exzellent: State-of-the-art architecture
- 4 - Gut: Strong architecture, minor improvements needed
- 3 - Akzeptabel: Solid foundation, some refactoring recommended
- 2 - VerbesserungswΓΌrdig: Significant technical debt
- 1 - Schlecht: Major refactoring required
- 0 - Kritisch: Architecture fundamentally broken
Cycle Scoring:
- 0 cycles = 5 points
- <1% files in cycles = 4 points
- <3% files in cycles = 3 points
- <5% files in cycles = 2 points
- <10% files in cycles = 1 point
- β₯10% files in cycles = 0 points
- Compact reports: ~2,400 tokens (vs. 7,000 detailed)
- Monitoring: Only analyzes changed files (70% reduction)
- Caching: MD5 hash-based file tracking
- Cycle detection: O(V + E) using Tarjan's SCC algorithm
- First analysis: Full scan, subsequent: incremental
When circular dependencies are detected, the tool suggests resolution strategies:
- Dependency Inversion - Introduce interfaces
- Event-Driven Architecture - Use message bus (e.g., MassTransit)
- Extract Common Dependencies - Create shared module
- Merge Components - Combine artificially separated code
- Anti-Corruption Layer - Add translation layer
- Check absolute paths in Cursor config
- Verify Node.js version:
node --version(needs 18+) - Check logs:
mmi-analyzer.login server directory
- Ensure the project path contains
.csfiles - Verify project follows folder structure (
Domain/,Application/,Infrastructure/)
- Delete
.mmi-cache.jsonin project root to force full re-analysis
- Ensure files have proper
namespacedeclarations - Check that
usingstatements reference project namespaces - Multiple files can share the same namespace (supported)
Contributions welcome! This is an experimental tool for learning MCP server development.
MIT
- MMI Framework: Carola Lilienthal - Langlebige Softwarearchitekturen
- MCP Protocol: Anthropic Model Context Protocol
- Clean Architecture: Robert C. Martin
- Cycle Detection: Tarjan's Strongly Connected Components algorithm
Status: Experimental | Version: 0.4.0