@springsoftware/pmd-mcp
v0.1.2
Published
MCP server for PMD static code analyzer - enables AI assistants to run code analysis
Maintainers
Readme
PMD MCP Server
A Model Context Protocol (MCP) server that provides PMD static code analysis capabilities to AI assistants.
Features
pmd_check- Run PMD static analysis on source filespmd_cpd- Detect copy-paste (duplicated) codepmd_list_languages- List supported programming languagespmd_list_rulesets- List available rulesets for analysis
Requirements
- Node.js 18+
- PMD installed locally (via Homebrew, or in PATH)
Installing PMD
# macOS (Homebrew)
brew install pmd
# Verify installation
pmd --versionInstallation
For Windsurf / Cursor / VS Code
Add to your MCP configuration (.mcp.json or settings):
{
"mcpServers": {
"pmd": {
"command": "npx",
"args": ["@springsoftware/pmd-mcp"]
}
}
}For Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"pmd": {
"command": "npx",
"args": ["@springsoftware/pmd-mcp"]
}
}
}Usage Examples
Run PMD Analysis
Use pmd_check to analyze /path/to/my/java/project for code quality issuesDetect Duplicated Code
Use pmd_cpd to find duplicated Python code in /path/to/project with minimum 75 tokensList Available Rulesets
What PMD rulesets are available for Java?Tools Reference
pmd_check
Run PMD static code analysis on source files.
Parameters:
path(required) - Path to source file or directoryrulesets- Array of rulesets to apply (default: quickstart)language_version- Language version (e.g., "java-21")minimum_priority- Minimum priority to report (1-5)excludes- File patterns to exclude
Example:
{
"path": "/Users/me/project/src",
"rulesets": ["category/java/bestpractices.xml", "category/java/errorprone.xml"],
"minimum_priority": 3
}pmd_cpd
Run copy-paste detection to find duplicated code.
Parameters:
path(required) - Path to source file or directorylanguage(required) - Programming language (python, java, typescript, etc.)minimum_tokens- Minimum token count for duplication (default: 50)ignore_literals- Ignore literal valuesignore_identifiers- Ignore identifier namesexcludes- File patterns to exclude
Example:
{
"path": "/Users/me/project",
"language": "python",
"minimum_tokens": 75,
"ignore_literals": true
}pmd_list_languages
List all supported programming languages.
pmd_list_rulesets
List available rulesets, optionally filtered by language.
Parameters:
language- Filter by language (e.g., "java", "apex")
Supported Languages
Static Analysis (pmd_check)
- Java, JavaScript (ECMAScript), Apex, Kotlin, Swift
- HTML, XML, XSL, JSP, Velocity
- PL/SQL, Modelica, Scala, Visualforce
Copy-Paste Detection (pmd_cpd)
- Python, Java, JavaScript, TypeScript, Kotlin, Swift
- Go, Ruby, Rust, Scala, C/C++, C#, PHP
- And many more...
Development
# Install dependencies
npm install
# Build
npm run build
# Run in development mode
npm run dev
# Run tests
npm testLicense
BSD-4-Clause (same as PMD)
