trackmcp
Back to directory
newbpydev

mcp-diagnostics-extension

View on GitHub

VS Code extension that exposes diagnostic problems via Model Context Protocol (MCP) for AI agents and tools

22 stars TypeScriptOthers Updated Apr 5, 2026
ai-agent-toolsai-toolsclean-architecturediagnostic-tooldiagnosticsextension-developmentjestmcpmodel-context-protocolreal-time-monitoringtddtestingtypescriptvscodevscode-extensionproblems-panel

Documentation

MCP Diagnostics Extension

VS Code Marketplace
Downloads
Rating
Installs
CI/CD Pipeline
Release Pipeline
Tests
Test Coverage
TypeScript
VS Code Engine
MCP SDK
Node.js
License: MIT
Security Policy
Dependabot
GitHub Release
GitHub Issues
GitHub Stars
Conventional Commits

๐Ÿ† 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 -->NoE[๐Ÿ“‚ Create Installation Directory]
D -->YesF[๐Ÿ“‹ Check Version]
F -->NewerE
F -->Same/OlderG[โœ… 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 -->YesN[๐Ÿ“‹ Load & Validate]
M -->NoO[๐Ÿ“„ 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 -.->ErrorU[โŒ Deployment Failed]
K -.->ErrorV[โŒ 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

code
### **๐Ÿ“‹ 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

code
### **๐Ÿ—๏ธ 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

code
### **โš™๏ธ Configuration File Priorities**

graph TD

A[๐Ÿ” Configuration Discovery] --> B[๐Ÿ“ Check Workspace .cursor/mcp.json]

B --> C{โœ… Exists?}

C -->YesD[๐ŸŽฏ Use Workspace Config]
C -->NoE[๐Ÿ“ Check User Home .cursor/mcp.json]

E --> F{โœ… Exists?}

F -->YesG[๐Ÿ  Use User Config]
F -->NoH[๐Ÿ“„ 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

code
### **๐ŸŽ›๏ธ 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

code
#### **Backup Strategy**

// Automatic backup creation before any changes

  • Original config โ†’ config.backup
  • Malformed config โ†’ config.malformed.backup
  • Restore on validation failure
code
#### **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
code
### **๐Ÿšจ 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

}

}

code
**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\"}]"

}

]

}

code
#### ๐Ÿ“„ `getProblemsForFile` - File-Specific Diagnostics

Get all problems for a specific file:

{

"name": "getProblemsForFile",

"arguments": {

"filePath": "/absolute/path/to/file.ts"

}

}

code
#### ๐Ÿ“Š `getWorkspaceSummary` - Workspace Statistics

Get comprehensive workspace diagnostic statistics:

{

"name": "getWorkspaceSummary",

"arguments": {

"groupBy": "severity" // Optional: severity, source, workspaceFolder

}

}

code
**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\"}"

}

]

}

code
### 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"

}

}

}

code
## โš™๏ธ 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

}

code
### 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 Setup

Install 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

code
## ๐Ÿ”ง 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"

}

}

}

}

code
### ๐Ÿ“ **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"

}

}

}

}

code
#### 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"

}

}

}

}

code
#### 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"

}

}

}

}

code
#### 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"

}

}

}

}

code
#### Custom MCP Client

import { 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' },

});

code
### ๐Ÿš€ **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

API Documentation

Comprehensive TypeScript documentation is available for all public APIs:

๐Ÿค 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
// Code block

Frequently 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

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP