Skip to main content
Glama
grzetich

AI Developer Tools MCP Server

by grzetich

get_trending_tools

Discover AI developer tools with the highest adoption growth rates over specified time periods, filtered by category to identify trending technologies for development workflows.

Instructions

Get the fastest-growing AI developer tools over a time period, ranked by adoption growth rate

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
time_rangeNoTime period to analyze for growth trends30d
limitNoMaximum number of tools to return (3-10)
categoryNoFilter by tool category, or "all" for no filterall

Implementation Reference

  • The async execute function that performs the core logic: fetches tools, filters by category, computes growth metrics, sorts by growth percentage, limits results, and formats a markdown response with rankings.
    async execute(args) {
      const { time_range = '30d', limit = 5, category = 'all' } = args;
    
      // Get all tools with their current metrics
      let toolsList = getToolsByMetric('npm_downloads_monthly');
    
      // Filter by category if specified
      if (category !== 'all') {
        toolsList = toolsList.filter(t => t.category === category);
      }
    
      // Calculate growth for each tool
      const months = time_range === '90d' ? 3 : 1;
      const toolsWithGrowth = toolsList.map(tool => {
        const growth = getGrowthMetrics(tool.id, months);
        return {
          ...tool,
          growth_pct: growth?.growth_pct || 0,
          current_downloads: growth?.current || tool.npm_downloads_monthly
        };
      });
    
      // Sort by growth rate (descending)
      toolsWithGrowth.sort((a, b) => b.growth_pct - a.growth_pct);
    
      // Take top N
      const trending = toolsWithGrowth.slice(0, limit);
    
      // Format output
      let output = `πŸš€ Trending AI Developer Tools\n`;
      output += `πŸ“… Period: ${time_range}`;
      if (category !== 'all') {
        output += ` | Category: ${category}`;
      }
      output += `\n\n`;
    
      // Rankings
      output += `**Fastest Growing**\n`;
      trending.forEach((tool, index) => {
        const rank = index + 1;
        const growthIcon = tool.growth_pct > 50 ? 'πŸ”₯' :
                          tool.growth_pct > 20 ? '⚑' : 'πŸ“ˆ';
    
        output += `${rank}. ${growthIcon} **${tool.name}**\n`;
        output += `   - Growth: +${tool.growth_pct.toFixed(1)}% over ${time_range}\n`;
        output += `   - Current: ${formatNumber(tool.current_downloads)} downloads/month\n`;
        output += `   - ${tool.description}\n`;
      });
    
      // Context note
      output += `\n_Growth calculated from ${time_range} historical data_`;
    
      return output;
    }
  • JSON Schema defining the input parameters for the tool: time_range (7d/30d/90d), limit (3-10), category filter.
    inputSchema: {
      type: 'object',
      properties: {
        time_range: {
          type: 'string',
          enum: ['7d', '30d', '90d'],
          default: '30d',
          description: 'Time period to analyze for growth trends'
        },
        limit: {
          type: 'integer',
          minimum: 3,
          maximum: 10,
          default: 5,
          description: 'Maximum number of tools to return (3-10)'
        },
        category: {
          type: 'string',
          enum: ['llm-api', 'editor', 'assistant', 'framework', 'all'],
          default: 'all',
          description: 'Filter by tool category, or "all" for no filter'
        }
      }
    },
  • src/index.js:65-70 (registration)
    Registration of the trendingTool in the central tools array used by the MCP server for list and call handlers.
    const tools = [
      compareTool,
      trendingTool,
      historyTool,
      searchTool
    ];
  • src/index.js:30-30 (registration)
    Import statement that brings the trendingTool into the main server index for registration.
    import { trendingTool } from './tools/trending.js';
  • Utility function to format large numbers for display (K/M suffixes).
    function formatNumber(num) {
      if (num >= 1_000_000) {
        return `${(num / 1_000_000).toFixed(1)}M`;
      } else if (num >= 1_000) {
        return `${(num / 1_000).toFixed(0)}K`;
      }
      return num.toString();

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/grzetich/ai-developer-tools-mcp'

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