Skip to main content
Glama
mariosss

Local Logs MCP Server

by mariosss

tail_log

Retrieve the last lines from a log file to monitor recent activity and debug applications by viewing recent log entries.

Instructions

Get the last N lines from a log file

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filenameNoName of the log file (default: combined.log)combined.log
linesNoNumber of lines to return (default: 50)

Implementation Reference

  • The tailLog method that executes the core logic of the 'tail_log' MCP tool. It reads the last N lines from the specified log file, preferring the 'tail' command on Unix-like systems and falling back to reading the entire file on Windows or if the command fails.
    tailLog(filename = 'combined.log', lines = 50) {
      try {
        const filePath = path.join(this.logsDir, filename);
        
        if (!fs.existsSync(filePath)) {
          return { 
            content: '', 
            message: `Log file ${filename} not found. Available files: ${this.getLogFiles().files.map(f => f.name).join(', ')}`,
            filename,
            lines: 0
          };
        }
    
        let content;
        try {
          if (process.platform === 'win32') {
            const fullContent = fs.readFileSync(filePath, 'utf8');
            const allLines = fullContent.split('\n');
            content = allLines.slice(-lines).join('\n');
          } else {
            content = execSync(`tail -n ${lines} "${filePath}"`, { encoding: 'utf8' });
          }
        } catch (cmdError) {
          const fullContent = fs.readFileSync(filePath, 'utf8');
          const allLines = fullContent.split('\n');
          content = allLines.slice(-lines).join('\n');
        }
    
        const actualLines = content.split('\n').filter(line => line.trim()).length;
    
        return { 
          content, 
          message: `Last ${actualLines} lines from ${filename}`,
          filename,
          lines: actualLines,
          fileSize: fs.statSync(filePath).size,
          fileSizeHuman: this.formatBytes(fs.statSync(filePath).size)
        };
      } catch (error) {
        return { content: '', error: error.message, filename };
      }
    }
  • The registration of the 'tail_log' tool in the 'tools/list' RPC method response, including its name, description, and input schema.
      name: 'tail_log',
      description: 'Get the last N lines from a log file',
      inputSchema: {
        type: 'object',
        properties: {
          filename: {
            type: 'string',
            description: 'Name of the log file (default: combined.log)',
            default: 'combined.log'
          },
          lines: {
            type: 'number',
            description: 'Number of lines to return (default: 50)',
            default: 50
          }
        },
        required: []
      }
    },
  • The dispatch case in the 'tools/call' handler that routes 'tail_log' calls to the tailLog implementation method.
    case 'tail_log':
      result = this.tailLog(args?.filename, args?.lines);
      break;
  • The JSON schema defining the input parameters for the 'tail_log' tool: optional filename (string) and lines (number).
    inputSchema: {
      type: 'object',
      properties: {
        filename: {
          type: 'string',
          description: 'Name of the log file (default: combined.log)',
          default: 'combined.log'
        },
        lines: {
          type: 'number',
          description: 'Number of lines to return (default: 50)',
          default: 50
        }
      },
      required: []
    }

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other 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/mariosss/local-logs-mcp-server'

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