Extract Grafana MCP config into a shared component for Smoke OTEL Backends#32318
Conversation
Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR extracts the Grafana MCP server configuration into a reusable shared workflow component and updates the “Smoke OTEL Backends” workflow to consume it via imports, aligning it with the existing shared-component pattern used elsewhere (e.g., Sentry).
Changes:
- Added a new shared component for Grafana MCP config at
.github/workflows/shared/mcp/grafana.md. - Updated
.github/workflows/smoke-otel-backends.mdto remove inline Grafana MCP config and import the shared component instead. - Recompiled
.github/workflows/smoke-otel-backends.lock.ymlso the generated workflow reflects the new import structure.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/shared/mcp/grafana.md |
Introduces a reusable Grafana MCP server config (stdio mode, write disabled) with required secrets wiring. |
.github/workflows/smoke-otel-backends.md |
Replaces inline Grafana MCP configuration with an import of the new shared component. |
.github/workflows/smoke-otel-backends.lock.yml |
Regenerated compiled workflow to include the new runtime import and updated metadata hashes/identifiers. |
Copilot's findings
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 3/3 changed files
- Comments generated: 0
|
@copilot make lint and make fmt. |
There was a problem hiding this comment.
Skills-Based Review 🧠
Applied /zoom-out and /improve-codebase-architecture — this is a clean refactor extracting a shared MCP configuration module, so architecture consistency is the right lens.
Key Themes
- Good locality: Grafana MCP config is now in a single, named module — the deletion test passes cleanly (deleting the inline block from
smoke-otel-backends.mdconcentrated complexity in one place rather than spreading it). - Consistent module structure: The new
shared/mcp/grafana.mdfollows the established pattern set bysentry.md, making theshared/mcp/directory a coherent collection of MCP adapter modules. - One interface gap: The Grafana module omits the
allowed:tool filter thatsentry.mduses, leaving its interface less explicit than its sibling. See inline comment.
Positive Highlights
- ✅ The new
grafana.mddocumentation comment is more structured thansentry.md— it explicitly lists required secrets and shows a usage snippet, which is a nice improvement to the module's interface documentation. - ✅ The lock file recompile is included, so the PR is self-contained and CI-ready.
- ✅ Clean, minimal diff — exactly the right scope for this kind of extraction.
Verdict
Approving — the one suggestion (adding allowed: for defence-in-depth) is non-blocking since --disable-write already handles write protection at the server level.
🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer · ● 4M
Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
Addressed in Ran |
|
@copilot Address comment #32318 (comment) |
Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
Addressed in Added an explicit Grafana allowlist with the read-only datasource and Tempo tracing tools used by the smoke workflow, and recompiled the lock file. |
✨ Enhancement
What does this improve?
This extracts the Grafana MCP server setup into a reusable shared component and switches
Smoke OTEL Backendsto consume it viaimports. The workflow now matches the existing shared-component pattern already used for Sentry.Why is this valuable?
Keeping Grafana MCP configuration in one shared file makes backend workflows easier to maintain and keeps observability workflow frontmatter focused on workflow-specific behavior rather than duplicated server wiring.
Implementation approach:
Shared Grafana MCP component
.github/workflows/shared/mcp/grafana.mdcontainer: grafana/mcp-grafanaGRAFANA_URLandGRAFANA_SERVICE_ACCOUNT_TOKENsecretsSmoke OTEL Backends cleanup
mcp-servers.grafanablock from.github/workflows/smoke-otel-backends.mdshared/mcp/grafana.mdalongside the existing shared Sentry componentGenerated workflow update
smoke-otel-backends.lock.ymlso the generated workflow reflects the new shared import structure