mcp-diagnostics-extension
VS Code extension that exposes diagnostic problems via Model Context Protocol (MCP) for AI agents and tools
Documentation
MCP Diagnostics Extension
๐ A production-ready VS Code extension that exposes diagnostic problems (errors, warnings, etc.) in real-time via the Model Context Protocol (MCP) for seamless consumption by AI agents and MCP-enabled tools.
๐ฏ EXCEPTIONAL ACHIEVEMENTS
๐ World-Class Quality Standards
- โ 810 Tests Passing - Comprehensive test coverage with 0 failures (1 skipped)
- โ 97.99% Statement Coverage - Exceeding industry standards (95%+ target)
- โ Production-Ready Architecture - Clean Architecture with dependency injection
- โ Professional CI/CD Pipeline - Multi-platform testing and automated releases
- โ Zero External Dependencies - Native implementations for maximum reliability
๐ Performance Excellence
- **โก B[๐ Progress Notification Shown]
B --> C[๐ฆ Deploy Bundled Server]
C --> D{๐ Server Exists?}
| D --> | No | E[๐ Create Installation Directory] |
|---|---|---|
| D --> | Yes | F[๐ Check Version] |
| F --> | Newer | E |
| F --> | Same/Older | G[โ Skip Deployment] |
E --> H[๐ Copy Server Binary]
H --> I[๐ Set Executable Permissions]
I --> J[๐ Persist Manifest]
J --> K[๐ง Inject Configuration]
G --> K
K --> L[๐ Locate Config File]
L --> M{๐ Config Exists?}
| M --> | Yes | N[๐ Load & Validate] |
|---|---|---|
| M --> | No | O[๐ Create Default Config] |
N --> P[๐ Deep Merge Configurations]
O --> P
P --> Q[๐พ Atomic Write Operation]
Q --> R[โ Backup Creation]
R --> S[๐ Validate Final Config]
S --> T[๐ Success Notification]
%% Error Paths
| C -.-> | Error | U[โ Deployment Failed] |
|---|---|---|
| K -.-> | Error | V[โ Configuration Failed] |
U --> W[๐ Show Manual Setup Guide]
V --> W
%% Styling
classDef success fill:#d4edda,stroke:#155724,color:#155724
classDef error fill:#f8d7da,stroke:#721c24,color:#721c24
classDef process fill:#cce5ff,stroke:#004085,color:#004085
class T success
class U,V,W error
class A,B,C,E,H,I,J,K,L,N,O,P,Q,R,S process
### **๐ Auto-Configuration Injection Process**sequenceDiagram
participant User
participant ExtensionCommands
participant ServerDeployment
participant McpServerRegistration
participant FileSystem
participant VSCode
User->>ExtensionCommands: Execute "Configure Server"
ExtensionCommands->>VSCode: Show Progress Notification
Note over ExtensionCommands,ServerDeployment: Phase 1: Server Deployment
ExtensionCommands->>ServerDeployment: deployBundledServer()
ServerDeployment->>FileSystem: Check installation directory
FileSystem-->>ServerDeployment: Directory status
ServerDeployment->>FileSystem: Atomic copy & permissions
FileSystem-->>ServerDeployment: Deployment complete
ServerDeployment-->>ExtensionCommands: Server path
Note over ExtensionCommands,McpServerRegistration: Phase 2: Configuration Injection
ExtensionCommands->>McpServerRegistration: injectConfiguration()
McpServerRegistration->>FileSystem: Locate config file (priority order)
FileSystem-->>McpServerRegistration: Config path
McpServerRegistration->>FileSystem: Load existing config
FileSystem-->>McpServerRegistration: Config data
McpServerRegistration->>McpServerRegistration: Deep merge with validation
McpServerRegistration->>FileSystem: Atomic write with backup
FileSystem-->>McpServerRegistration: Write complete
McpServerRegistration-->>ExtensionCommands: Configuration complete
ExtensionCommands->>VSCode: Success notification
VSCode-->>User: "MCP server configured successfully!"
Note over User,VSCode: Alternative: Error Handling
ExtensionCommands->>VSCode: Error notification (if failed)
VSCode-->>User: Show manual setup guide
### **๐๏ธ Auto-Deployment Architecture**graph LR
subgraph "๐ฆ Bundled Assets"
A[scripts/mcp-server.js]
B[Server Manifest]
C[Configuration Template]
end
subgraph "๐ง Core Components"
D[ServerInstallUtils]
E[ServerDeployment]
F[McpServerRegistration]
G[ExtensionCommands]
end
subgraph "๐พ User Environment"
H[~/.mcp-diagnostics/]
I[.cursor/mcp.json]
J[IDE Configuration]
end
subgraph "๐ก๏ธ Safety Features"
K[Atomic Operations]
L[Backup Creation]
M[Version Validation]
N[Permission Checks]
end
A --> D: Bundled Server
D --> E: Installation Utils
E --> F: Deployment Service
F --> G: Registration Service
G --> H: Deploy to User Dir
F --> I: Inject Config
I --> J: Configure IDE
K --> E: Ensure Atomicity
L --> F: Create Backups
M --> E: Version Control
N --> D: Security Checks
%% Styling
classDef bundled fill:#fff3cd,stroke:#856404,color:#856404
classDef core fill:#cce5ff,stroke:#004085,color:#004085
classDef user fill:#d4edda,stroke:#155724,color:#155724
classDef safety fill:#f8d7da,stroke:#721c24,color:#721c24
class A,B,C bundled
class D,E,F,G core
class H,I,J user
class K,L,M,N safety
### **โ๏ธ Configuration File Priorities**graph TD
A[๐ Configuration Discovery] --> B[๐ Check Workspace .cursor/mcp.json]
B --> C{โ Exists?}
| C --> | Yes | D[๐ฏ Use Workspace Config] |
|---|---|---|
| C --> | No | E[๐ Check User Home .cursor/mcp.json] |
E --> F{โ Exists?}
| F --> | Yes | G[๐ Use User Config] |
|---|---|---|
| F --> | No | H[๐ Create New Configuration] |
D --> I[๐ Load & Parse JSON]
G --> I
H --> J[๐ Generate Default Config]
J --> I
I --> K[โ Validate with Zod Schema]
K --> L[๐ Deep Merge with Diagnostics Server]
L --> M[๐พ Atomic Write with Backup]
%% Styling
classDef primary fill:#007bff,stroke:#ffffff,color:#ffffff
classDef success fill:#28a745,stroke:#ffffff,color:#ffffff
classDef process fill:#17a2b8,stroke:#ffffff,color:#ffffff
class D,G primary
class H,J,M success
class I,K,L process
### **๐๏ธ One-Click Setup Commands**
#### **`MCP Diagnostics: Configure Server`** โก
**The magic command that does everything automatically!**
Access via Command Palette (Ctrl+Shift+P / Cmd+Shift+P):
1. **Search**: "MCP Diagnostics: Configure Server"
2. **Click**: Command executes automatically
3. **Watch**: Progress notification shows deployment status
4. **Result**: Either success notification OR manual setup guide
**What it does:**
- โ
Deploys server to `~/.mcp-diagnostics/mcp-server.js`
- โ
Sets proper executable permissions (Unix/Linux)
- โ
Creates version manifest for future upgrades
- โ
Locates your MCP configuration file (workspace โ user home)
- โ
Preserves existing MCP servers during injection
- โ
Validates configuration with JSON schema
- โ
Creates backup before any changes
- โ
Provides manual setup fallback if automatic fails
### **๐ Cross-Platform Deployment Support**
| Platform | Install Path | Executable | Spawn Options |
| ----------- | --------------------------------- | --------------- | ------------------------ |
| **Windows** | `%USERPROFILE%\.mcp-diagnostics\` | โ Not required | `shell: true` (required) |
| **macOS** | `~/.mcp-diagnostics/` | โ
`chmod +x` | `shell: false` |
| **Linux** | `~/.mcp-diagnostics/` | โ
`chmod +x` | `shell: false` |
### **๐ก๏ธ Security & Reliability Features**
#### **Atomic Operations**// All file operations are atomic to prevent corruption
1. Write to temporary file (.tmp)
2. Validate written content
3. Atomic rename to final location
4. Clean up temporary files
#### **Backup Strategy**// Automatic backup creation before any changes
- Original config โ config.backup
- Malformed config โ config.malformed.backup
- Restore on validation failure
#### **Version Management**// Smart version detection and upgrade handling
- Compare semantic versions (1.2.3 format)
- Skip deployment if same/older version
- Automatic upgrade for newer versions
### **๐จ Error Handling & Recovery**
The auto-deployment system includes comprehensive error handling:
| Error Type | Recovery Strategy |
| --------------------- | ------------------------------------------------ |
| **Permission Denied** | Show manual setup with elevated privileges guide |
| **Disk Space** | Alert user and provide cleanup recommendations |
| **Network Issues** | Use bundled assets with offline deployment |
| **Config Corruption** | Create backup and initialize fresh configuration |
| **Version Conflicts** | Smart merge with user preference preservation |
### **๐ Performance Metrics**
Sprint 4 auto-deployment meets strict performance requirements:
- โก **Deployment Time**: <2 seconds for complete setup
- โก **Configuration Injection**: <500ms including validation
- โก **Memory Usage**: <10MB additional during deployment
- โก **File Operations**: Atomic with <100ms overhead
- โก **Cross-Platform**: Universal compatibility with intelligent spawn detection
---
## ๐ ๏ธ Usage Guide
### Available Commands
Access via Command Palette (Ctrl+Shift+P / Cmd+Shift+P):
- **`MCP Diagnostics: Show Status`** - Opens detailed status webview with:
- Server connection status
- Problem statistics by severity and source
- File-by-file breakdown
- Workspace folder information
- Performance metrics
- **`MCP Diagnostics: Restart Server`** - Restarts the MCP server with progress indication
- **`MCP Diagnostics: Show Setup Guide`** - Opens comprehensive setup guide for MCP client configuration
### MCP Tools Reference
#### ๐ `getProblems` - Universal Problem Query
Get all diagnostic problems with powerful filtering options:{
"name": "getProblems",
"arguments": {
"filePath": "/path/to/file.ts", // Optional: filter by specific file
"severity": "Error", // Optional: Error, Warning, Information, Hint
"workspaceFolder": "my-project", // Optional: filter by workspace
"source": "typescript", // Optional: filter by diagnostic source
"limit": 100, // Optional: limit results (default: 1000)
"offset": 0 // Optional: pagination offset
}
}
**Example Response:**{
"content": [
{
"type": "text",
"text": "[{\"filePath\":\"/workspace/src/app.ts\",\"severity\":\"Error\",\"message\":\"Cannot find name 'foo'\",\"range\":{\"start\":{\"line\":10,\"character\":5},\"end\":{\"line\":10,\"character\":8}},\"source\":\"typescript\",\"workspaceFolder\":\"/workspace\",\"code\":\"2304\"}]"
}
]
}
#### ๐ `getProblemsForFile` - File-Specific Diagnostics
Get all problems for a specific file:{
"name": "getProblemsForFile",
"arguments": {
"filePath": "/absolute/path/to/file.ts"
}
}
#### ๐ `getWorkspaceSummary` - Workspace Statistics
Get comprehensive workspace diagnostic statistics:{
"name": "getWorkspaceSummary",
"arguments": {
"groupBy": "severity" // Optional: severity, source, workspaceFolder
}
}
**Example Response:**{
"content": [
{
"type": "text",
"text": "{\"totalProblems\":15,\"byFile\":{\"app.ts\":3,\"utils.ts\":2},\"bySeverity\":{\"Error\":5,\"Warning\":10},\"bySource\":{\"typescript\":8,\"eslint\":7},\"byWorkspace\":{\"main\":15},\"timestamp\":\"2024-01-15T10:30:00.000Z\"}"
}
]
}
### MCP Resources
Dynamic resources providing structured access to diagnostic data:
- **`diagnostics://summary`** - Overall workspace problems summary
- **`diagnostics://file/{encodedFilePath}`** - Problems for specific file
- **`diagnostics://workspace/{encodedWorkspaceName}`** - Problems for specific workspace
### Real-time Notifications
The server automatically sends `problemsChanged` notifications when diagnostics change:{
"method": "notifications/message",
"params": {
"level": "info",
"data": {
"type": "problemsChanged",
"uri": "/path/to/file.ts",
"problemCount": 3,
"problems": [...],
"timestamp": "2024-01-15T10:30:00.000Z"
}
}
}
## โ๏ธ Configuration
Customize the extension via VS Code settings (`Ctrl+,` / `Cmd+,`):{
"mcpDiagnostics.server.port": 6070,
"mcpDiagnostics.debounceMs": 300,
"mcpDiagnostics.enableDebugLogging": false,
"mcpDiagnostics.enablePerformanceLogging": false,
"mcpDiagnostics.maxProblemsPerFile": 1000,
"mcpDiagnostics.debug.logLevel": "info",
"mcpDiagnostics.showAutoRegistrationNotification": true
}
### Configuration Options
| Setting | Type | Default | Description |
| ---------------------------------- | ------- | ------- | --------------------------------------------------- |
| `server.port` | number | 6070 | MCP server port (1024-65535) |
| `debounceMs` | number | 300 | Debounce interval for diagnostic events (50-5000ms) |
| `enableDebugLogging` | boolean | false | Enable detailed debug logging |
| `enablePerformanceLogging` | boolean | false | Enable performance metrics logging |
| `maxProblemsPerFile` | number | 1000 | Maximum problems to track per file (1-10000) |
| `debug.logLevel` | string | "info" | Logging level (error, warn, info, debug) |
| `showAutoRegistrationNotification` | boolean | true | Show MCP server registration notifications |
## ๐งช Testing & Development
### **๐ Exceptional Test Coverage Achievement**
The extension has achieved **world-class testing standards**:
- **โ
810 Tests Passing** - Comprehensive test suite with 0 failures (1 skipped)
- **โ
97.99% Statement Coverage** - Exceeding industry standards
- **โ
34 Test Suites** - Organized, maintainable test structure across all components
- **โ
Cross-Platform Testing** - Validated on Windows, macOS, and Linux environments
- **โ
Comprehensive E2E Testing** - Full extension workflow validation
### Real vs Mock Server
The extension provides **two operational modes**:
#### ๐ด **Real VS Code Extension** (Production Mode)
- **Purpose**: Production use with actual VS Code diagnostics
- **Data Source**: Live VS Code Problems panel
- **Activation**: Automatic when extension is installed
- **Use Case**: Real development workflows with AI agents
#### ๐ง **Development Tools**
- **Package Validation**: `scripts/validate-package.sh` - Automated package integrity checks
- **Asset Conversion**: `scripts/convert-assets.js` - Visual asset optimization utilities
### Test Workspace
The extension includes `test-workspace/` with intentional errors:
- **`example.ts`**: TypeScript errors (type mismatches, undefined variables, invalid assignments)
- **`utils.js`**: ESLint warnings (unused variables, style issues, best practice violations)
**To test the extension:**
1. **Launch Extension Development Host** (Press F5 in VS Code)
2. **Open test workspace** or any workspace with diagnostic issues
3. **View Problems panel** (Ctrl+Shift+M) to see real diagnostics
4. **Use MCP tools** to query the diagnostic data
5. **Check status bar** for live error/warning counts
### Development SetupInstall dependencies
npm install
Run tests (810 tests)
npm test
Run tests with coverage
npm run test:coverage
Lint code
npm run lint
Format code
npm run format
Compile TypeScript
npm run compile
Package extension
npm run package
Run CI checks
npm run ci:check
## ๐ง MCP Client Configuration
The extension provides a **universal MCP server** that works with all major MCP-enabled environments. The server runs as a standalone Node.js process and provides real-time diagnostic data from your workspace.
### ๐ฏ **Universal Configuration Pattern**
All MCP clients use the same basic configuration pattern with environment-specific variations:{
"mcpServers": {
// or "servers" for some clients
"vscode-diagnostics": {
"command": "node",
"args": ["scripts/mcp-server.js"],
"cwd": "/path/to/mcp-diagnostics-extension",
"env": {
"NODE_ENV": "production",
"MCP_DEBUG": "false"
}
}
}
}
### ๐ **Configuration File Locations**
| Environment | Configuration File | Format |
| ------------------ | ---------------------------- | -------------------------------- |
| **Cursor IDE** | `.cursor/mcp.json` | `mcpServers` |
| **VS Code** | `.vscode/mcp.json` | `servers` (with `type: "stdio"`) |
| **Windsurf** | `.windsurf/mcp.json` | `servers` |
| **Claude Desktop** | `claude_desktop_config.json` | `mcpServers` |
### MCP Client Configuration Examples
#### Cursor IDE// .cursor/mcp.json or cursor-mcp-config.json
{
"mcpServers": {
"vscode-diagnostics": {
"command": "node",
"args": ["scripts/mcp-server.js"],
"cwd": "/path/to/mcp-diagnostics-extension",
"env": {
"NODE_ENV": "production",
"MCP_DEBUG": "false"
}
}
}
}
#### VS Code with MCP Extension// .vscode/mcp.json
{
"servers": {
"vscode-diagnostics": {
"type": "stdio",
"command": "node",
"args": ["scripts/mcp-server.js"],
"cwd": "/path/to/mcp-diagnostics-extension",
"env": {
"NODE_ENV": "production",
"MCP_DEBUG": "false"
}
}
}
}
#### Windsurf IDE// .windsurf/mcp.json
{
"servers": {
"vscode-diagnostics": {
"command": "node",
"args": ["scripts/mcp-server.js"],
"cwd": "/path/to/mcp-diagnostics-extension",
"env": {
"NODE_ENV": "production",
"MCP_DEBUG": "false"
}
}
}
}
#### Claude Desktop// claude_desktop_config.json
{
"mcpServers": {
"vscode-diagnostics": {
"command": "node",
"args": ["scripts/mcp-server.js"],
"cwd": "/path/to/mcp-diagnostics-extension",
"env": {
"NODE_ENV": "production",
"MCP_DEBUG": "false"
}
}
}
}
#### Custom MCP Clientimport { Client } from '@modelcontextprotocol/client';
const client = new Client({
name: 'my-client',
version: '1.0.0',
});
// Connect to extension
await client.connect({
command: 'node',
args: ['scripts/mcp-server.js'],
cwd: '/path/to/mcp-diagnostics-extension',
env: {
NODE_ENV: 'production',
MCP_DEBUG: 'false',
},
});
// Use tools
const problems = await client.callTool({
name: 'getProblems',
arguments: { severity: 'Error' },
});
### ๐ **MCP Server Features**
The `scripts/mcp-server.js` provides:
- **๐ Real-time Diagnostics**: Live TypeScript and ESLint analysis
- **๐ VS Code Integration**: Automatic import of VS Code Problems panel data
- **โก Performance Optimized**: Cached results with smart refresh logic
- **๐ก๏ธ Error Recovery**: Graceful fallback when VS Code data unavailable
- **๐ง Configurable**: Environment variables for debugging and behavior control
### ๐ **Environment Variables**
| Variable | Default | Description |
| ------------------ | ------------- | --------------------------------------------- |
| `NODE_ENV` | `development` | Set to `production` for optimized performance |
| `MCP_DEBUG` | `false` | Enable detailed debug logging |
| `REFRESH_INTERVAL` | `30000` | Cache refresh interval in milliseconds |
| `MAX_PROBLEMS` | `10000` | Maximum number of problems to cache |
### ๐ **Data Sources**
The MCP server intelligently combines multiple data sources:
1. **VS Code Export** (Primary): Real-time data from the extension
2. **TypeScript Compiler** (Fallback): Direct `tsc` analysis
3. **ESLint** (Fallback): Direct ESLint analysis
4. **Cached Results** (Performance): Smart caching with automatic refresh๐ Documentation
Additional Resources
- **MCP Server Guide** - Comprehensive setup and configuration guide
- **Quick Setup Guide** - Fast-track installation instructions
- **Troubleshooting Guide** - Common issues and solutions
- **Contributing Guide** - Development and contribution guidelines
- **Changelog** - Version history and release notes
- **Security Policy** - Security reporting and policies
API Documentation
Comprehensive TypeScript documentation is available for all public APIs:
- **DiagnosticsWatcher API** - Core diagnostic monitoring
- **MCP Tools API** - MCP server implementation
- **Extension Commands API** - VS Code command integration
๐ค Contributing
We welcome contributions! Please see our Contributing Guide for details.
Quick Contribution Steps
1. Fork the repository
2. Create a feature branch: `git checkout -b feature/amazing-feature`
3. Make changes following our coding standards
4. Run tests: `npm test` (all 810 tests must pass)
5. Lint code: `npm run lint`
6. Commit changes: `npm run commit` (uses conventional commits)
7. Push to branch: `git push origin feature/amazing-feature`
8. Open a Pull Request
Development Requirements
- Node.js 22.x or higher
- VS Code 1.96.0 or higher
- TypeScript 5.8.3 or higher
๐ Troubleshooting
Common Issues
Extension Not Activating
1. Check VS Code version compatibility (requires 1.96.0+)
2. Look for activation errors in Developer Tools Console
3. Try reloading VS Code window (Ctrl+Shift+P โ "Reload Window")
MCP Connection Issues
1. Verify MCP client configuration paths
2. Check that the extension is active (status bar shows MCP status)
3. Restart the MCP server: Command Palette โ "MCP Diagnostics: Restart Server"
No Diagnostics Showing
1. Ensure you have files with actual errors/warnings open
2. Check VS Code Problems panel (Ctrl+Shift+M) - MCP data comes from here
3. Verify diagnostic providers (TypeScript, ESLint) are working
For more detailed troubleshooting, see our Troubleshooting Guide.
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgments
- VS Code Team - For the excellent extension API and diagnostic system
- Model Context Protocol - For the innovative protocol enabling AI agent integration
- TypeScript Team - For the robust type system and development experience
- Jest Community - For the comprehensive testing framework
- Open Source Community - For the tools and libraries that make this project possible
๐ Ready to supercharge your AI-assisted development workflow? Install the MCP Diagnostics Extension today and give your AI agents complete visibility into your codebase health!
// Code blockFrequently asked questions
What is mcp-diagnostics-extension?
mcp-diagnostics-extension is VS Code extension that exposes diagnostic problems via Model Context Protocol (MCP) for AI agents and tools
How do I install mcp-diagnostics-extension?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is mcp-diagnostics-extension open source?
Yes โ it is hosted on GitHub at https://github.com/newbpydev/mcp-diagnostics-extension and has 22 stars.
Related MCP tools
The go-to web for your AI coding agent โ local-first search, fetch, crawl & research over MCP. No API keys, no cloud, $0/query. Public beta.
MCP server that enables AI assistants to interact with Google Gemini CLI, leveraging Gemini's massive token window for large file analysis and codebase understanding
A desktop MCP client designed as a tool unitary utility integration, accelerating AI adoption through the Model Context Protocol (MCP) and enabling cross-vendor LLM API orchestration.
Code research platform for AI agents; find, understand, and prove context across your code and all of GitHub, in a fraction of the tokens. One toolset, MCP or CLI
Give your AI agent eyes for PDFs โ structured text, tables, OCR, visual evidence, and page-level citations via MCP. Native Rust, local-first.
Open-source cross-agent memory layer for coding agents via MCP. Compatible with Claude Code, Codex, Cursor, Windsurf, Gemini CLI, Antigravity, OpenClaw, Hermes Agent, Oh-my-Pi, Pi, Copilot, Kiro, OpenCode, and Trae.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP