Skip to main content
Glama

list_maven_versions

Retrieve sorted Maven dependency versions by last updated date. Specify a dependency coordinate, version depth, and exclude pre-releases to fetch relevant version data efficiently.

Instructions

List Maven dependency versions sorted by last updated date (most recent first)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dependencyYesMaven coordinate in format "groupId:artifactId[:packaging][:classifier]" (e.g. "org.springframework:spring-core" or "org.springframework:spring-core:jar")
depthNoNumber of versions to return (default: 15)
excludePreReleasesNoWhether to exclude pre-release versions (alpha, beta, milestone, RC, snapshot). Default: true

Implementation Reference

  • Executes the list_maven_versions tool: validates input, parses Maven coordinate, queries Maven Central API sorted by timestamp, filters pre-releases if requested, limits to depth, returns formatted list of versions.
    private async handleListVersions(args: unknown) { if (!isValidListVersionsArgs(args)) { throw new McpError( ErrorCode.InvalidParams, 'Invalid Maven dependency format' ); } const coord = parseMavenCoordinate(args.dependency); const depth = args.depth || 15; const excludePreReleases = args.excludePreReleases ?? true; // Default to true try { let query = `g:"${coord.groupId}" AND a:"${coord.artifactId}"`; if (coord.packaging) { query += ` AND p:"${coord.packaging}"`; } const response = await this.axiosInstance.get<MavenSearchResponse>('', { params: { q: query, core: 'gav', rows: 100, wt: 'json', sort: 'timestamp desc', }, }); if (!response.data.response.docs.length) { return { content: [ { type: 'text', text: `No Maven dependency found for ${coord.groupId}:${coord.artifactId}${coord.packaging ? ':' + coord.packaging : ''}`, }, ], isError: true, }; } // Filter versions if needed let filteredDocs = response.data.response.docs; if (excludePreReleases) { filteredDocs = filteredDocs.filter(doc => !isPreReleaseVersion(doc.v)); } if (filteredDocs.length === 0) { return { content: [ { type: 'text', text: excludePreReleases ? `No stable releases found for ${coord.groupId}:${coord.artifactId}${coord.packaging ? ':' + coord.packaging : ''}. All available versions are pre-releases.` : `No Maven dependency found for ${coord.groupId}:${coord.artifactId}${coord.packaging ? ':' + coord.packaging : ''}`, }, ], isError: true, }; } const versions = filteredDocs .sort((a, b) => b.timestamp - a.timestamp) .slice(0, depth) .map(doc => `${doc.v} (${new Date(doc.timestamp).toISOString().split('T')[0]})`); return { content: [ { type: 'text', text: versions.join('\n'), }, ], }; } catch (error) { if (axios.isAxiosError(error)) { return { content: [ { type: 'text', text: `Maven Central API error: ${ error.response?.data?.error?.msg ?? error.message }`, }, ], isError: true, }; } throw error; } }
  • src/index.ts:163-187 (registration)
    Registers the list_maven_versions tool in the ListTools response, including name, description, and input schema.
    { name: 'list_maven_versions', description: 'List Maven dependency versions sorted by last updated date (most recent first)', inputSchema: { type: 'object', properties: { dependency: { type: 'string', description: 'Maven coordinate in format "groupId:artifactId[:packaging][:classifier]" (e.g. "org.springframework:spring-core" or "org.springframework:spring-core:jar")', }, depth: { type: 'number', description: 'Number of versions to return (default: 15)', minimum: 1, maximum: 100, }, excludePreReleases: { type: 'boolean', description: 'Whether to exclude pre-release versions (alpha, beta, milestone, RC, snapshot). Default: true', default: true, }, }, required: ['dependency'], }, },
  • src/index.ts:197-198 (registration)
    Registers the handler dispatch for list_maven_versions in the CallToolRequest switch statement.
    case 'list_maven_versions': return this.handleListVersions(request.params.arguments);
  • Type guard / validator for list_maven_versions input arguments.
    const isValidListVersionsArgs = ( args: any ): args is { dependency: string; depth?: number; excludePreReleases?: boolean } => typeof args === 'object' && args !== null && typeof args.dependency === 'string' && (args.depth === undefined || (typeof args.depth === 'number' && args.depth > 0)) && (args.excludePreReleases === undefined || typeof args.excludePreReleases === 'boolean');
  • Helper function to parse Maven coordinate string into structured object, used by list_maven_versions handler.
    const parseMavenCoordinate = (dependency: string): MavenCoordinate => { const parts = dependency.split(':'); if (parts.length < 2) { throw new McpError( ErrorCode.InvalidParams, 'Invalid Maven coordinate format. Minimum format is "groupId:artifactId"' ); } return { groupId: parts[0], artifactId: parts[1], version: parts[2], packaging: parts[3], classifier: parts[4] }; };

Other Tools

Related Tools

Latest Blog Posts

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/Bigsy/maven-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server