Skip to main content
Glama
nielspeter

SonarLint MCP Server

by nielspeter

SonarLint MCP Server

A Model Context Protocol (MCP) server that brings enterprise-grade code analysis to Claude Desktop and other MCP clients using SonarLint's standalone SLOOP backend.

License: MIT Node.js Version

Features

  • 🔍 Real-time Code Analysis - Detect bugs, code smells, and security vulnerabilities

  • 🚀 Fast & Standalone - No IDE or SonarQube server required

  • 📦 Multiple Languages - JavaScript, TypeScript, Python (265+ JS rules)

  • 💾 Session Storage - Results stored in memory for multi-turn conversations

  • 🔧 Quick Fixes - Automated suggestions for common issues

  • 🎯 Batch Analysis - Analyze multiple files efficiently

Related MCP server: Cursor MCP Server

Quick Start

Prerequisites

  • Node.js 22 or higher

  • Claude Desktop (or any MCP client)

Installation

No installation required! Use npx to run directly:

npx @nielspeter/sonarlint-mcp-server

The SLOOP backend (~70MB) downloads automatically on first run.

From Source (for development):

git clone https://github.com/nielspeter/sonarlint-mcp-server.git
cd sonarlint-mcp-server
npm install  # Auto-downloads SLOOP backend (~70MB)
npm run build

Configure with Claude Code

Use the Claude CLI to add the MCP server:

claude mcp add --transport stdio sonarlint -- npx -y @nielspeter/sonarlint-mcp-server

This automatically updates your Claude Code configuration. No restart needed!

Configure with Claude Desktop

Add to your claude_desktop_config.json:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "sonarlint": {
      "command": "npx",
      "args": ["-y", "@nielspeter/sonarlint-mcp-server"]
    }
  }
}

Restart Claude Desktop to apply changes.

Rule Configuration

Customize SonarLint rules per project by creating a sonarlint.json in your project root:

{
  "rules": {
    "typescript:S3776": {
      "level": "on",
      "parameters": {
        "threshold": "20"
      }
    },
    "javascript:S1481": {
      "level": "off"
    }
  }
}
  • level: "on" (default) or "off" to enable/disable a rule

  • parameters: Override rule thresholds and settings (see configurable rules)

  • Fallback: If no sonarlint.json is found, .sonarlint/settings.json is checked (IDE convention)

Copy sonarlint.example.json from this repo as a starting point. Use list_rules to discover available rules and their configurable parameters.

Usage

Once configured, Claude can analyze your code:

Analyze my JavaScript file for code quality issues: /path/to/file.js
Check these files for bugs: src/app.ts, src/utils.ts
Analyze this code snippet:
function process(data) {
  var result = data;  // Issues with 'var'
  return result;
}

Available Tools

Tool

Description

check_quality

Check a file for code quality issues

check_files

Check multiple files in one call

check_code

Check a code snippet (no file on disk needed)

fix_issue

Automatically fix one specific issue

fix_all_issues

Automatically fix all fixable issues in a file

list_rules

List all active code quality rules

health_check

Check server status and diagnostics

Example Analysis Output

{
  file: "/path/to/file.js",
  language: "javascript",
  issues: [
    {
      line: 4,
      column: 2,
      severity: "MAJOR",
      rule: "javascript:S3504",
      message: "Unexpected var, use let or const instead.",
      quickFix: {
        message: "Replace with 'const'",
        edits: [...]
      }
    }
  ],
  summary: {
    total: 5,
    critical: 0,
    major: 3,
    minor: 2
  }
}

Supported Languages

Language

Extensions

Rules

JavaScript

.js, .jsx, .mjs, .cjs

265

TypeScript

.ts, .tsx

265

Python

.py

~100

Architecture

Claude Desktop
      ↓ MCP Protocol (stdio)
SonarLint MCP Server (this project)
      ↓ JSON-RPC
SLOOP Backend (SonarLint Local Operations)
      ↓ Plugin API
Language Analyzers (JS/TS, Python)

The server uses SonarLint's standalone SLOOP backend with:

  • Version: 10.32.0.82302 (WebStorm-compatible)

  • Bundled JRE: Java 17

  • Bi-directional RPC: Client request handlers implemented

  • Session Storage: Results stored in memory for multi-turn conversations

