AgentStack
MCP verified MIT Self-run

Mcp Metricflow

mcp-datnguye-mcp-metricflow · by datnguye

A Model Context Protocol (MCP) server that provides MetricFlow CLI tools

No reviews yet
0 installs
15 views
0.0% view→install

Install

$ agentstack add mcp-datnguye-mcp-metricflow

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README — it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-datnguye-mcp-metricflow)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
stale · 1y ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps — measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Mcp Metricflow? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

mcp-metricflow

[](https://www.python.org/downloads/) [](LICENSE) [](htmlcov/index.html) [](https://github.com/astral-sh/ruff) [](https://github.com/astral-sh/uv)

A Model Context Protocol (MCP) server that provides MetricFlow CLI tools through both SSE (with optional API key authentication) and STDIO interfaces.

> [!WARNING] > This repository is a learning project focused on MetricFlow integration with MCP. For production use cases, please refer to the official dbt-mcp implementation by dbt Labs.

Table of Contents

  • [mcp-metricflow](#mcp-metricflow)
  • [Table of Contents](#table-of-contents)
  • [Overview](#overview)
  • [Setup](#setup)
  • [Configuration](#configuration)
  • [Running the MCP Server](#running-the-mcp-server)
  • [STDIO Mode ✅](#stdio-mode-)
  • [SSE Mode 🚧](#sse-mode-)
  • [API Key Authentication](#api-key-authentication)
  • [Available Tools](#available-tools)
  • [Project Structure](#project-structure)
  • [Contributing ✨](#contributing-)

Overview

This project provides a Model Context Protocol (MCP) server that wraps MetricFlow CLI commands, making them accessible through both Server-Sent Events (SSE) and Standard Input/Output (STDIO) interfaces. It enables seamless integration with Claude Desktop and other MCP-compatible clients.

Setup

# Install uv at https://docs.astral.sh/uv/getting-started/installation/

# Copy environment template
cp .env.template .env
# ...and then jump to # Configuration section to fulfill it

Configuration

Edit the .env file with your specific configuration:

# Required: Path to your dbt project
DBT_PROJECT_DIR=/path/to/your/dbt/project e.g. /Users/dat/repos/il/jaffle-shop

# Optional: Other configurations
DBT_PROFILES_DIR=/path/to/.dbt
MF_PATH=mf
MF_TMP_DIR=/path/to/tmp

# SSE server configuration (optional)
MCP_HOST=localhost
MCP_PORT=8000

# API key authentication for SSE mode (optional)
MCP_API_KEY=your-secret-api-key
MCP_REQUIRE_AUTH=false

Running the MCP Server

STDIO Mode ✅

For integration with Claude Desktop (or any other MCP Client tool), use STDIO mode with the following uvx command:

uvx --env-file /path/to/.env --with "mcp-metricflow[snowflake]" mcp-metricflow

Sample .env file:

DBT_PROJECT_DIR=/Users/xxx/sources/jaffle-shop
DBT_PROFILES_DIR=/Users/xxx/.dbt
MF_TMP_DIR=/Users/xxx/.dbt/tmp

Add this configuration to the respective client's config file:

{
  "mcpServers": {
    "mcp-metricflow": {
      "command": "uvx",
      "args": [
        "--env-file", "",
        "--with", "mcp-metricflow[snowflake]",
        "mcp-metricflow"
      ]
    },
  }
}

> NOTE: Currently only support Snowflake with this extra dependency specified: "--with", "mcp-metricflow[snowflake]"

> NOTE: We might have to use absolute path for example: /Users/xxx/.local/bin/uvx instead of uvx alone. Use which uvx to get the full path

SSE Mode 🚧

For web-based integration or direct HTTP access:

# export DBT_PROFILES_DIR=~/.dbt
uv run python src/main_sse.py

The server will start on http://localhost:8000 (or the host/port specified in your environment variables).

API Key Authentication

The SSE server supports optional API key authentication. To enable authentication:

  1. Set the required environment variables:

``bash export MCP_API_KEY="your-secret-api-key" export MCP_REQUIRE_AUTH="true" ``

  1. Access authenticated endpoints by including the API key in the Authorization header:

```bash # Health check (no authentication required) curl http://localhost:8000/health

# SSE endpoint (requires authentication when enabled) curl -H "Authorization: Bearer your-secret-api-key" http://localhost:8000/sse ```

Authentication Configuration:

  • MCP_API_KEY: The secret API key for authentication (required when MCP_REQUIRE_AUTH=true)
  • MCP_REQUIRE_AUTH: Enable/disable authentication (true, 1, yes, on to enable; default: false)

Security Notes:

  • The /health endpoint is always accessible without authentication for monitoring purposes
  • The /sse endpoint requires authentication when MCP_REQUIRE_AUTH=true
  • API keys are case-sensitive and support special characters
  • Store API keys securely and avoid committing them to version control

Available Tools

The MCP server exposes the following MetricFlow CLI tools:

| Tool | Description | Required Parameters | Optional Parameters | |------|-------------|-------------------|-------------------| | query | Execute MetricFlow queries | session_id, metrics | group_by, start_time, end_time, where, order, limit, saved_query, explain, show_dataflow_plan, show_sql_descriptions | | list_metrics | List available metrics | None | search, show_all_dimensions | | list_dimensions | List available dimensions | None | metrics | | list_entities | List available entities | None | metrics | | list_dimension_values | List values for a dimension | dimension, metrics | start_time, end_time | | validate_configs | Validate model configurations | None | dw_timeout, skip_dw, show_all, verbose_issues, semantic_validation_workers | | health_checks | Perform system health checks | None | None |

Each tool includes comprehensive documentation accessible through the MCP interface.

Project Structure

src/
├── config/
│   └── config.py              # Configuration management
├── server/
│   ├── auth.py                # API key authentication
│   ├── sse_server.py          # SSE server implementation
│   └── stdio_server.py        # STDIO server implementation
├── tools/
│   ├── prompts/mf_cli/        # Tool documentation (*.md files)
│   ├── metricflow/            # MetricFlow CLI wrappers
│   │   ├── base.py            # Shared command execution
│   │   ├── query.py           # Query functionality
│   │   ├── list_metrics.py    # List metrics
│   │   ├── list_dimensions.py # List dimensions
│   │   ├── list_entities.py   # List entities
│   │   ├── list_dimension_values.py # List dimension values
│   │   ├── validate_configs.py # Configuration validation
│   │   └── health_checks.py   # Health checks
│   └── cli_tools.py           # MCP tool registration
├── utils/
│   ├── logger.py              # Logging configuration
│   └── prompts.py             # Prompt loading utilities
├── main_sse.py                # SSE server entry point
└── main_stdio.py              # STDIO server entry point

Contributing ✨

If you've ever wanted to contribute to this tool, and a great cause, now is your chance!

See the contributing docs [CONTRIBUTING](CONTRIBUTING.md) for more information.

If you've found this tool to be very helpful, please consider giving the repository a star, sharing it on social media, or even writing a blog post about it 💌

[](https://github.com/datnguye/mcp-metricflow) [](https://www.buymeacoffee.com/datnguye)

Finally, super thanks to our Contributors:

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.