Data Metabase logo

Data Metabase

Community
vasilyu1983
data-metabase

Automates Metabase cards, dashboards, Remote Sync, embedding, tenants, and the Agent API/MCP server for AI workflows. Use when scripting, promoting, or embedding Metabase content.

Overview

Publishervasilyu1983
RepositoryAI-Agents-public
Skill namedata-metabase
Stars
87
Forks
19
Bundled files
21
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 21 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by vasilyu1983 on GitHub. Read the source before you install it.

Installation

Install the Data Metabase AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/vasilyu1983/AI-Agents-public.git /tmp/AI-Agents-public
mkdir -p .claude/skills
cp -r /tmp/AI-Agents-public/frameworks/shared-skills/skills/data-metabase .claude/skills/data-metabase
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Data Metabase in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Data Metabase on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Data Metabase is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Metabase Automation

Automate Metabase content, promotion, embedding, and admin refresh workflows.

Classic Metabase REST API still owns cards, dashboards, collections, permissions, and schema refresh operations. The newer Agent API is the right surface for headless semantic BI assistants and app-side AI workflows. Metabase v60 (April 2026) added an official MCP server and open-sourced AI; v61 (May 2026) added AI governance, dashboards-as-code via MCP, and per-group Metabot controls. v62 (June 2026, current line) added the official @metabase/cli, an Interactive Schema Viewer, a custom-visualization plugin SDK, an Alert Management hub, Library sub-collections, and expanded MCP capabilities — run SQL, create collections, and render interactive charts directly in the AI client. Verify /docs/latest and metabase.com/releases before citing version-specific behavior, since the release cadence is monthly.

Quick Reference

TaskPathUse When
Create/update questions and dashboardsClassic REST API + scripts/metabase_api.pyStandard content automation and incremental upserts
Promote content between environmentsRemote Sync or serializationGit-backed promotion, reviewable diffs, cross-environment moves
Build embedded customer analyticsEmbedding + tenants + embedding permissionsMulti-tenant apps, customer portals, row-level isolation
Build an AI analytics appAgent APIVersioned, semantic, app-side AI querying
Integrate Metabase with an AI coding agentMCP server (v60+)Claude, Cursor, VS Code — generate questions and dashboards via conversation
Govern AI access by groupMetabot AI governance (v61+, Pro/Enterprise)Per-group controls, token limits, usage analytics
Refresh schema metadataDatabase sync/rescan endpointsNew tables, changed columns, stale field values
Tune native SQL questionsExport-first + native query patternsStable automation without guessing request shapes

Decision Tree

text
Need to create or edit saved Metabase content?
  -> Use classic REST API (`card`, `dashboard`, `collection`).

Need repeatable dev -> prod promotion with reviewable diffs?
  -> Prefer Remote Sync or serialization before raw REST upserts.

Need embedded analytics for many customers or workspaces?
  -> Use embedding + tenants + embedding permissions.

Need an AI assistant to discover metrics/tables and construct queries?
  -> Use the versioned Agent API, not raw card CRUD.

Need to generate or edit questions/dashboards from an AI coding agent or terminal?
  -> Use the official Metabase MCP server (v60+, connects Claude/Cursor/VS Code).

ASCII Flow

text
Metabase automation request
  -> health check and authentication
  -> discover IDs: database, collection, table, fields, entities
  -> choose surface
     +-- cards, dashboards, collections -> classic REST API
     +-- dev-to-prod promotion -> Remote Sync or serialization
     +-- customer analytics -> embedding + tenants + permissions
     +-- semantic assistant -> Agent API
     +-- AI terminal / agent build -> MCP server (v60+)
  -> export existing JSON when structure is complex
  -> upsert or promote content
  -> refresh metadata if schema changed
  -> validate by running/exporting results

Quick Start

