Skip to main content
Glama

my-project-repo_get_operation_logs

Retrieve operation logs for Git repository management to track batch commits, pushes, and synchronization activities across multiple repositories.

Instructions

[My Awesome Project] Get operation logs

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoLimit count, default 50
offsetNoOffset, default 0

Implementation Reference

  • Handler function that implements the core logic of 'my-project-repo_get_operation_logs' tool. It validates input parameters (limit, offset), slices the operationLogs array accordingly, and returns paginated logs with metadata.
    // Get operation logs
    async get_operation_logs(params) {
      const { limit = 50, offset = 0 } = params || {};
    
      // Validate parameters
      if (typeof limit !== 'number' || limit < 1 || limit > 1000) {
        throw new Error('limit parameter must be between 1-1000');
      }
    
      if (typeof offset !== 'number' || offset < 0) {
        throw new Error('offset parameter must be greater than or equal to 0');
      }
    
      // Return logs from memory
      const logs = operationLogs.slice(offset, offset + limit);
    
      return {
        logs: logs,
        total: operationLogs.length,
        limit: limit,
        offset: offset,
        hasMore: offset + limit < operationLogs.length
      };
    }
  • Registration of the tool in the 'tools/list' MCP method. Dynamically constructs the tool name as 'my-project-repo_get_operation_logs' using REPO_NAME prefix via getToolName, includes description and input schema.
    // Add get_operation_logs tool
    tools.push({
      name: getToolName('get_operation_logs'),
      description: getToolDescription('Get operation logs'),
      inputSchema: {
        type: 'object',
        properties: {
          limit: {
            type: 'number',
            description: 'Limit count, default 50'
          },
          offset: {
            type: 'number',
            description: 'Offset, default 0'
          }
        }
      }
    });
  • JSON schema for tool inputs, defining optional pagination parameters 'limit' (1-1000) and 'offset' (>=0). Used in registration and validation.
    inputSchema: {
      type: 'object',
      properties: {
        limit: {
          type: 'number',
          description: 'Limit count, default 50'
        },
        offset: {
          type: 'number',
          description: 'Offset, default 0'
        }
      }
    }
  • Utility function that records all tool calls (including this one) to in-memory operationLogs array and file log. Called after every tool execution.
    const logRequest = (method, params, result, error = null) => {
      const logEntry = {
        id: Date.now(),
        method,
        params: JSON.stringify(params),
        result: result ? JSON.stringify(result) : null,
        error: error ? error.toString() : null,
        created_at: new Date().toISOString()
      };
    
      operationLogs.unshift(logEntry);
      if (operationLogs.length > MAX_LOGS) {
        operationLogs.splice(MAX_LOGS);
      }
    
      // Record request and response data
      const logLine = `${logEntry.created_at} | ${method} | ${logEntry.params} | ${error || 'SUCCESS'} | RESPONSE: ${logEntry.result || 'null'}\n`;
    
      try {
        ensureLogDir();
        const { fullPath } = getLogConfig();
        fs.appendFileSync(fullPath, logLine, 'utf8');
      } catch (err) {
        console.error('Failed to write log file:', err.message);
      }
    };
  • Global in-memory array storing up to 1000 recent operation logs, which the handler queries and paginates.
    // In-memory log storage
    const operationLogs = [];
    const MAX_LOGS = 1000;

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/liliangshan/mcp-server-mgit'

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