Skip to main content
Glama
README.md
# mcp-dagster: A Dagster MCP Server

> The [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) is an open protocol that enables seamless integration between LLM applications and external data sources and tools. This repository provides an MCP server for interacting with [Dagster](https://dagster.io/), the data orchestration platform.

## Overview

A Model Context Protocol server that enables AI agents to interact with Dagster instances, explore data pipelines, monitor runs, and manage assets. It serves as a bridge between LLMs and your data engineering workflows.

Read our [launch post](https://kyrylai.com/2025/04/09/dagster-llm-orchestration-mcp-server/) to learn more.

[![PyPI version](https://badge.fury.io/py/mcp-server-dagster.svg)](https://pypi.org/project/mcp-server-dagster/)
[![Tests](https://github.com/kyryl-opens-ml/mcp-server-dagster/actions/workflows/pypi-publish.yaml/badge.svg)](https://github.com/kyryl-opens-ml/mcp-server-dagster/actions/workflows/pypi-publish.yaml)


## Components

### Tools

The server implements several tools for Dagster interaction:

- `list_repositories`: Lists all available Dagster repositories
- `list_jobs`: Lists all jobs in a specific repository
- `list_assets`: Lists all assets in a specific repository
- `recent_runs`: Gets recent Dagster runs (default limit: 10)
- `get_run_info`: Gets detailed information about a specific run
- `launch_run`: Launches a Dagster job run
- `materialize_asset`: Materializes a specific Dagster asset
- `terminate_run`: Terminates an in-progress Dagster run
- `get_asset_info`: Gets detailed information about a specific asset

## Configuration

The server connects to Dagster using these defaults:
- GraphQL endpoint: `http://localhost:3000/graphql`
- Transport: SSE (Server-Sent Events)

## Quickstart

### Running the Example

1. Start the Dagster instance with your pipeline:
```bash
uv run dagster dev -f ./examples/open-ai-agent/pipeline.py
```

2. Run the MCP server with SSE transport:
```bash
uv run examples/open-ai-agent/run_sse_mcp.py
```

3. Start the agent loop to interact with Dagster:
```bash
uv run ./examples/open-ai-agent/agent.py
```

### Example Interactions

Once the agent is running, you can ask questions like:

- "What assets are available in my Dagster instance and what do they do?"
- "Can you materialize the continent_stats asset and show me the result?"
- "Check the status of recent runs and provide a summary of any failures"
- "Create a new monthly aggregation asset that depends on continent_stats"

The agent will use the MCP server to interact with your Dagster instance and provide answers based on your data pipelines.

TDQS

B3.2/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct resource and action: listing repositories, jobs, assets; getting run/asset info; and actions like launch/terminate/materialize. There is no ambiguity between tools.

Naming Consistency4/5

Most tools follow a verb_noun pattern (list_*, get_*, launch_run, terminate_run, materialize_asset), but 'recent_runs' breaks the pattern as an adjective-noun phrase. This is a minor deviation.

Tool Count5/5

9 tools is well-scoped for a Dagster server covering repositories, jobs, assets, and runs. It provides necessary operations without being excessive.

Completeness4/5

The surface covers listing and getting info for key entities, plus launching/terminating runs and materializing assets. A minor gap is the lack of get_job_info or more granular run listing, but core workflows are supported.

Maintenance

ActivityInactive
ResponsivenessUnresponsive