MCP server that wraps the Dagster GraphQL API — manage runs, assets, schedules, sensors, and backfills from any MCP client
Project description
Dagster MCP
An MCP server that wraps the Dagster GraphQL API, giving any MCP client (Claude Code, Cursor, etc.) full visibility and control over your Dagster instance.
What it does
Exposes up to 15 tools that let you inspect and operate a Dagster instance (self-hosted or Dagster Cloud):
- Runs — list, inspect, get logs, get step stats
- Assets — search, get details, get recent materializations
- Jobs — list all jobs across code locations
- Schedules & Sensors — list with status, cron, targets
- Code Locations — list and reload
- Backfills — list recent backfills
- Actions — launch jobs, terminate runs, reload code locations (opt-in, disabled by default)
Quick start
Prerequisites
Install
Option A — run directly with uvx (no clone needed):
uvx dagster-mcp
Option B — clone and run:
git clone https://github.com/fabdendev/dagster-mcp.git
cd dagster-mcp
uv sync
Configure
| Variable | Description | Default |
|---|---|---|
DAGSTER_URL |
Base URL of your Dagster instance | http://localhost:3000 |
DAGSTER_API_TOKEN |
Dagster Cloud API token (leave empty for self-hosted) | (empty) |
DAGSTER_READ_ONLY |
When true, only read tools are exposed (no launch/terminate/reload) |
true |
Self-hosted:
export DAGSTER_URL=http://localhost:3000
Dagster Cloud:
export DAGSTER_URL=https://myorg.dagster.cloud/prod
export DAGSTER_API_TOKEN=your-dagster-cloud-user-token
Add to Claude Code
Add to your Claude Code MCP settings (~/.claude/settings.json):
If using uvx:
{
"mcpServers": {
"dagster": {
"command": "uvx",
"args": ["dagster-mcp"],
"env": {
"DAGSTER_URL": "http://localhost:3000",
"DAGSTER_API_TOKEN": "",
"DAGSTER_READ_ONLY": "true"
}
}
}
}
If installed from clone:
{
"mcpServers": {
"dagster": {
"command": "uv",
"args": ["run", "--directory", "/path/to/dagster-mcp", "dagster-mcp"],
"env": {
"DAGSTER_URL": "http://localhost:3000",
"DAGSTER_API_TOKEN": "",
"DAGSTER_READ_ONLY": "true"
}
}
}
}
Tools
| Tool | Description |
|---|---|
get_runs |
List recent runs, filter by job name and/or status |
get_run_status |
Get status and info for a specific run |
get_run_logs |
Get logs/events for a run (with pagination) |
get_run_stats |
Get step-level stats (timing, materializations) |
get_recent_materializations |
Get recent materializations for an asset |
get_asset_details |
Get details, dependencies, and partitions for assets |
search_assets |
Search/list assets by key prefix or group name |
list_jobs |
List all jobs across all code locations |
list_schedules |
List schedules with status, cron, and next tick |
list_sensors |
List sensors with status and target jobs |
list_code_locations |
List all code locations and their load status |
list_backfills |
List recent backfills with status and progress |
reload_code_location |
Reload a code location (e.g. after deploy) (write) |
terminate_run |
Terminate a running run (write) |
launch_job |
Launch a job or materialize specific assets (write) |
Tools marked (write) are only available when DAGSTER_READ_ONLY=false.
How it differs from the official Dagster MCP
The official Dagster MCP (dg[mcp]) is a development-time tool — it helps AI write Dagster code, scaffold components, and work with the dg CLI.
This project is an operations-time tool — it lets AI (or any MCP client) monitor and operate a running Dagster instance: inspect runs, read logs, check schedules, launch jobs, and more.
They serve different purposes and work well together.
Compatibility
Tested with Dagster 1.6+. All GraphQL queries target stable, non-deprecated API fields.
Development
uv sync --extra dev
uv run ruff check dagster_mcp/ # lint
uv run python -m dagster_mcp # start server locally
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dagster_mcp-0.1.0.tar.gz.
File metadata
- Download URL: dagster_mcp-0.1.0.tar.gz
- Upload date:
- Size: 64.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc39ad7cfbbe97ebfafdb61889825ed7e90959fcaeb8cef3deb0c0a64cd652f0
|
|
| MD5 |
a73ad117d2c20a78326c85a63d908e71
|
|
| BLAKE2b-256 |
3d9d871607ef26a97d21ab62e0d89283a73e97455b04d341a8bd52581ab73989
|
File details
Details for the file dagster_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: dagster_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bedf9b046ded39ea5c6cc1b96377eaec2b6a4a8ad2f29369ad4ce2a77f7d2a5b
|
|
| MD5 |
5457dde917ac8ceb4e347d4a71b5136c
|
|
| BLAKE2b-256 |
fcd3231d92156e545465e1c25bbd056b0442b6820163ead0fb02fcfb312c98f9
|