Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Headless Metabase MCP: API-key auth, no OAuth. 178 tools, toolsets, stdio or HTTP, all tiers.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
METABASE_URL, METABASE_API_KEY, METABASE_EMAIL, METABASE_PASSWORD, METABASE_READ_ONLY_MODE, METABASE_TOOLSETS, METABASE_TOOLS_ENABLE, METABASE_TOOLS_DISABLE, METABASE_CUSTOM_HEADERS标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"metabase": {
"command": "npx",
"args": [
"-y",
"@serdnaley/metabase-mcp"
],
"env": {
"METABASE_URL": "your-value",
"METABASE_API_KEY": "your-value",
"METABASE_EMAIL": "your-value",
"METABASE_PASSWORD": "your-value",
"METABASE_READ_ONLY_MODE": "your-value",
"METABASE_TOOLSETS": "your-value",
"METABASE_TOOLS_ENABLE": "your-value",
"METABASE_TOOLS_DISABLE": "your-value",
"METABASE_CUSTOM_HEADERS": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add metabase --env METABASE_URL=your-value --env METABASE_API_KEY=your-value --env METABASE_EMAIL=your-value --env METABASE_PASSWORD=your-value --env METABASE_READ_ONLY_MODE=your-value --env METABASE_TOOLSETS=your-value --env METABASE_TOOLS_ENABLE=your-value --env METABASE_TOOLS_DISABLE=your-value --env METABASE_CUSTOM_HEADERS=your-value -- npx -y @serdnaley/metabase-mcp运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"metabase": {
"command": "npx",
"args": [
"-y",
"@serdnaley/metabase-mcp"
],
"env": {
"METABASE_URL": "your-value",
"METABASE_API_KEY": "your-value",
"METABASE_EMAIL": "your-value",
"METABASE_PASSWORD": "your-value",
"METABASE_READ_ONLY_MODE": "your-value",
"METABASE_TOOLSETS": "your-value",
"METABASE_TOOLS_ENABLE": "your-value",
"METABASE_TOOLS_DISABLE": "your-value",
"METABASE_CUSTOM_HEADERS": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"metabase": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@serdnaley/metabase-mcp"
],
"env": {
"METABASE_URL": "your-value",
"METABASE_API_KEY": "your-value",
"METABASE_EMAIL": "your-value",
"METABASE_PASSWORD": "your-value",
"METABASE_READ_ONLY_MODE": "your-value",
"METABASE_TOOLSETS": "your-value",
"METABASE_TOOLS_ENABLE": "your-value",
"METABASE_TOOLS_DISABLE": "your-value",
"METABASE_CUSTOM_HEADERS": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
METABASE_EMAIL envMETABASE_READ_ONLY_MODE envMETABASE_TOOLSETS envMETABASE_TOOLS_ENABLE envMETABASE_TOOLS_DISABLE env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 Serdnaley 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:METABASE_URL, METABASE_API_KEY, METABASE_PASSWORD, METABASE_CUSTOM_HEADERS
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.5.0)于3天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Python MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Local-only Python MCP server for the Files.com API.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
The headless MCP server for Metabase. Plug Metabase into any AI agent, app, CI job or server with a plain API key: no OAuth flow, no browser, no admin switch to flip.
How it compares with Metabase's built-in MCP and other Metabase MCP servers: docs/comparison.md. Full tool catalog: serdnaley.github.io/metabase-mcp.
METABASE_TOOLSETS=query), add or drop single tools with globsreadOnlyHint / destructiveHint / idempotentHint on every toolnpx, no installation neededClaude Desktop (one-click bundle)
Download metabase-mcp-X.Y.Z.mcpb from the latest release and open it: Claude Desktop shows a form for the Metabase URL and API key. No Node.js setup or JSON editing.
Claude Desktop (JSON config)
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": { "metabase": { "command": "npx", "args": ["-y", "@serdnaley/metabase-mcp"], "env": { "METABASE_URL": "https://your-metabase.example.com", "METABASE_API_KEY": "mb_xxx" } } } }
Restart Claude Desktop after saving.
Claude Code (CLI)
claude mcp add metabase \
--env METABASE_URL=https://your-metabase.example.com \ --env METABASE_API_KEY=mb_xxx \ -- npx -y @serdnaley/metabase-mcp
Or add to .claude/mcp.json:
{
"mcpServers": { "metabase": { "type": "stdio", "command": "npx", "args": ["-y", "@serdnaley/metabase-mcp"], "env": { "METABASE_URL": "https://your-metabase.example.com", "METABASE_API_KEY": "mb_xxx" } } } }
Cursor
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
{
"mcpServers": { "metabase": { "command": "npx", "args": ["-y", "@serdnaley/metabase-mcp"], "env": { "METABASE_URL": "https://your-metabase.example.com", "METABASE_API_KEY": "mb_xxx" } } } }
Restart Cursor after saving.
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": { "metabase": { "command": "npx", "args": ["-y", "@serdnaley/metabase-mcp"], "env": { "METABASE_URL": "https://your-metabase.example.com", "METABASE_API_KEY": "mb_xxx" } } } }
Cline (VS Code)
Add to your Cline MCP settings (accessible via the MCP Servers icon):
{
"mcpServers": { "metabase": { "command": "npx", "args": ["-y", "@serdnaley/metabase-mcp"], "env": { "METABASE_URL": "https://your-metabase.example.com", "METABASE_API_KEY": "mb_xxx" } } } }
Continue (VS Code)
Add to .continue/config.yaml:
mcpServers:
Zed
Add to your Zed settings.json:
{
"context_servers": { "metabase": { "command": "npx", "args": ["-y", "@serdnaley/metabase-mcp"], "env": { "METABASE_URL": "https://your-metabase.example.com", "METABASE_API_KEY": "mb_xxx" } } } }
Remote / HTTP (any client that speaks Streamable HTTP)
Run the server once in HTTP mode (see HTTP mode), then point clients at it. Claude Code:
claude mcp add --transport http metabase https://mcp.example.com/mcp \
--header "Authorization: Bearer $MCP_HTTP_TOKEN"
Generic JSON config (Cursor, VS Code and others):
{
"mcpServers": { "metabase": { "url": "https://mcp.example.com/mcp", "headers": { "Authorization": "Bearer " } } } }
| Variable | Required | Description |
|---|---|---|
METABASE_URL | Yes | Base URL of your Metabase instance |
METABASE_API_KEY | No* | API key for authentication |
METABASE_EMAIL | No* | Email for session-based auth |
METABASE_PASSWORD | No* | Password for session-based auth |
METABASE_READ_ONLY_MODE | No | Set to true to disable write tools |
METABASE_CUSTOM_HEADERS | No | Extra HTTP headers sent on every request, including the session login (see below) |
METABASE_TOOLSETS | No | Comma list of toolsets or presets to load (default: all). See Toolsets |
METABASE_TOOLS_ENABLE | No | Extra tools to load on top of the toolsets (names or globs, e.g. get_card,export_*) |
METABASE_TOOLS_DISABLE | No | Tools never to load (names or globs); always wins over enable |
METABASE_MAX_ROWS | No | Row cap for query tools (default 500); see Large results |
METABASE_MAX_RESPONSE_CHARS | No | Size cap for any tool response (default 100000) |
MCP_TRANSPORT | No | stdio (default) or http. --http on the command line does the same |
MCP_HTTP_HOST / MCP_HTTP_PORT | No | HTTP bind address, default 127.0.0.1:3333 (PORT also works) |
MCP_HTTP_TOKEN | HTTP mode | Bearer token clients must send (min. 16 chars) |
MCP_HTTP_ALLOW_NO_AUTH | No | true runs HTTP without a token, only on a loopback host |
*Either METABASE_API_KEY or both METABASE_EMAIL + METABASE_PASSWORD must be provided. API key is recommended.
Use METABASE_CUSTOM_HEADERS when Metabase sits behind a proxy that needs its own headers, such as Cloudflare Access service tokens. Give it a JSON object:
METABASE_CUSTOM_HEADERS='{"CF-Access-Client-Id": "xxx.access", "CF-Access-Client-Secret": "yyy"}'
or Name: value pairs separated by newlines or ;:
METABASE_CUSTOM_HEADERS='CF-Access-Client-Id: xxx.access; CF-Access-Client-Secret: yyy'
The auth headers (X-API-Key, X-Metabase-Session) always win over a custom header with the same name. A malformed value stops the server at startup.
Each tool domain is a toolset (dashboards, users, transforms, ...; the full list is in Tools). Presets bundle them:
| Preset | For |
|---|---|
all | everything (default) |
query | exploring and querying data: search, databases, tables, dataset, cards, metrics, measures, segments, exports, activity, x-rays, explorations |
content | building and organising content: collections, cards, dashboards, documents, snippets, timelines, alerts, ... |
admin | running the instance: users, permissions, settings, databases, tables, cache, uploads, transforms, actions, ... |
METABASE_TOOLSETS=query,dashboards # analyst assistant
METABASE_TOOLS_ENABLE=create_card # plus one write tool METABASE_TOOLS_DISABLE='delete_*' # never delete anything
Precedence, strongest first: read-only mode > `METABASE_TOOLS_DISABLE` > `METABASE_TOOLS_ENABLE` > `METABASE_TOOLSETS`. An unknown toolset stops the server at startup; an enable/disable pattern that matches nothing logs a warning. The startup log (stderr) shows how many tools are enabled.
Query tools (execute_query, execute_card_query, run_metric) return a compact view: columns (name, type) and rows, without Metabase's column internals, results_metadata and insights. Pass verbose: true for the raw response. Results are capped at METABASE_MAX_ROWS rows (per call: max_rows, never above the cap) and paged with offset; a note says how to get the rest. Every tool response is compact JSON capped at METABASE_MAX_RESPONSE_CHARS. For a 10 / 100 / 500-row SELECT * FROM ORDERS this is 94% / 76% / 60% smaller than the raw pretty-printed response. For full result sets use the export tools with output_path.
Besides tools the server offers MCP resources for browsing (compact JSON): metabase://databases, metabase://database/{id}/schema, metabase://card/{id}, metabase://dashboard/{id}, metabase://collection/{id} (root for the root collection), and prompts for common workflows: explore-database, build-dashboard, explain-card, audit-permissions. Both follow the tool selection: a resource needs its toolset, a prompt needs every tool it uses (so build-dashboard disappears in read-only mode).
METABASE_URL=https://metabase.example.com \
METABASE_API_KEY=mb_xxx \ MCP_TRANSPORT=http MCP_HTTP_HOST=0.0.0.0 MCP_HTTP_PORT=3333 \ MCP_HTTP_TOKEN="$(openssl rand -hex 32)" \ npx -y @serdnaley/metabase-mcp
Clients connect t
只显示了开头部分;其余内容请在仓库中阅读