SLOOP Integration: Scope Lifecycle

SLOOP requires a specific initialization sequence. Getting this wrong causes analysis to hang:

  1. Pre-register files — Store file DTOs in scopeFiles map before creating the scope. SLOOP calls listFiles synchronously during scope creation, so files must already be available.

  2. Create scope — Send addConfigurationScope notification to SLOOP.

  3. Wait for readiness — SLOOP sends didChangeAnalysisReadiness when the scope is ready. Analysis requests before this point will fail silently.

  4. Analyse — Call analyzeFilesAndTrack with the files.

Key design decisions:

  • No directory scanning in listFiles — Only return the specific files requested for analysis. Scanning the project root returned 500+ files on real projects and caused multi-minute hangs.

  • getBaseDir returns project root — Detected via package.json, .git, etc. SLOOP uses this for .gitignore matching and file exclusion patterns.

  • ideRelativePath relative to project root — SLOOP's WildcardPattern.match requires this; null values cause NPEs.

Development

# Install dependencies (auto-downloads backend)
npm install

# Build
npm run build

# Run tests
npm test

# Watch mode (auto-rebuild)
npm run dev

# Inspect with MCP Inspector
npm run inspect

Testing

# Run test suite
npm test

# Run with UI
npm run test:ui

# Run with coverage
npm run test:coverage

Tests validate:

  • SLOOP bridge functionality

  • File and content analysis

  • JavaScript and Python plugin detection

  • Quick fix support

  • Error handling

Documentation

Technical Highlights

This project demonstrates several key technical achievements:

  1. Standalone SLOOP - First documented standalone use of SonarLint's SLOOP backend

  2. Bi-directional RPC - Complete client request handler implementation

  3. MCP Integration - Full Model Context Protocol implementation with resources

  4. Session Management - Results storage for multi-turn conversations

  5. Production Ready - Comprehensive testing, error handling, and monitoring

Critical Implementation Details

For anyone using SLOOP programmatically:

  • listFiles must return ClientFileDto with file content (not just URIs)

  • isUserDefined: true is mandatory (SLOOP filters out false values)

  • bundlePath should be parent directory (SLOOP appends /package/bin/server.cjs)

  • Client must implement 4 request handlers (listFiles, getBaseDir, etc.)

  • backendCapabilities required for proper initialization

Why This Approach?

Advantages

  • ✅ No IDE dependency - runs completely standalone

  • ✅ Full API access - all SLOOP services available

  • ✅ Better control - configure for specific needs

  • ✅ More reliable - direct process communication

  • ✅ CI/CD capable - can run in automated environments

  • ✅ Faster - no IDE overhead

Comparison to IDE Integration

We initially investigated connecting to IDE servers (WebStorm port 64120) but discovered:

  • IDE server is only for "Open in IDE" from SonarQube Server/Cloud

  • Limited API access

  • IDE must be running

  • Not suitable for programmatic access

  • SonarQube MCP Server - Official server for SonarQube Server/Cloud APIs

    • Complementary approach requiring server setup

    • This project provides local, standalone analysis

Contributing

Contributions welcome! Areas for improvement:

  • Additional language support (Java, Go, PHP)

  • Custom rule development

  • Performance optimizations

  • CI/CD integrations

License

MIT License - see LICENSE

Acknowledgments

  • SonarSource for building SLOOP and SonarLint

  • Anthropic for the Model Context Protocol

  • Claude Code for enabling this development


Status: ✅ Production Ready - All phases complete with comprehensive testing

Available Tools

7 tools
check_codeA

Check code quality of a code snippet or content you have in hand — catches bugs, code smells, security issues, and complexity problems. Use to validate code before writing it to disk, review generated code, or check code you've read into context. No file on disk needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesThe code content to analyze
fileNameNoOptional filename for context (e.g., 'MyComponent.tsx')
languageYesProgramming language of the content

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the burden. It describes the tool as analyzing code quality and catching issues, implying a read-only operation. However, it does not explicitly state that no modifications are made, though 'No file on disk needed' suggests no file changes. Slight room for improvement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, followed by use cases. No superfluous information. Every sentence is necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given three parameters and no output schema, the description covers what the tool does and when to use it. However, it does not describe the output format (e.g., report), which would be helpful for an agent. Overall adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all parameters. The description adds context like 'code snippet or content you have in hand' but does not significantly enhance understanding beyond the schema. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks code quality, catches bugs, code smells, security issues, and complexity problems. It distinguishes itself from siblings by specifying 'No file on disk needed', making it unique among tools like check_files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly provides when to use: 'validate code before writing it to disk, review generated code, or check code you've read into context'. Also implies when not to use by stating 'No file on disk needed'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_filesA

