| FMRS | 72 / 100 · B | 75 / 100 · B |
| Reliability | 11 / 20 | 12 / 20 |
|---|
| Security and permissions | 14 / 20 | 16 / 20 |
|---|
| Maintenance | 16 / 20 | 14 / 20 |
|---|
| Documentation | 18 / 20 | 18 / 20 |
|---|
| Setup experience | 13 / 20 | 15 / 20 |
| Best for | - Teams running a Grafana instance (self-hosted or Grafana Cloud) who want an AI assistant to help with observability workflows
- DevOps/SRE engineers who want to automate querying alerts, logs, and metrics as part of incident response
- Scenarios where monitoring data access needs to be exposed to an AI assistant safely in read-only mode
| - Individuals or teams who prioritise privacy and offline operation and do not want data leaving the machine
- Users who share memory across multiple MCP clients such as Claude Code, Claude Desktop, Hermes Agent, OpenClaw, Cursor, Codex and Gemini CLI
- Scenarios that need encrypted storage, a hash-chained audit log and verifiable vault migration
- Users who want low-latency recall, a bundled embedding model and no extra LLM calls inside the memory layer
|
| Not for | - Teams with no Grafana ecosystem in place (no Prometheus/Loki/etc. datasources configured)
- Fully offline or network-isolated environments (the remote endpoint and most datasource queries require network access)
- Situations where write access must be tightly scoped but the team is unwilling to configure fine-grained RBAC (the built-in Editor role, while convenient, is broad)
| - Users who need cloud multi-device sync or a hosted team memory service; moving between machines means locking the vault and copying the file
- Users who expect the server itself to run an LLM that extracts facts and decides what to remember; Compartment explicitly keeps no LLM inside and leaves that to the host model
- Users who cannot keep a passphrase safe or who need a recovery path if it is lost, since Compartment never generates a password, seed or recovery phrase
- Deployments that require network transports such as SSE or streamable-http; this server is stdio only and opens no ports
|
| Required permissions | - GRAFANA_URL (required): the target Grafana instance address
- GRAFANA_SERVICE_ACCOUNT_TOKEN or GRAFANA_USERNAME/GRAFANA_PASSWORD: authentication credentials (the service account token is sensitive)
- Grafana RBAC permissions matching the enabled tool categories, e.g. dashboards:read/write, datasources:query, alert.rules:read/write, annotations:read/write, or the built-in Editor role as a simpler but broader alternative
- Grafana Incident and Sift tools use basic roles (Viewer for reads, Editor for writes) rather than fine-grained RBAC
- Optional GRAFANA_ORG_ID or X-Grafana-Org-Id header for multi-organization support
- Optional GRAFANA_EXTRA_HEADERS and GRAFANA_FORWARD_HEADERS to add or forward HTTP headers (e.g. Cookie) to the Grafana API
| - Read and write the vault file under the user's home directory, by default ~/.compartment/memory.vault, and its sibling settings file
- Access the session directory holding the unlock credential (configurable with COMPARTMENT_SESSION_DIR), which also carries the shared embedding process's Unix socket
- Optionally use the macOS keychain (compartment unlock --keychain is an explicit opt-in, and it survives reboots)
- Write or merge an mcpServers entry into each MCP client's own configuration file, taking a byte-exact backup first
- Install a PostToolUse hook for Claude Code that captures memory files the agent writes
- Serve a read-only dashboard on 127.0.0.1 behind a one-time random URL token
|
| Risks and side effects | - Service account tokens, passwords, and other credentials are supplied via environment variables or headers and must be safeguarded from leakage
- Write tools (update_dashboard, alerting_manage_rules, create_incident, create_annotation, create_snapshot, etc.) can directly modify or delete dashboards, alert rules, and incident data — misuse can damage production configuration
- Using the built-in Editor role for convenience grants broad access beyond least-privilege
- Fetching full dashboard JSON (get_dashboard_by_uid, update_dashboard) can consume significant context window space and may expose sensitive queries or variables embedded in the dashboard
- GRAFANA_FORWARD_HEADERS forwarding of headers like Cookie, if misconfigured, risks leaking session information
- The hosted remote endpoint https://mcp.grafana.com/mcp is a third-party managed service — using it to reach a Grafana Cloud instance routes requests through that service
- SSE/streamable-http transport misconfiguration (e.g. --allowed-hosts or --allowed-origins set to * while exposed on an untrusted network) carries DNS-rebinding-style risk
| - A leaked passphrase means the encrypted content can be decrypted; Compartment generates no recovery phrase and cannot recover a lost passphrase
- Enabling the memory_unlock tool places the passphrase in the model's context, which is why it is off by default
- If a 2FA keyfile is lost, for example a USB stick, the vault cannot be opened even with the passphrase
- `export --plaintext` writes the vault as unencrypted JSONL, so that file must be handled carefully
- Memory content can come from untrusted sources; recall wraps memories with a notice that they are stored data and content can be marked quarantined, but the host agent must still treat memory as data to limit prompt-injection risk
- The capture hook and client integration write into the user's own settings files, although the implementation backs up and merges rather than replacing
|
| Supported clients | Claude Desktop, Cursor | Claude Desktop, Claude Code, Hermes Agent, OpenClaw, Cursor, VS Code, Codex, Gemini CLI, Cline, Roo Code, Zed, OpenCode, LM Studio, AnythingLLM, BoltAI, Goose, Kiro |
| Tools | 92 | 14 |