Skip to main content
Glama

Last9 Observability MCP

Official
Apache 2.0
122
45
  • Apple
tools.go5.13 kB
package main import ( "net/http" "time" "last9-mcp/internal/alerting" "last9-mcp/internal/apm" "last9-mcp/internal/change_events" "last9-mcp/internal/models" "last9-mcp/internal/telemetry/logs" "last9-mcp/internal/telemetry/traces" "github.com/modelcontextprotocol/go-sdk/mcp" last9mcp "github.com/last9/mcp-go-sdk/mcp" ) // registerAllTools registers all tools with the MCP server using the new SDK pattern func registerAllTools(server *last9mcp.Last9MCPServer, cfg models.Config) error { client := last9mcp.WithHTTPTracing(&http.Client{ Timeout: 30 * time.Second, }) // Register exceptions tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "get_exceptions", Description: traces.GetExceptionsDescription, }, traces.NewGetExceptionsHandler(client, cfg)) // Register service summary tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "get_service_summary", Description: apm.GetServiceSummaryDescription, }, apm.NewServiceSummaryHandler(client, cfg)) // Register service environments tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "get_service_environments", Description: apm.GetServiceEnvironmentsDescription, }, apm.NewServiceEnvironmentsHandler(client, cfg)) // Register service performance details tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "get_service_performance_details", Description: apm.GetServicePerformanceDetails, }, apm.NewServicePerformanceDetailsHandler(client, cfg)) // Register service operations summary tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "get_service_operations_summary", Description: apm.GetServiceOperationsSummaryDescription, }, apm.NewServiceOperationsSummaryHandler(client, cfg)) // Register service dependency graph tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "get_service_dependency_graph", Description: apm.GetServiceDependencyGraphDetails, }, apm.NewServiceDependencyGraphHandler(client, cfg)) // Register PromQL range query tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "prometheus_range_query", Description: apm.PromqlRangeQueryDetails, }, apm.NewPromqlRangeQueryHandler(client, cfg)) // Register PromQL instant query tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "prometheus_instant_query", Description: apm.PromqlInstantQueryDetails, }, apm.NewPromqlInstantQueryHandler(client, cfg)) // Register PromQL label values tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "prometheus_label_values", Description: apm.PromqlLabelValuesQueryDetails, }, apm.NewPromqlLabelValuesHandler(client, cfg)) // Register PromQL labels tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "prometheus_labels", Description: apm.PromqlLabelsQueryDetails, }, apm.NewPromqlLabelsHandler(client, cfg)) // Register logs tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "get_logs", Description: logs.GetLogsDescription, }, logs.NewGetLogsHandler(client, cfg)) // Register service logs tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "get_service_logs", Description: logs.GetServiceLogsDescription, }, logs.NewGetServiceLogsHandler(client, cfg)) // Register drop rules tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "get_drop_rules", Description: logs.GetDropRulesDescription, }, logs.NewGetDropRulesHandler(client, cfg)) // Register add drop rule tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "add_drop_rule", Description: logs.AddDropRuleDescription, }, logs.NewAddDropRuleHandler(client, cfg)) // Register alert config tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "get_alert_config", Description: alerting.GetAlertConfigDescription, }, alerting.NewGetAlertConfigHandler(client, cfg)) // Register alerts tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "get_alerts", Description: alerting.GetAlertsDescription, }, alerting.NewGetAlertsHandler(client, cfg)) // Register service traces tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "get_service_traces", Description: traces.GetServiceTracesDescription, }, traces.GetServiceTracesHandler(client, cfg)) // Register log attributes tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "get_log_attributes", Description: logs.GetLogAttributesDescription, }, logs.NewGetLogAttributesHandler(client, cfg)) // Register trace attributes tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "get_trace_attributes", Description: traces.GetTraceAttributesDescription, }, traces.NewGetTraceAttributesHandler(client, cfg)) // Register change events tool last9mcp.RegisterInstrumentedTool(server, &mcp.Tool{ Name: "get_change_events", Description: change_events.GetChangeEventsDescription, }, change_events.NewGetChangeEventsHandler(client, cfg)) return nil }

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

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