Releases: zenml-io/mcp-zenml
Release list
v1.5.1
What's Changed
- chore(deps): bump actions/setup-python from 5.6.0 to 6.2.0 in the all-actions group by @dependabot[bot] in #37
- chore(deps): bump the all-actions group across 1 directory with 2 updates by @dependabot[bot] in #44
- Improve analytics reliability and error handling by @strickvl in #38
Full Changelog: v1.5.0...v1.5.1
v1.5.0
MCP Apps 🎨
This release introduces MCP Apps — interactive HTML UIs that render directly inside supported MCP clients (VS Code Insiders, Goose, and others that support the MCP Apps specification).
New Apps
- Pipeline Runs Dashboard (
open_pipeline_run_dashboard) — Interactive table of recent pipeline runs with status indicators, expandable step details with logs, server-side pagination, and filtering by pipeline name or status
- Run Activity Chart (
open_run_activity_chart) — SVG bar chart showing daily pipeline run counts over the last 30 days with status-colored stacked bars (green = completed, red = failed, amber = other) and hover tooltips
Both apps are self-contained single-file HTML apps using the @modelcontextprotocol/ext-apps SDK. They fetch data dynamically from the MCP server via callServerTool().
Security Hardening
- XSS prevention: status labels escaped in dashboard summary, error rendering uses
textContentinstead ofinnerHTML, copy buttons usedata-*attributes instead of inline handlers - Timer leak prevention:
callServerToolSafe()cleans upsetTimeoutviafinallyblocks - Circuit breaker recovery: retry button properly resets
serverToolCallsEnabledandconsecutiveFailures - DNS rebinding protection: requires explicit
--disable-dns-rebinding-protectionflag for HTTP transport
Other Changes
ZenMLFastMCPsubclass for injecting_meta(includingui.resourceUri) on tools and resourceslist_appsresource for discovering available MCP Apps- Dockerfile updated to include
server/ui/directory - Smoke tests cover both new
open_*tools
Full Changelog: v1.4.0...v1.5.0
What's Changed
Full Changelog: v1.4.0...v1.5.0
v1.4.0
Structured Tool Outputs
All MCP tools now return structured output via the MCP structuredContent channel, with auto-generated outputSchema for each tool. Previously, tools returned JSON-encoded strings as plain text — valid but not machine-parseable without extra deserialization.
What this means in practice:
- MCP clients that support
structuredContent(the current spec) get typed, schema-validated JSON objects directly - Older clients still work — FastMCP automatically includes a serialized JSON
TextContentfallback alongside structured output - Tools that genuinely return text (
easter_egg,get_step_code) remain as plain text content
Other improvements in this release:
- Hardened error detection: Structured error envelopes use full shape validation (
{"error": {"tool", "message", "type"}}) to avoid false positives when successful results contain an"error"field - Better analytics: Error types from structured envelopes are now preserved in analytics instead of a generic
"ToolReturnedError"label - Robust smoke tests: Tests now check
structuredContent, handle bothcamelCaseandsnake_caseMCP field names, and have explicitTimeoutErrorhandling with increased timeouts for CI stability - Compatibility note: ZenML >= 0.93.0 is recommended. For older ZenML versions, use earlier MCP server releases
Migration notes
This is a non-breaking change for LLM-based consumers (Claude, GPT, etc.) — they receive the same information via the text fallback. Programmatic clients gain the new structuredContent field they didn't have before. The 16 list tools that previously returned invalid Python repr() output (single-quoted strings) now return valid JSON.
What's Changed
- chore(deps): bump the all-actions group with 3 updates by @dependabot[bot] in #34
- Migrate all MCP tools to structured output (
structuredContent) by @strickvl in #35
Full Changelog: v1.3.0...v1.4.0
What's Changed
- chore(deps): bump the all-actions group with 3 updates by @dependabot[bot] in #34
- Migrate all MCP tools to structured output (
structuredContent) by @strickvl in #35
Full Changelog: v1.3.0...v1.4.0
v1.3.0
What's Changed
- feat(security): add zizmor GitHub Actions security linting by @strickvl in #27
- chore(deps): bump the all-actions group with 4 updates by @dependabot[bot] in #28
- Add
tytype checking for Python code by @strickvl in #29 - Artifact version commands by @Spotchi in #30
- Detect tool error strings in smoke test by @strickvl in #32
- Improve error detection in smoke test by @strickvl in #33
New Contributors
- @dependabot[bot] made their first contribution in #28
- @Spotchi made their first contribution in #30
Full Changelog: v1.2.0...v1.3.0
What's Changed
- feat(security): add zizmor GitHub Actions security linting by @strickvl in #27
- chore(deps): bump the all-actions group with 4 updates by @dependabot[bot] in #28
- Add
tytype checking for Python code by @strickvl in #29 - Artifact version commands by @Spotchi in #30
- Detect tool error strings in smoke test by @strickvl in #32
- Improve error detection in smoke test by @strickvl in #33
New Contributors
- @dependabot[bot] made their first contribution in #28
- @Spotchi made their first contribution in #30
Full Changelog: v1.2.0...v1.3.0
v1.2.0
ZenML MCP Server v1.2.0 — Full Deployment Observability 🚀
This release significantly expands the MCP server's capabilities, adding 12 new tools across 5 entity types. Your AI coding assistant can now understand the full ZenML lifecycle — from pipeline configs to deployed services.
✨ New Features
Deployment & Serving Tools
get_deployment/list_deployments— Discover what's running, check status and URLsget_deployment_logs— Debug deployments with bounded log retrieval (safe defaults: 100 lines, 100KB max)
Snapshot Tools (Replaces Run Templates)
get_snapshot/list_snapshots— Work with frozen pipeline configurations- Filter by
runnable,deployable,deployedstatus for easy discovery
Organization Tools
get_active_project/get_project/list_projects— Multi-project supportget_tag/list_tags— Discover and filter by tags (prod, staging, etc.)get_build/list_builds— Inspect pipeline builds and images
⚠️ Deprecations
Run Templates are deprecated — use Snapshots instead:
get_run_template→get_snapshotlist_run_templates→list_snapshotstrigger_pipeline(template_id=...)→trigger_pipeline(snapshot_name_or_id=...)
The deprecated tools still work but now return deprecation warnings.
📚 Documentation
- Completely restructured README with categorized tool inventory
- Added migration guide for Run Templates → Snapshots
- Updated CLAUDE.md with architecture notes and tool taxonomy
🧪 Testing
- Expanded smoke tests from 4 to 9 safe tools
- All 45 tools verified working
Full Changelog: v1.1.1...v1.2.0
v1.1.1
🐛 Bug Fix
This release fixes a critical bug in v1.1.0 where the Docker image failed to start.
What was fixed
The v1.1.0 release introduced analytics support but the Dockerfile was not updated to include the new zenml_mcp_analytics.py module. This caused the container to crash on startup with:
ModuleNotFoundError: No module named 'zenml_mcp_analytics'
Changes
- Include
zenml_mcp_analytics.pyin Docker image - Include
VERSIONfile in Docker image (used by analytics) - Add Docker build verification to PR tests to prevent similar issues
Upgrade
If you were affected by the v1.1.0 bug, simply pull the latest image:
docker pull zenmldocker/mcp-zenml:latest
# or
docker pull zenmldocker/mcp-zenml:1.1.1Full Changelog: v1.1.0...v1.1.1
v1.1.0
⚠️ DEPRECATED: This release has a broken Docker image. Please use v1.1.1 or later instead.The Docker image fails to start with
ModuleNotFoundError: No module named 'zenml_mcp_analytics'.
What's Changed
Full Changelog: v1.0.8...v1.1.0
v1.0.8
What's Changed
- MCP Trust Score by @Matvey-Kuk in #12
New Contributors
- @Matvey-Kuk made their first contribution in #12
Full Changelog: v1.0.4...v1.0.8
What's Changed
- MCP Trust Score by @Matvey-Kuk in #12
New Contributors
- @Matvey-Kuk made their first contribution in #12
Full Changelog: v1.0.4...v1.0.8