code-quality-mcp
Provides code quality analysis for Angular projects, including unused code detection and AI-powered deep analysis.
Provides code quality analysis for AWS Amplify projects, supporting both fast and deep analysis modes.
Provides code quality analysis for Firebase projects, including security checks and complexity analysis.
Provides code quality analysis for NestJS projects, with smart summaries and quick win suggestions.
Provides code quality analysis for .NET projects, including logic-based and AI-powered checks.
Provides code quality analysis for Next.js projects, with support for pagination and trend tracking.
Provides code quality analysis for Node.js projects, including fast mode for CI/CD and deep mode for code reviews.
Provides code quality analysis for React and React Native projects, with smart ignore patterns for build artifacts.
Provides code quality analysis for TypeScript projects, including unused code detection and complexity analysis.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@code-quality-mcpGive me a smart summary of the code quality for my project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π Code Quality MCP Server
Hybrid Code Quality Analysis - Combines logic-based checks with AI-powered deep analysis
MCP (Model Context Protocol) system for code quality analysis. Supports two modes:
β‘ Fast Mode: Quick logic-based checks
π€ Deep Mode: AI-powered deep analysis (Claude)
π§ Installation
npm install
npm run buildRelated MCP server: Tech Debt MCP Server
βΆοΈ Running the Server
Option 1: Direct Run
npm startOption 2: Via Claude Desktop
Add to ~/.config/Claude/claude_desktop_config.json:
{
"mcpServers": {
"code-quality": {
"command": "node",
"args": ["/absolute/path/to/code-quality-mcp/dist/index.js"]
}
}
}π API Tools
π Analysis Tools
1. check_quality - Full Code Quality Check
{
"tool": "check_quality",
"arguments": {
"projectPath": ".",
"deepAnalysis": false, // true = AI mode
"checkUnusedCode": true,
"checkComplexity": false, // requires AI
"checkSecurity": false, // requires AI
"page": 1, // pagination
"pageSize": 50 // items per page
}
}Returns: Complete list of issues with pagination
π‘ Smart Tools (Recommended!)
2. get_smart_summary - Smart Summary β
Instead of 500 issues, get a focused summary:
{
"tool": "get_smart_summary",
"arguments": {
"projectPath": "."
}
}Returns:
π Score: 68/100
π Issues: 500 (120 critical)
β±οΈ Fix Time: 2 days
π₯ Top Problems:
β’ unused-code: 300 (60%)
β’ security: 50 (10%)
π Hotspot Files:
π΄ UserService.ts - 45 issues3. get_quick_wins - Quick Wins β‘
Get only actions that provide maximum impact in minimum time:
{
"tool": "get_quick_wins",
"arguments": {
"projectPath": "."
}
}Returns:
β‘ Quick Wins:
1. Remove 50 unused vars (10 min) β +15 points
2. Fix 30 console.log (5 min) β +8 points
3. Translate Hebrew comments (15 min) β +5 points
Total: 30 minutes β +28 points!4. get_trends - Progress Tracking π
See how code quality improves over time:
{
"tool": "get_trends",
"arguments": {
"projectPath": "."
}
}Returns:
π Trends:
β
Score: 45 β 68 (+23)
β
Fixed: 120 issues
β οΈ New: 15 issues
Improving:
β’ unused-code: 300 β 180 (-120)
β’ security: 10 β 5 (-5)
Degrading:
β’ code-style: 50 β 65 (+15)π§ Other Tools
5. analyze_project - Project Type Detection
{
"tool": "analyze_project",
"arguments": {
"projectPath": ".",
"deep": true
}
}6. get_recommendations - Quick Recommendations
{
"tool": "get_recommendations",
"arguments": {
"projectPath": ".",
"language": "en" // or "he" for Hebrew
}
}β‘ Fast vs Deep Mode
Feature | Fast Mode | Deep Mode |
Speed | ~20ms | ~1000ms |
Cost | Free | API calls |
Accuracy | Good | Excellent |
AI insights | β | β |
When to use Fast Mode:
During development
Before commits
In CI/CD pipelines
When to use Deep Mode:
Before Pull Requests
Code reviews
Security audits
π Examples
HOW_TO_USE.md - π― How to use this MCP in Claude (commands, examples)
examples/usage-examples.ts - Complete API examples
π Supported Platforms
Node.js / TypeScript
React / React Native
Next.js / NestJS
Firebase / AWS Amplify
Java / .NET / Angular
π Key Features
β Smart Ignore Patterns - Automatically skips:
node_modules,build,dist,.gitReact Native:
android/gradle,ios/Pods, native build foldersOnly scans your code, not auto-generated files
β Pagination - Handle large projects with many issues
β Smart Summaries - Get actionable insights instead of overwhelming lists
β Quick Wins - Find high-impact, low-effort fixes
β Trend Tracking - Monitor code quality improvements over time
Built with β€οΈ using MCP and Claude
Available Tools
6 toolsanalyze_projectC
Analyze project type and code quality
| Name | Required | Description | Default |
|---|---|---|---|
| deep | No | Perform deep analysis including nested projects | |
| projectPath | Yes | Path to the project to analyze |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It states what the tool does but does not mention return format, side effects, permissions, or the effect of the 'deep' parameter, leaving the agent without important context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is direct and front-loaded. It contains no unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and the presence of overlapping sibling tools, the description is too terse. It lacks information about what the analysis returns, how deep analysis differs, and when to choose this tool over alternatives like check_quality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for both projectPath and deep, covering 100% of parameters. The description adds no extra meaning beyond what the schema states, so a baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes project type and code quality, using a specific verb and resource. It distinguishes from siblings like check_quality by also covering project type, though the scope could be more precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use analyze_project versus sibling tools such as check_quality or get_recommendations. The description does not mention any exclusions or preferred contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_qualityC
Check code quality based on project type. Supports both fast (logic-based) and deep (AI-powered) analysis modes.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for paginated results. Default: 1 | |
| pageSize | No | Number of issues per page. Default: 50, Max: 100 | |
| aiEnabled | No | Enable AI analysis (alternative to deepAnalysis). Default: false | |
| projectPath | Yes | Path to the project | |
| projectType | No | Override detected project type | |
| deepAnalysis | No | Enable AI-powered deep analysis (slower but more accurate). Default: false | |
| checkSecurity | No | Check for security issues (requires deep analysis). Default: false | |
| checkComplexity | No | Check code complexity (requires deep analysis). Default: false | |
| checkUnusedCode | No | Check for unused code. Default: true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'Check code quality' and mentions modes, but does not disclose whether the tool is read-only, what it returns, or that certain checks (security/complexity) require deep analysisβa key behavioral constraint. This is insufficient for a tool with no annotation safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose and then providing mode information. Every word earns its place; it is concise and well-structured without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a moderately complex tool with 9 parameters, no output schema, and no annotations. The description does not mention the return format, pagination behavior, or how it relates to sibling tools like analyze_project. Given the lack of an output schema, the description should explain what the tool returns, but it omits that entirely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's mention of 'fast (logic-based) and deep (AI-powered) analysis modes' loosely maps to aiEnabled and deepAnalysis, but adds minimal new meaning beyond what the schema already describes. No parameter-specific details are added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Check code quality') and a resource ('project type'), giving a clear sense of the tool's purpose. However, it does not explicitly distinguish itself from sibling tools like analyze_project, which could serve a similar function, so it misses full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions two modes (fast and deep) but provides no guidance on when to use this tool compared to alternatives like analyze_project or get_recommendations. There is no explicit context for selecting check_quality over its siblings, leaving the agent without decision-making guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quick_winsB
Get high-impact, low-effort fixes to quickly improve code quality score
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only characterizes the output as 'high-impact, low-effort fixes' but does not state whether the tool is read-only, whether it modifies code, or what side effects might occur. It also omits any details about permissions, rate limits, or destructive potential.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler or redundancy. It earns its place by stating the tool's purpose and value proposition concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description is mostly complete. It communicates the purpose and intended outcome. However, it could benefit from noting that the tool is a read-only analysis or indicating the expected response format, but this is not critical for a low-complexity tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% since 'projectPath' is described as 'Path to the project'. The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate. No extra parameter nuances are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves high-impact, low-effort fixes aimed at improving code quality. It uses the verb 'Get' and identifies the resource (fixes) and purpose, which distinguishes it from siblings that analyze or summarize. However, it doesn't explicitly differentiate from 'get_recommendations', which may overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when one wants quick code quality improvements but provides no explicit when-to-use or when-not-to-use guidance relative to sibling tools. There are no alternatives named or exclusions stated, so the guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recommendationsC
Get code quality recommendations
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Language for recommendations (en/he) | en |
| projectPath | Yes | Path to the project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully communicate behavioral traits, but it only states 'Get code quality recommendations'. It does not disclose whether the operation is read-only, safe, or what the response structure looks like, leaving a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short and front-loaded with the key action. It wastes no words, but it is arguably too sparse, lacking depth that would make it more useful. Still, for a simple tool, the conciseness is acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should compensate by explaining what 'code quality recommendations' means, how they are generated, or how this tool differs from siblings. It does none of these, making the tool underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes both parameters (projectPath with 'Path to the project' and language with 'Language for recommendations (en/he)'), so schema coverage is 100%. The description adds no new parameter context, but the schema fully carries the load, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description provides a clear verb ('Get') and resource ('code quality recommendations'), making the tool's action understandable. However, it does not distinguish this tool from sibling tools like check_quality or get_quick_wins, so it stays at the 'clear but no sibling differentiation' level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. The description is a bare one-liner without any contextual cues, exclusions, or mention of preferred scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_smart_summaryB
Get a concise, actionable summary of code quality instead of full issue list
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It states the tool returns a 'concise, actionable summary' but does not describe the output format, whether it is a read-only operation, how the summary is generated, or any side effects. This leaves significant behavioral ambiguity for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the purpose and includes a useful qualifier ('instead of full issue list'). No wasted words; it is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one parameter and no output schema. The description adequately conveys the basic purpose for selection but lacks details about return value structure and edge cases. Given the simplicity, it is minimally complete but not rich enough to fully inform an agent about expected output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of the parameter descriptions (projectPath is described as 'Path to the project'). The description adds no additional parameter-level meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides a 'concise, actionable summary of code quality', which is a specific verb and resource. It differentiates from a 'full issue list' but does not explicitly name sibling tools, leaving some ambiguity among get_recommendations, get_quick_wins, and get_trends. Thus it is clear but not fully distinctive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'instead of full issue list' implies the tool should be used when a summary is preferred over a detailed list, which is useful context. However, no explicit when-to-use versus alternatives are given, and sibling tools like get_recommendations or get_quick_wins are not mentioned. Usage guidance is primarily implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trendsA
See how code quality is improving or degrading over time
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of explaining the tool's behavior. It only states the general purpose and does not disclose whether the operation is read-only, what data source is used, how the output is structured, or any limitations. This lack of transparency leaves the agent guessing about side effects or expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, succinct sentence that is front-loaded with the key action and resource. Every word earns its place, and there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
As a simple tool with one parameter and no output schema, the description provides the essential purpose but leaves gaps: it does not indicate the nature of the output (e.g., a report, chart, or list), the time range covered, or any prerequisites. For a tool of this complexity, a bit more context would improve completeness, but it is not severely deficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter, projectPath, with a clear description ('Path to the project'). Since schema coverage is 100%, the schema fully documents the parameter. The description adds no additional semantic detail, which is acceptable at the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('See') and clearly identifies the resource and scope: code quality trends over time. It distinguishes itself from sibling tools like check_quality or get_quick_wins by focusing on temporal progression, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for tracking how code quality changes over time, which suggests using this tool when historical context is needed rather than a one-time snapshot. However, it does not explicitly name alternatives or provide exclusions, so guidance is only implicit.
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. Dates show when Glama detected each change.
6 tool updates
v1.0.0- First observed
analyze_project - First observed
check_quality - First observed
get_quick_wins - First observed
get_recommendations - First observed
get_smart_summary - First observed
get_trends
TDQS
analyze_project and check_quality overlap in purpose, both analyzing project type and quality. The get_recommendations, get_smart_summary, and get_quick_wins tools are related but distinct in output style, so disambiguation is moderate.
All tool names consistently follow a verb_noun pattern (analyze_project, check_quality, get_recommendations, etc.). The use of get_ for most retrieval functions is uniform and predictable.
Six tools is within the ideal 3-15 range for a focused code-quality server. Each tool addresses a specific aspect of the domain without bloat.
The tool set covers analysis, quality checking, recommendations, summaries, quick wins, and trends, providing a comprehensive view of code quality. Missing a raw issue list or fix application is a minor gap, but agents can work around it via the existing tools.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI-powered codebase analysis β call graphs, security, dead code, complexity. 150+ tools.
Enterprise code intelligence for M&A, security audits, and tech debt. Hosted server with 200k free.
Code intelligence platform for AI agents. 20 tools for architecture, security & impact analysis.
Read-only AI coding tools for change verification, release readiness, capacity, and guidance.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides comprehensive codebase analysis including project structure evaluation, cross-language duplicate detection, microservices validation, and configuration optimization with AI-powered pattern learning that generates actionable improvement reports.MIT
- AlicenseAqualityBmaintenanceA server for analyzing technical debt across multiple programming languages, integrating with MCP-compatible tools to detect code quality issues and provide prioritized recommendations.16887MIT
- AlicenseAqualityBmaintenanceAn MCP server that provides local code quality analysis for AI coding assistants, supporting file analysis, git diff review, and full project scanning with quality scoring.43MIT
- FlicenseNot gradedqualityDmaintenanceAI-powered code quality analysis that detects security issues, bugs, code smells, and performance problems across multiple languages.4-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/zoharazr/code-quality-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server