Skip to main content
Glama

get_metrics

Retrieve server performance metrics to monitor system health and optimize resource allocation for memory management operations.

Instructions

獲取服務器性能指標

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Handler function for the 'get_metrics' MCP tool. It executes the tool logic by calling globalMetrics.getMetrics() to retrieve comprehensive server performance metrics.
    async handler() {
      return globalMetrics.getMetrics();
    }
  • src/index.js:186-194 (registration)
    Registration of the 'get_metrics' tool in the tool registry. Includes name, description, empty input schema (no parameters), system scope, and inline handler.
    registerTool({
      name: 'get_metrics',
      description: '獲取服務器性能指標',
      inputSchema: z.object({}),
      scope: 'system',
      async handler() {
        return globalMetrics.getMetrics();
      }
    }, 'system');
  • Zod input schema for the 'get_metrics' tool: empty object schema indicating no input parameters are required.
    inputSchema: z.object({}),
  • Core implementation of getMetrics() method in MetricsCollector class. Computes and returns detailed performance metrics: uptime, request counts/error rates, latency percentiles (p50/p95/p99), cache statistics, memory usage, and tool-specific stats.
    getMetrics() {
      const now = Date.now();
      const uptime = now - this.startTime;
      const uptimeSeconds = Math.floor(uptime / 1000);
    
      // 計算請求率
      const requestsPerSecond = this.requestCount / (uptimeSeconds || 1);
    
      // 計算錯誤率
      const errorRate = this.requestCount > 0
        ? (this.errorCount / this.requestCount * 100).toFixed(2)
        : 0;
    
      // 計算持續時間統計
      const avgDuration = this.durations.length > 0
        ? this.durations.reduce((sum, d) => sum + d, 0) / this.durations.length
        : 0;
    
      // 計算緩存命中率
      const totalCacheAccess = this.cacheHits + this.cacheMisses;
      const cacheHitRate = totalCacheAccess > 0
        ? (this.cacheHits / totalCacheAccess * 100).toFixed(2)
        : 0;
    
      // 獲取最新內存使用
      const latestMemory = this.memorySnapshots.length > 0
        ? this.memorySnapshots[this.memorySnapshots.length - 1]
        : process.memoryUsage();
    
      return {
        uptime: {
          ms: uptime,
          seconds: uptimeSeconds,
          human: this.formatUptime(uptimeSeconds)
        },
        requests: {
          total: this.requestCount,
          success: this.successCount,
          error: this.errorCount,
          errorRate: `${errorRate}%`,
          requestsPerSecond: requestsPerSecond.toFixed(2)
        },
        latency: {
          avg: avgDuration.toFixed(2),
          p50: percentile(this.durations, 0.50).toFixed(2),
          p95: percentile(this.durations, 0.95).toFixed(2),
          p99: percentile(this.durations, 0.99).toFixed(2),
          max: this.durations.length > 0 ? Math.max(...this.durations).toFixed(2) : 0,
          unit: 'ms'
        },
        cache: {
          hits: this.cacheHits,
          misses: this.cacheMisses,
          total: totalCacheAccess,
          hitRate: `${cacheHitRate}%`
        },
        memory: {
          rss: `${(latestMemory.rss / 1024 / 1024).toFixed(2)} MB`,
          heapTotal: `${(latestMemory.heapTotal / 1024 / 1024).toFixed(2)} MB`,
          heapUsed: `${(latestMemory.heapUsed / 1024 / 1024).toFixed(2)} MB`,
          external: `${(latestMemory.external / 1024 / 1024).toFixed(2)} MB`
        },
        toolStats: this.getToolStats()
      };
    }

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/win10ogod/memory-mcp-server'

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