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]
      };
    };

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

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