get-incidents
Retrieve and filter incidents from Datadog's incident management system. Supports active/archived status and query-based searches to review current or past incidents efficiently.
Instructions
List incidents from Datadog's incident management system. Can filter by active/archived status and use query strings to find specific incidents. Helpful for reviewing current or past incidents.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| includeArchived | No | ||
| limit | No | ||
| pageOffset | No | ||
| pageSize | No | ||
| query | No |
Implementation Reference
- src/tools/getIncidents.ts:34-80 (handler)The primary handler function that performs the API call to Datadog's IncidentsApi.listIncidents, maps parameters, handles pagination/limit client-side, and manages errors including 403 auth failures.execute: async (params: GetIncidentsParams) => { try { const { includeArchived, pageSize, pageOffset, query, limit } = params; const apiInstance = new v2.IncidentsApi(configuration); const apiParams: any = {}; if (includeArchived !== undefined) { apiParams.include_archived = includeArchived; } if (pageSize !== undefined) { apiParams.page_size = pageSize; } if (pageOffset !== undefined) { apiParams.page_offset = pageOffset; } if (query !== undefined) { apiParams.query = query; } const response = await apiInstance.listIncidents(apiParams); // Apply client-side limit if specified if (limit && response.data && response.data.length > limit) { response.data = response.data.slice(0, limit); } return response; } catch (error: any) { if (error.status === 403) { console.error( "Authorization failed (403 Forbidden): Check that your API key and Application key are valid and have sufficient permissions to access incidents." ); throw new Error( "Datadog API authorization failed. Please verify your API and Application keys have the correct permissions." ); } else { console.error("Error fetching incidents:", error); throw error; } } } };
- src/tools/getIncidents.ts:3-9 (schema)TypeScript type definition for the input parameters used by the get-incidents tool handler, matching the Zod schema in registration.type GetIncidentsParams = { includeArchived?: boolean; pageSize?: number; pageOffset?: number; query?: string; limit?: number; };
- src/index.ts:197-213 (registration)MCP server tool registration for 'get-incidents', including tool name, description, Zod input schema, and async wrapper that delegates to getIncidents.execute() and formats response as MCP content.server.tool( "get-incidents", "List incidents from Datadog's incident management system. Can filter by active/archived status and use query strings to find specific incidents. Helpful for reviewing current or past incidents.", { includeArchived: z.boolean().optional(), pageSize: z.number().optional(), pageOffset: z.number().optional(), query: z.string().optional(), limit: z.number().default(100) }, async (args) => { const result = await getIncidents.execute(args); return { content: [{ type: "text", text: JSON.stringify(result) }] }; } );
- src/tools/getIncidents.ts:14-32 (helper)Initialization function that sets up the Datadog API client configuration with auth keys, site, and enables the unstable v2.listIncidents operation. Called during server startup.initialize: () => { const configOpts = { authMethods: { apiKeyAuth: process.env.DD_API_KEY, appKeyAuth: process.env.DD_APP_KEY } }; configuration = client.createConfiguration(configOpts); if (process.env.DD_SITE) { configuration.setServerVariables({ site: process.env.DD_SITE }); } // Enable the unstable operation configuration.unstableOperations["v2.listIncidents"] = true; },