Skip to main content
Glama
scenario.yaml2.96 kB
# Verifies Docker-based Grafana MCP server can be discovered in UI and serve tools. # This test requires a running Grafana instance with the Grafana-MCP configured. name: "Grafana MCP (via docker)" image: us-central1-docker.pkg.dev/prj-common-442813/mcpx/mcpx:v0.2.17-66354a7 configMount: config cleanConfigMount: false verboseOutput: false env: {} dependentContainers: - name: grafana image: grafana/grafana-oss:11.2.0 ports: ["3000:3000"] env: GF_SECURITY_ADMIN_USER: admin GF_SECURITY_ADMIN_PASSWORD: admin GF_AUTH_ANONYMOUS_ENABLED: "true" steps: - name: "Load Control-Plane UI" kind: browser toolName: browser_navigate payload: url: "http://localhost:5173" expected: mode: contains value: "Page URL: http://localhost:5173/" # New: wait for the grafana server tile on the canvas - name: "Wait for grafana tile" kind: browser toolName: browser_wait_for payload: text: "grafana" time: 10 expected: mode: contains value: "Waited for grafana" # New: open the grafana drawer (click the tile instead of using a Tools tab) - name: "Open grafana drawer" kind: browser toolName: browser_evaluate payload: function: | () => { const click = el => ['pointerdown','mousedown','pointerup','mouseup','click'] .forEach(t => el.dispatchEvent(new MouseEvent(t, { bubbles: true, cancelable: true }))); // Find the server tile by its heading text const heading = Array.from(document.querySelectorAll('h1,h2,h3,[role="heading"]')) .find(h => (h.textContent || '').trim().toLowerCase() === 'grafana'); if (!heading) return 'grafana-heading-not-found'; // Try clicking the heading and its likely clickable containers click(heading); if (heading.parentElement) click(heading.parentElement); const maybeBtn = heading.closest('button,[role="button"],[class*="cursor"],[class*="pointer"]'); if (maybeBtn) click(maybeBtn); return 'grafana-drawer-opened'; } expected: mode: regex value: "grafana-drawer-opened" - name: "Verify Grafana tool is visible" kind: browser toolName: browser_wait_for payload: text: "search_dashboards" time: 10 expected: mode: contains value: "Waited for search_dashboards" - name: "Call grafana__generate_deeplink (dashboard)" kind: backend toolName: grafana__generate_deeplink payload: resourceType: "dashboard" # "dashboard" | "panel" | "explore" dashboardUid: "abc123" expected: mode: regex value: "/d/abc123" - name: "Call grafana__generate_deeplink (explore)" kind: backend toolName: grafana__generate_deeplink payload: resourceType: "explore" datasourceUid: "prometheus-uid" expected: mode: regex value: "/explore"

Latest Blog Posts

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/TheLunarCompany/lunar'

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