Check multiple files for code quality issues in one call — bugs, code smells, security vulnerabilities. Use when reviewing or modifying several files. Supports glob patterns (e.g. 'src/**/*.ts'). When using relative paths or globs, provide basePath so they resolve correctly. Output is compact: only files with issues are shown, clean files get a summary count. For a single file use check_quality.

ParametersJSON Schema
NameRequiredDescriptionDefault
basePathNoProject root directory for resolving relative paths and globs (e.g., '/Users/me/project'). Required when filePaths contains relative paths.
filePathsYesArray of file paths or glob patterns to analyze (e.g., ['/path/to/file.ts', 'src/**/*.js'])
groupByFileNoGroup issues by file in output (default: true)
minSeverityNoMinimum severity level to include. Filters out issues below this level. Default: INFO (show all)
excludeRulesNoList of rule IDs to exclude (e.g., ['typescript:S1135', 'javascript:S125'])

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility. It discloses key behavioral traits: supports glob patterns, requires basePath for relative paths, output is compact showing only files with issues, and clean files get a summary count. This gives the agent a good understanding of the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured: first sentence states purpose, second gives usage context, third explains glob and output format. Every sentence adds value, and the length is appropriate for the complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters and no output schema, the description covers the main behaviors: multi-file support, glob patterns, compact output, and the alternative for single file. It could mention what happens when no issues are found (implied by 'summary count') but overall it is sufficiently complete for an experienced agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds context about glob patterns and basePath usage but does not significantly enhance the understanding of each parameter beyond what the schema already provides. For example, minSeverity and excludeRules are well-described in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks multiple files for code quality issues (bugs, code smells, security vulnerabilities). It specifies the resource ('multiple files') and the action ('check'), and distinguishes itself from the sibling tool 'check_quality' which is for a single file.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is given: 'Use when reviewing or modifying several files.' It also provides a negative case: 'For a single file use check_quality.' Additionally, it explains when to provide basePath and supports glob patterns, helping the agent decide when to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_qualityA

Check a file for code quality issues — bugs, code smells, security vulnerabilities, and complexity problems. Like having SonarLint in your IDE. Use after writing or modifying code to catch issues early. Returns issues with exact line numbers, severity, and available quick fixes. For multiple files use check_files.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesAbsolute path to the file to analyze (e.g., /path/to/file.js)
minSeverityNoMinimum severity level to include. Filters out issues below this level. Default: INFO (show all)
excludeRulesNoList of rule IDs to exclude (e.g., ['typescript:S1135', 'javascript:S125'])

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It explains the output format (exact line numbers, severity, quick fixes) and scope (bugs, code smells, etc.), implying a read-only analysis. Lacks details on potential side effects or permissions but is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

All five sentences serve a purpose: defining the task, providing an analogy, stating when to use, describing output, and giving an alternative for multiple files. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters, no output schema, and no annotations, the description covers purpose, usage, and output format adequately. It lacks explicit mention of return type or error cases but is sufficient for selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds no additional semantic info beyond the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it checks a file for code quality issues, listing types. It distinguishes from sibling 'check_files' for multiple files, but does not explicitly differentiate from 'check_code' which is a sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit when to use ('after writing or modifying code') and when not to use ('For multiple files use check_files'), but does not mention alternatives like check_code or fix tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fix_all_issuesA