Inputs (env vars)

  • METABASE_URL (e.g., https://metabase.example.com)
  • Preferred: METABASE_API_KEY
  • Optional: METABASE_SESSION
  • Fallback: METABASE_USERNAME + METABASE_PASSWORD

Sanity checks

bash
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py health
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py whoami
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py list-databases
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py list-collections --tree

Live API documentation

Your Metabase instance serves OpenAPI docs at /api/docs (for example https://metabase.example.com/api/docs). Use this to confirm request shapes for your exact build before scripting bulk edits.

Workflow

  1. Confirm API availability (GET /api/util/health).
  2. Authenticate with an API key first, then fall back to session auth only if needed.
  3. Discover IDs instead of hardcoding them across environments:
    • collection_id for save location
    • database id for dataset_query
    • table and field IDs if using MBQL
  4. Choose the right surface:
    • classic REST API for cards/dashboards/admin
    • Agent API for semantic, AI-driven querying
    • Remote Sync or serialization for promotion workflows
  5. Create/update a card:
    • prefer native SQL for stable automation
    • set display and visualization_settings explicitly
  6. Create/update a dashboard, then place cards with explicit layout.
  7. Refresh metadata if schema changed.
  8. Validate by running/exporting results and re-opening exported JSON.

Key Concepts

  • UI "Question" == API card
  • Chart configuration lives on the card as display + visualization_settings
  • Most visualization keys are easiest to manage by exporting an existing card JSON, then editing that payload
  • Remote Sync is for Git-backed promotion, not per-request runtime automation
  • Agent API is a separate, versioned surface for semantic query construction and execution; returns max 200 rows per request; paginate via continuation_token
  • MCP server (v60+) connects Metabase to Claude, Cursor, VS Code, and other MCP clients with the same permissions as the authenticated user; enables dashboards-as-code from AI terminals; v62 adds SQL execution, collection creation, and interactive charts rendered in the AI client itself
  • Official Metabase CLI (v62+, npm install -g @metabase/cli, distinct from the classic REST/JAR admin surfaces) builds questions, dashboards, documents, and transforms from the terminal — see references/metabase-cli.md
  • Metabot (v60+, open source) integrates with Slack; v61 adds per-group access controls, token limits, and usage analytics (Pro/Enterprise only for governance features)
  • Interactive/modular embedding SDK requires Pro/Enterprise, React 18/19, Node 20+, Metabase v1.52+
  • Custom visualizations (v62+, Pro/Enterprise) let you build React-based chart types (Gantt, org chart, radar, calendar, heatmap) via a plugin SDK — not supported in embeds, subscriptions, or alerts

Pricing Reference (July 2026)

PlanPriceKey limits
Open SourceFree (self-host, unlimited users)No modular embedding SDK, no sandboxing, no AI governance
Starter$90/mo base + $6/user (5 included)No SSO, no row-level security, no interactive embedding
Pro$517.50/mo base + $12/user (10 included)SSO, sandboxing, modular embedding SDK, custom visualizations, schema viewer, Metabot governance
EnterpriseCustom (~$20k/yr+)Same features as Pro + 1-day SLA, dedicated success engineer

AI add-on: Metabase's hosted AI service bills at $3.75 per 1M tokens (1M included); most deployments instead bring their own model provider key, in which case you pay that provider directly and Metabase charges nothing extra for AI usage. Transforms include 1,000 runs/mo on Starter/Pro, then $0.01–$0.02/run.

Prices change often — verify current numbers at metabase.com/pricing before quoting costs in any proposal; do not reuse the figures above past one quarter without re-checking.

Guardrails

  • Prefer Remote Sync or Metabase serialization for bulk, cross-environment promotion; use direct API for incremental upserts.
  • Do not hardcode numeric IDs across environments when you can discover them or use entity IDs / synced content.
  • Never commit METABASE_API_KEY, passwords, or session tokens.
  • Prefer a dedicated, least-privileged automation account and collection.
  • Treat internal admin notify endpoints separately from normal automation. They use server-side MB_API_KEY, not the user-facing METABASE_API_KEY.
  • If a dashboard uses tabs, filters, or complex dashcard state, export first and preserve that structure instead of rebuilding from memory.

Navigation

TopicFileLoad when
Authentication (API key + fallback)references/api-auth.mdAny API automation task
Reports (cards): create/edit patternsreferences/reports-cards.mdCreating or updating saved questions
Dashboards and card placementreferences/dashboards.mdBuilding or replicating dashboards
Charts and visualization_settingsreferences/charts-settings.mdConfiguring chart display or axis settings
Agent API for semantic BIreferences/agent-api.mdBuilding AI analytics apps or headless BI workflows
Embedding and integrationreferences/embedding-integration.mdPublic links, signed JWT, or SDK embedding
Tenants, embedding permissions, routingreferences/tenants-routing.mdMulti-tenant apps or customer portal isolation
Permissions and collectionsreferences/permissions-collections.mdGroup setup, sandboxing, or collection hierarchy
Native SQL query patternsreferences/native-query-patterns.mdTemplate tags, field filters, caching in SQL cards
Remote Sync and promotion workflowsreferences/remote-sync.mdGit-backed content promotion or cross-env moves
Modern surface area (v59+, updated v61)references/metabase-59-surface.mdConfirming which API layer a request belongs to
CLI: mb API client and JAR admin commandsreferences/metabase-cli.mdScripting content via mb, or server admin (migrate, dump-to-h2, serialization)

Assets

TemplateFile
Card spec skeletonassets/card-spec.template.json
Dashboard spec skeletonassets/dashboard-spec.template.json
Dashcard layout skeletonassets/dashcards-layout.template.json
Embed JWT examplesassets/embed-jwt-example.md

Scripts

scripts/metabase_api.py is a dependency-free helper for auth, discovery, content CRUD, dashboard layout work, query execution, and schema refresh.

Examples:

bash
# Print authenticated user (tries API key, then session)
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py whoami

# Discover IDs before scripting
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py list-collections --tree
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py list-databases
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py database-metadata --id 2
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py list-fields --database-id 2

# Export an existing card JSON (use as a template for visualization_settings)
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py export-card --id 123 --out card.json

# Export an existing dashboard JSON (use as a template for layout)
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py export-dashboard --id 5 --out dashboard.json

# Create/update a card from a JSON spec (see references/reports-cards.md)
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py upsert-card --spec card-spec.json

# Create/update a dashboard from a JSON spec
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py upsert-dashboard --spec dashboard-spec.json

# Add or update dashboard layout
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py add-dashcard --dashboard-id 5 --spec dashcard.json
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py update-dashcards --dashboard-id 5 --spec dashcards-layout.json

# Execute a query spec or export a saved card result
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py run-query --spec dataset-query.json
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py export-card-query --id 123 --format csv --out report.csv

# Refresh metadata after schema changes
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py sync-schema --id 2
python3 frameworks/shared-skills/skills/data-metabase/scripts/metabase_api.py rescan-values --id 2

Known Traps

  • Treating Metabase as the semantic layer of record while metrics, joins, and business definitions still drift in dbt, SQLMesh, or raw SQL cards.
  • Copying cards manually between environments and silently breaking references, permissions, or dashboard filter wiring because serialization or sync strategy was never defined.
  • Reusing one question across dashboards with slightly different filter semantics and creating hidden KPI disagreements that look like product changes.
  • Embedding tenant dashboards without a strict parameter contract, collection isolation model, and signed-embed verification path.
  • Letting native SQL cards become the default authoring path for everything, then losing discoverability, lineage, and reuse across teams.
  • Designing dashboard filters around visual convenience rather than stable field mappings, leading to broken linked filters after schema or model changes.

Common Anti-Patterns

  • Treating dashboard screenshots or PDF exports as the decision artifact instead of versioned questions, documented metrics, and reproducible model definitions.
  • Building one large "executive dashboard" that mixes raw exploratory cards, production KPIs, and operational monitoring in the same surface.
  • Using personal collections as production distribution channels instead of curated shared collections with ownership and promotion rules.
  • Hardcoding environment-specific table names, URLs, or card IDs into migration and automation workflows.
  • Solving multi-tenancy with card duplication alone when embedding parameters, row-level source models, or separate collections would provide cleaner isolation.
  • Using Metabase to compensate for unresolved source-model problems that should be fixed upstream in warehouse modeling or metric governance.

Related Skills

Trend Awareness Protocol

When the user asks for the current or best Metabase approach in 2026, verify the latest official docs and release notes before answering.

Trigger examples:

  • "What is the best way to promote Metabase content now?"
  • "Is serialization still the right choice in 2026?"
  • "Should I use Agent API or classic API?"
  • "What changed in Metabase 59/60/61 for embedding or dashboards?"
  • "What is the current best practice for multi-tenant Metabase?"
  • "How do I use the Metabase MCP server?"
  • "What Metabot or AI governance features are available now?"

Fact-Checking

  • Use web search/web fetch to verify current external facts, versions, pricing, deadlines, regulations, or platform behavior before final answers.
  • Prefer primary sources; report source links and dates for volatile information.
  • If web access is unavailable, state the limitation and mark guidance as unverified.

Learnings Loop

Before applying this skill on a non-trivial task, read learnings.consolidated.md in this directory (and learnings.md if present).

After applying it, if you encountered a pattern worth remembering, a mistake worth preventing, or a domain fact that surprised you, append one dated bullet to learnings.md via agents-skills-feedback-loop/scripts/append_learning.py. Do not modify SKILL.md itself.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Data Metabase AI skill do?

Automates Metabase cards, dashboards, Remote Sync, embedding, tenants, and the Agent API/MCP server for AI workflows. Use when scripting, promoting, or embedding Metabase content.

Why use Data Metabase on TypingMind?

Because you install it once and use it with any model. Data Metabase is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Data Metabase in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/vasilyu1983/AI-Agents-public/tree/main/frameworks/shared-skills/skills/data-metabase. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Data Metabase?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Data Metabase?

As many as you like. As long as a model supports skills, you can use Data Metabase with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Data Metabase AI skill free?

Yes. It is published on GitHub by vasilyu1983 under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