Skip to main content
Glama

MMI Architecture Analyzer

Model Context Protocol (MCP) server for analyzing C# project architecture quality using the MMI (Modularity Maturity Index) framework by Carola Lilienthal.

Overview

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

Features

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

Installation

Prerequisites

  • Node.js 18 or higher

  • Cursor IDE

Setup

  1. Clone this repository:

git clone https://github.com/lady-logic/mmi-analyzer.git cd mmi-analyzer
  1. Install dependencies:

npm install
  1. 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.

  1. Restart Cursor

Usage

The MMI Analyzer provides seven tools accessible via Cursor's AI assistant:

1. Complete MMI Analysis

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.

2. Interactive Architecture Heatmap

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

3. Circular Dependency Analysis

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

4. Live Monitoring

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.

5. Layering Analysis

analyze_layering(projectPath: "D:/Projects/MyApp")

Detects Clean Architecture violations (e.g., Domain depending on Infrastructure).

6. Encapsulation Analysis

analyze_encapsulation(projectPath: "D:/Projects/MyApp")

Identifies over-exposed types that should be internal.

7. Abstraction Level Analysis

analyze_abstraction(projectPath: "D:/Projects/MyApp")

Finds mixing of business logic with technical details (SQL, HTTP, File I/O).

Report Modes

Compact Mode (Default)

  • Token-optimized output (~66% reduction)

  • Grouped violations

  • Concise recommendations

  • Perfect for quick checks and monitoring

Detailed Mode

  • Full violation listings

  • Code examples

  • Comprehensive tables

  • Ideal for documentation and deep analysis

Example Output

# 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

Heatmap Visualization

The 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

Architecture

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

Scoring System

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

Performance

  • 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

Breaking Cycles

When circular dependencies are detected, the tool suggests resolution strategies:

  1. Dependency Inversion - Introduce interfaces

  2. Event-Driven Architecture - Use message bus (e.g., MassTransit)

  3. Extract Common Dependencies - Create shared module

  4. Merge Components - Combine artificially separated code

  5. Anti-Corruption Layer - Add translation layer

Troubleshooting

Server not connecting

  1. Check absolute paths in Cursor config

  2. Verify Node.js version: node --version (needs 18+)

  3. Check logs: mmi-analyzer.log in server directory

No analysis results

  • Ensure the project path contains .cs files

  • Verify project follows folder structure (Domain/, Application/, Infrastructure/)

Cache issues

  • Delete .mmi-cache.json in project root to force full re-analysis

Cycles not detected

  • Ensure files have proper namespace declarations

  • Check that using statements reference project namespaces

  • Multiple files can share the same namespace (supported)

Contributing

Contributions welcome! This is an experimental tool for learning MCP server development.

License

MIT

References


Status: Experimental | Version: 0.4.0

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

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/lady-logic/mmi-analyzer'

If you have feedback or need assistance with the MCP directory API, please join our Discord server