Automatically fix all code quality issues in a file that have available quick fixes. Applies all SonarLint-suggested fixes in one operation. Returns what was fixed and what remains (some issues require manual fixes like reducing complexity).

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesAbsolute path to the file to fix

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, description covers effects (applies fixes), return info (what fixed/remains), and limitation (manual fixes needed). Lacks details on undo or permissions, but adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no fluff, main purpose first, each sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one param and no output schema, description covers key aspects: what it does, how, and limitations. Could mention if it commits changes, but not necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, description adds no extra meaning to the filePath parameter beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it fixes all code quality issues with available quick fixes in a file, using SonarLint. It distinguishes from sibling fix_issue by targeting all issues at once.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies when to use (bulk fix) and notes some issues require manual fixes, but lacks explicit when-not or alternative tools. Still provides enough context for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fix_issueA

Automatically fix one specific code quality issue. Applies the SonarLint-suggested fix for the issue at the given file, line, and rule. The file is modified directly. To fix all issues in a file at once, use fix_all_issues instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
lineYesLine number of the issue
ruleYesRule ID (e.g., 'javascript:S3504')
filePathYesAbsolute path to the file to fix

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that 'the file is modified directly' and that it applies a SonarLint-suggested fix. With no annotations provided, this transparency is valuable. No mention of what happens on failure, but acceptable for a simple tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, followed by behavioral detail and alternative tool. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the three required parameters and no output schema, the description adequately covers the action and behavior. It could mention what happens on success or failure, but the tool is straightforward.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description mentions the three parameters (file, line, rule) but adds no additional meaning beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a clear verb ('fix') and resource ('one specific code quality issue'), and is explicitly distinguished from the sibling tool fix_all_issues. It states it applies SonarLint-suggested fix, providing precise scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: use this tool for one issue, and use fix_all_issues for all issues. It does not mention when not to use (e.g., if review is needed), but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

health_checkA

Check if the code quality analysis backend is running and healthy. Shows installed language plugins, cache stats, and version info. Use to diagnose when analysis isn't working as expected.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, but description reveals read-only nature (health check) and lists returned data. Lacks explicit safety or side-effect info, but adequate for a simple query.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first states purpose and outputs, second gives usage scenario. No fluff, front-loaded with critical info.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless health check without output schema, description covers purpose, outputs, and usage. Completeness is sufficient given simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100%. Baseline score of 4 applies as description adds no parameter details by necessity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the tool checks backend health and shows plugins, cache stats, version. Distinct from sibling tools like check_code or fix_issue.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States explicit use case: 'diagnose when analysis isn't working as expected.' Provides clear context without needing exclusions for a health check.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_rulesA

List all active code quality rules with ID, name, and severity. Use to look up what a rule means (e.g., S3776 = Cognitive Complexity), discover what issues can be detected, or see which rules apply to a language. Covers bugs, code smells, security vulnerabilities, and security hotspots.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoFilter rules by language (optional)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It correctly implies read-only behavior and mentions the types of issues covered (bugs, code smells, vulnerabilities, hotspots). It lacks details on pagination or performance, but for a simple list, it is sufficiently transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences long, front-loaded with the main purpose, and contains no redundant information. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must compensate. It mentions the return fields (ID, name, severity) and categories, but it does not fully specify the output structure (e.g., whether category is a separate field). It is mostly complete for a list tool but could be slightly more explicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one parameter 'language' with 100% description coverage (enum and description provided). The description does not add new information about the parameter beyond what the schema already states, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'active code quality rules' with specific attributes (ID, name, severity). It also distinguishes the tool from sibling tools like check_code and fix_issue, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear use cases (look up rule meaning, discover issues, see language applicability). However, it does not explicitly state when not to use this tool or mention alternatives, though the context of sibling tools implies differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.5.5
    • First observedcheck_code
    • First observedcheck_files
    • First observedcheck_quality
    • First observedfix_all_issues
    • First observedfix_issue
    • First observedhealth_check
    • First observedlist_rules

TDQS

A4.3/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: checking snippets vs single file vs multiple files, fixing all vs single issue, health check, and listing rules. No ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (check_code, check_files, check_quality, fix_all_issues, fix_issue, health_check, list_rules) using snake_case.

Tool Count5/5

7 tools is well-scoped for a code quality server, covering analysis, fixing, health, and rule listing without being too few or too many.

Completeness4/5

Covers core operations: code checking (snippet, single, batch), fixing (all or specific), health monitoring, and rule listing. Minor gaps like per-rule details, but overall complete.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers