Skip to main content
Glama
ahmad2x4
by ahmad2x4

get-events

Retrieve and analyze structured event logs from the Seq server based on filters like signal IDs, time range, or event type (e.g., error, debug). Use it to investigate logged events, identify error patterns, and monitor system activity.

Instructions

Retrieve and analyze a list of event filtered by parameters. Use this tool when you need to:

  • Investigate events that are being logged in the SEQ server

  • Details of each event is a structured log and can provide usefull information

  • Events could be information, error, debug, or critical

  • Analyze error patterns and frequencies

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
countNoNumber of events to return (max 100)
filterNoFilter expression for events
fromDateUtcNoStart date/time in UTC
rangeNoTime range (e.g., 1m, 15m, 1h, 1d, 7d)
signalNoComma-separated list of signal IDs
toDateUtcNoEnd date/time in UTC

Implementation Reference

  • The handler function that implements the core logic of the get-events tool. It builds query parameters from inputs and calls the Seq API to retrieve events.
    async ({ signal, filter, count, fromDateUtc, toDateUtc, range }) => { try { const params: Record<string, string> = {}; // Handle date range parameters if (range) { // If range is provided, it takes precedence over fromDateUtc/toDateUtc params.range = range; } else if (fromDateUtc || toDateUtc) { // Only add date parameters if they're provided if (fromDateUtc) params.fromDateUtc = fromDateUtc; if (toDateUtc) params.toDateUtc = toDateUtc; } else { // Default to last hour if no time parameters provided params.range = '1h'; } // Add other optional parameters if (signal) params.signal = signal; if (filter) params.filter = filter; if (count) params.count = count.toString(); const events = await makeSeqRequest<Event[]>('/api/events', params); return { content: [{ type: "text", text: JSON.stringify(events) }] }; } catch (error) { const err = error as Error; return { content: [{ type: "text", text: `Error fetching events: ${err.message}` }], isError: true }; } }
  • Zod schemas defining the input parameters for the get-events tool, including time range enum and optional fields for filtering and pagination.
    const timeRangeSchema = z.enum(['1m', '15m', '30m', '1h', '2h', '6h', '12h', '1d', '7d', '14d', '30d']); // Tool for fetching events with enhanced parameters server.tool( "get-events", `Retrieve and analyze a list of event filtered by parameters. Use this tool when you need to: - Investigate events that are being logged in the SEQ server - Details of each event is a structured log and can provide usefull information - Events could be information, error, debug, or critical - Analyze error patterns and frequencies `, { signal: z.string().optional() .describe('Comma-separated list of signal IDs'), filter: z.string().optional() .describe('Filter expression for events'), count: z.number().min(1).max(MAX_EVENTS).optional() .default(MAX_EVENTS) .describe(`Number of events to return (max ${MAX_EVENTS})`), fromDateUtc: z.string().optional() .describe('Start date/time in UTC'), toDateUtc: z.string().optional() .describe('End date/time in UTC'), range: timeRangeSchema.optional() .describe('Time range (e.g., 1m, 15m, 1h, 1d, 7d)') },
  • The server.tool call that registers the get-events tool with the MCP server, including name, description, schema, and handler.
    server.tool( "get-events", `Retrieve and analyze a list of event filtered by parameters. Use this tool when you need to: - Investigate events that are being logged in the SEQ server - Details of each event is a structured log and can provide usefull information - Events could be information, error, debug, or critical - Analyze error patterns and frequencies `, { signal: z.string().optional() .describe('Comma-separated list of signal IDs'), filter: z.string().optional() .describe('Filter expression for events'), count: z.number().min(1).max(MAX_EVENTS).optional() .default(MAX_EVENTS) .describe(`Number of events to return (max ${MAX_EVENTS})`), fromDateUtc: z.string().optional() .describe('Start date/time in UTC'), toDateUtc: z.string().optional() .describe('End date/time in UTC'), range: timeRangeSchema.optional() .describe('Time range (e.g., 1m, 15m, 1h, 1d, 7d)') }, async ({ signal, filter, count, fromDateUtc, toDateUtc, range }) => { try { const params: Record<string, string> = {}; // Handle date range parameters if (range) { // If range is provided, it takes precedence over fromDateUtc/toDateUtc params.range = range; } else if (fromDateUtc || toDateUtc) { // Only add date parameters if they're provided if (fromDateUtc) params.fromDateUtc = fromDateUtc; if (toDateUtc) params.toDateUtc = toDateUtc; } else { // Default to last hour if no time parameters provided params.range = '1h'; } // Add other optional parameters if (signal) params.signal = signal; if (filter) params.filter = filter; if (count) params.count = count.toString(); const events = await makeSeqRequest<Event[]>('/api/events', params); return { content: [{ type: "text", text: JSON.stringify(events) }] }; } catch (error) { const err = error as Error; return { content: [{ type: "text", text: `Error fetching events: ${err.message}` }], isError: true }; } } );
  • Utility function makeSeqRequest used by the get-events handler to perform authenticated HTTP requests to the Seq API endpoints.
    async function makeSeqRequest<T>(endpoint: string, params: Record<string, string> = {}): Promise<T> { const url = new URL(`${SEQ_BASE_URL}${endpoint}`); // Add API key as query parameter url.searchParams.append('apiKey', SEQ_API_KEY); // Add additional query parameters Object.entries(params).forEach(([key, value]) => { if (value !== undefined && value !== null) { url.searchParams.append(key, value); } }); const headers: Record<string, string> = { 'Accept': 'application/json', 'X-Seq-ApiKey': SEQ_API_KEY }; const response = await fetch(url.toString(), { headers }); if (!response.ok) { throw new Error(`SEQ API error: ${response.statusText} (${response.status})`); } return response.json(); }

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/ahmad2x4/mcp-server-seq'

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