berserk-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BZRK_BIN | No | Path/name of the Berserk CLI binary. | bzrk |
| BZRK_PROFILE | No | The bzrk profile to query. | local |
| BZRK_TIMEOUT | No | Per-query timeout, seconds. | 120 |
| BERSERK_TABLE | No | The Berserk table to query. | default |
| BERSERK_MCP_ROLE | No | Active role lane: sre, soc, claude, ops, or all. Controls tool visibility and primer injection. | all |
| BERSERK_MCP_PRIMERS_DIR | No | Directory containing <role>.md primer files. | adjacent primers/ folder |
| BERSERK_MCP_LEARNED_PATH | No | Where saved queries persist. | platform config dir (~/.config/berserk-mcp/learned.json on Linux) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_containersA | List all containers currently sending metrics to Berserk (with sample counts). |
| top_cpuA | Containers ranked by CPU percent, highest first. PER-CONTAINER — use ONLY when the user names a container, says 'docker'/'container', or asks for 'top containers'. For ambiguous whole-machine questions ('the box', 'the system', 'the server', 'the machine', 'what’s hammering/running hot') use host_cpu instead. |
| top_memoryA | Containers ranked by memory usage in MB, highest first. PER-CONTAINER — use ONLY when the user names a container or says 'docker'/'container'. For ambiguous whole-machine memory questions ('the box', 'the system', 'the server') use host_memory instead. |
| errors_by_serviceA | Count of ERROR-level log lines grouped by service. Use for 'how many errors', 'which services have errors', or 'any errors?' — gives counts, not log text. For the actual error messages, use logs_for_service with the service name from this result. |
| list_servicesA | All services/sources sending data, with log vs metric breakdown. Best default for 'what's running?', 'what's reporting?', or 'what services are there?' — shows everything. For just hosts use list_hosts; for just containers use list_containers. |
| list_hostsA | All hosts reporting telemetry, by record count. |
| host_cpuA | Average CPU load (1-minute load average) per host. Use for per-host CPU AND as the DEFAULT for ambiguous whole-machine questions — 'the box', 'the system', 'the server', 'the machine', 'what's hammering/running hot' are about the hosts, not containers (top_cpu is per-CONTAINER). |
| host_memoryA | Used memory in GB per host. Use for per-host memory AND as the DEFAULT for ambiguous whole-machine memory questions ('the box', 'the system', 'the server') — these are about the hosts, not containers (top_memory is per-CONTAINER). |
| container_hostsA | Map each container to the host/VM it runs on. Use to answer 'which host runs container X' or to JOIN per-container metrics (top_cpu/top_memory) with per-host metrics (host_cpu/host_memory) — don't infer the host from the container's name. |
| logs_for_serviceA | Recent log lines for a specific service e.g. 'nginx', 'postgres'. Use for 'show me the errors/logs from X' — returns actual log text. For error COUNTS across all services, use errors_by_service first, then drill into a specific service here. |
| schemaA | Show Berserk tables + column schema (live introspection). |
| list_metricsA | List every metric name currently being ingested, with sample counts + last-seen. Use to DISCOVER what telemetry exists before writing a |
| bzrk_query_perfA | Berserk query engine latency percentiles: p50, p95, p99 in µs. Use for 'how fast is Berserk?', 'query latency', or 'p50/p95/p99 execution time'. Uses otel_histogram_percentile($raw, N) — the native Berserk histogram aggregate. |
| discover_schemaA | Discover the shape of a data source: returns (1) every key present under |
| searchA | Run an arbitrary Kusto/KQL query against the Berserk table. Use when the other tools do not fit; once it works, persist it with save_query. |
| sre_error_rateA | SRE view of ERROR log events grouped by service and minute. Use for 'is the error rate climbing', 'which service is burning error budget', or 'what should we rollback first'. |
| sre_host_headroomA | SRE view of host CPU load and memory used side-by-side. Use for 'which host is hottest', 'where is headroom lowest', or 'which VM is nearest saturation'. |
| sre_ingest_healthA | SRE view of Berserk ingest lag and dropped-data signals per host. Use for 'is ingest healthy', 'are we dropping telemetry', or 'is observability lagging'. |
| sre_service_healthA | SRE health rollup for one service: total events, error count, logs, metrics, last seen. Use for 'is service X healthy' or 'rollback signal for X'. |
| sre_top_error_messagesA | SRE summary of the most repeated error messages by service. Use for 'what error is dominating', 'top error signatures', or 'which message to investigate first'. |
| soc_high_severity_logsA | SOC view of recent CRITICAL/FATAL/ERROR logs with service and message text. Use for 'show critical events', 'recent incident logs', or 'what looks severe right now'. |
| soc_log_spikeA | SOC view of services with the largest log volume per minute. Use for 'anything anomalous', 'which source is spiking', or 'suspicious burst of logs'. |
| soc_new_servicesA | SOC view of services ordered by first-seen time. Use for 'what is new', 'anything first-seen', or 'did a new source appear'. |
| soc_repeated_errorsA | SOC view of error messages that appear more than 5 times — potential probes, loops, or persistent incidents. Use for 'what keeps repeating' or 'show recurring failures'. |
| soc_timelineA | SOC incident timeline for one service: timestamps, severity, metric names, and message snippets. Use for 'timeline for service X' or 'reconstruct incident for X'. |
| claude_recentA | Recent Claude Code activity (timestamp, type, role, model, tool names, error flag), newest first. Default window 1h. |
| claude_sessionsA | Claude Code sessions rollup: events, first/last seen, assistant turns, tool turns, and error count per session. Default 6h. |
| claude_toolsA | Claude Code tool-use histogram — how many times each tool (Bash, Edit, Read, ...) was used. Default 6h. |
| claude_errorsA | Claude Code tool errors — failed tool results (is_error=true) with a body snippet. Default 6h. |
| claude_searchA | Full-text search across Claude Code message and tool bodies for a substring. Default 6h. |
| list_savedA | List previously-saved custom queries (name + description). For a non-standard question, CHECK HERE FIRST before writing new KQL. |
| run_savedA | Run a previously-saved query by name (see list_saved). Deterministic - no KQL authoring. |
| save_queryA | Persist a WORKING KQL query as a reusable named query so it never has to be figured out again. Call this after you answer a non-standard question with a custom search query. The query is run once to verify it works; if it errors it is NOT saved. |
| request_discoveryA | Queue a newly-added service or metric for author-lane integration. Validates the source is currently visible in Berserk, then records a job for the discovery worker to drain. Use when a user says 'I added / connected / started shipping SOURCE'. |
| discovery_statusA | List pending and completed discovery jobs for new services or metrics. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ssimonsen0202/berserk_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server