jshookmcp
Reverse-engineering workbench for web pages, JavaScript bundles, WASM, native processes and APKs
Maven and Gradle dependency lookups, upgrade checks, CVE scans and end-of-life status for JVM projects
By Kirill Rozov (individual) Python Local · stdio Developer toolsSecurity
44 popularity score ★ 37 ↓ 5.3k/mo
Opens the app, which asks before it adds the server.
claude mcp add maven -- uvx maven-mcp{
"mcpServers": {
"maven": {
"command": "uvx",
"args": [
"maven-mcp"
]
}
}
}{
"mcpServers": {
"maven": {
"command": "uvx",
"args": [
"maven-mcp"
]
}
}
}{
"servers": {
"maven": {
"type": "stdio",
"command": "uvx",
"args": [
"maven-mcp"
]
}
}
}[mcp_servers.maven]
command = "uvx"
args = ["maven-mcp"]gemini mcp add --scope user maven uvx -- maven-mcpGITHUB_TOKEN |
Optional: Raises the GitHub API limit from 60 to 5000 requests per hour for changelogs and health checks. |
|---|---|
MAVEN_MCP_OFFLINE |
Optional: Stops contact with public Maven, Google and Plugin Portal hosts and the enrichment APIs. |
MAVEN_MCP_REPOSITORY_BASE |
Optional: Internal Nexus or Artifactory group URL that replaces the public repositories. |
MAVEN_MCP_PUBLIC_FALLBACK |
Optional: Also query public repositories when the build declares its own. |
MAVEN_MCP_SETTINGS |
Optional: Path to a Maven settings.xml for mirrors and credentials. |
MAVEN_MCP_CACHE_DISABLE |
Optional: Turns off the on-disk response cache. |
MAVEN_MCP_GRADLE_TIMEOUT |
Optional: Seconds allowed for the Gradle wrapper run during a scan (default 300). |
MAVEN_MCP_TRANSPORT |
Optional: Set to http to serve POST /mcp instead of stdio. |
MAVEN_MCP_HTTP_HOST |
Optional: Bind address in HTTP mode (default 127.0.0.1). |
MAVEN_MCP_HTTP_PORT |
Optional: Port in HTTP mode (default 8765). |
maven-mcp is a Python MCP server for JVM dependency work. It answers questions about Maven artifacts (latest stable version, whether a version exists, what changed between two releases) and scans a Gradle or Maven project to report outdated libraries, known vulnerabilities, license posture and version conflicts.
Version lookups go to the repositories the build file declares, falling back to Maven Central, Google Maven and the Gradle Plugin Portal when none are declared. Vulnerability data comes from OSV.dev, transitive graphs and licenses from deps.dev, release notes from AndroidX and AGP docs or GitHub releases, and JDK, Kotlin, Gradle and Spring Boot support dates from endoflife.date. Gradle projects are scanned by running the project's own wrapper once to read the resolved runtime classpaths; Maven projects are read from pom.xml.
It ships as a plugin for Claude Code, Grok Build, Cursor and Codex that bundles the server with slash-command skills and pre-edit hooks that can block a suspicious coordinate in a build file. Other clients run the published PyPI package with uvx over stdio, or start it in a stateless Streamable HTTP mode. For locked-down networks it has an offline mode, an internal repository base for Nexus or Artifactory, settings.xml mirror support and per-repository credentials.
| Runtime | Python 3.9+ |
|---|
Python 3.9 or newer (standard library only, no pip dependencies); uv when run as uvx maven-mcp outside the plugin. Scanning a Gradle project needs the project's Gradle wrapper and a JDK able to run it. Private repositories need credentials in environment variables, ~/.m2/settings.xml or ~/.gradle/gradle.properties. The plugin hooks need jq and timeout (gtimeout on macOS).
Without GITHUB_TOKEN, changelog and health lookups share GitHub's 60 requests per hour. In offline mode the checks that call OSV, GitHub, deps.dev, Android docs or endoflife.date return an unavailable marker, so an empty result there is not a clean bill. Gradle scans read production runtime classpaths only and time out after 300 seconds by default. EOL status covers JDK, Kotlin, Gradle and Spring Boot. The upgrade-closure comparison is advisory. The HTTP mode has no authentication. It is not distributed on npm or Homebrew. Under Codex, a hook's deny does not stop the edit.
Suits Java, Kotlin and Android developers who want an assistant to pick correct dependency versions, catch made-up coordinates and audit a Gradle or Maven build for updates, CVEs and licenses, including teams behind Nexus or Artifactory with no public internet. It runs locally, reads rather than edits the build, and needs no account. It is a community project, not from Sonatype or Gradle. Its Gradle scan runs the project's wrapper, so skip it for repositories whose build scripts you do not trust, or stick to the coordinate lookups.
get_latest_versioncheck_version_existscheck_multiple_dependenciescompare_dependency_versionsget_dependency_changesscan_project_dependenciesexpand_bomget_transitive_graphget_vulnerability_pathsdetect_dependency_conflictscheck_version_compatibilityget_dependency_vulnerabilitiesget_dependency_healthget_dependency_licensecheck_license_compliancesearch_artifactsaudit_project_dependenciescatalog_entryverify_coordinatesget_eol_statuscompare_upgrade_closure