ZenML

resmi

Berinteraksi dengan pipeline MLOps dan LLMOps Anda melalui server MCP ZenML Anda

Apa yang bisa Anda lakukan dengan ZenML MCP?

  • Temukan skema resource — Tanyakan jenis resource dan operasi apa saja yang didukung sebelum menjalankan kueri, menggunakan zenml_describe_resources.
  • Daftar dan filter resource — Daftarkan pipeline run, deployment, snapshot, atau model dengan filter tervalidasi dan paginasi melalui zenml_list_resources.
  • Periksa satu resource — Ambil satu resource berdasarkan ID, dengan cakupan induk dan proyek jika diperlukan, menggunakan zenml_get_resource.
  • Picu pipeline run — Mulai run dari snapshot yang dapat dijalankan, dengan opsi untuk mengganti parameter step, menggunakan trigger_pipeline.
  • Baca log dan kode step — Ambil log step dengan batas tertentu (gunakan tail untuk entri terbaru) atau kode sumber step melalui get_step_logs dan get_step_code.
  • Diagnosis penyiapan — Jalankan diagnose_zenml_setup untuk mendapatkan output pemecahan masalah terstruktur, bahkan saat ZenML SDK atau variabel env tidak tersedia.

Dokumentasi

MCP Server untuk ZenML

Trust Score

Proyek ini mengimplementasikan server Model Context Protocol (MCP) untuk berinteraksi dengan API ZenML.

ZenML MCP Server

Apa itu MCP?

Model Context Protocol (MCP) adalah protokol terbuka yang menstandarkan cara aplikasi menyediakan konteks kepada Large Language Models (LLM). Protokol ini berfungsi seperti "port USB-C untuk aplikasi AI" — menyediakan cara standar untuk menghubungkan model AI ke berbagai sumber data dan alat.

MCP menggunakan arsitektur klien-server:

  • Host MCP: Program seperti Claude Desktop atau IDE yang ingin mengakses data melalui MCP
  • Klien MCP: Klien protokol yang mempertahankan koneksi 1:1 dengan server
  • Server MCP: Program ringan yang mengekspos kemampuan tertentu melalui protokol standar
  • Sumber Data Lokal: File, basis data, dan layanan di komputer Anda yang dapat diakses server MCP dengan aman
  • Layanan Jarak Jauh: Sistem eksternal yang tersedia melalui internet dan dapat dihubungkan oleh server MCP

Apa itu ZenML?

ZenML adalah platform sumber terbuka untuk membangun dan mengelola pipeline ML dan AI. Platform ini menyediakan antarmuka terpadu untuk mengelola data, model, dan eksperimen.

Untuk informasi selengkapnya, lihat situs web ZenML dan dokumentasi kami.

Fitur

Server ini menyediakan alat MCP untuk mengakses fungsi baca inti dari server ZenML, sehingga Anda dapat memperoleh informasi langsung tentang:

Entitas Inti

  • Pengguna - akun dan izin pengguna
  • Stack - konfigurasi infrastruktur
  • Komponen Stack - blok penyusun stack individual
  • Flavor - jenis komponen yang tersedia
  • Konektor Layanan - autentikasi cloud

Eksekusi Pipeline

  • Pipeline - definisi pipeline
  • Run Pipeline - riwayat dan status eksekusi
  • Langkah Pipeline - detail, kode, dan log setiap langkah
  • Jadwal - jadwal run otomatis
  • Artefak - metadata tentang artefak data (bukan datanya sendiri)

Deployment & Serving

  • Snapshot - konfigurasi pipeline yang dibekukan (artefak "apa yang akan dijalankan/disajikan")
  • Deployment - instans serving saat runtime dengan status, URL, dan log
  • Layanan - endpoint serving model

Organisasi & Penemuan

  • Proyek - wadah organisasi untuk sumber daya ZenML
  • Tag - label metadata lintas fungsi untuk penemuan
  • Build - artefak build pipeline yang berisi informasi image dan kode

Model

  • Model - entri registri model ML
  • Versi Model - artefak model berversi

API Kompatibilitas (disarankan untuk migrasi)

  • Template run pipeline tetap tersedia di ZenML 0.97.0, sedangkan Snapshot lebih disarankan untuk alur kerja baru (lihat Panduan Migrasi)

Server ini juga memungkinkan Anda memicu run pipeline baru menggunakan snapshot (disarankan) atau parameter pemicu berbasis template yang sudah usang.

Catatan: Kami terus menyempurnakan integrasi ini berdasarkan masukan pengguna. Silakan bergabung dengan komunitas Slack untuk berbagi pengalaman dan membantu kami menjadikannya lebih baik!

Profil alat dan kebijakan penulisan

Profil compact secara default mengiklankan 16 alat. Tujuh alat generik mencakup katalog sumber daya, operasi baca, mutasi biasa, dan tindakan siklus hidup terbatas:

AlatTujuan
zenml_describe_resourcesMenemukan jenis sumber daya yang didukung dan skema operasi terbatas
zenml_list_resourcesMencantumkan satu jenis sumber daya dengan filter dan paginasi yang divalidasi
zenml_get_resourceMendapatkan satu sumber daya, dengan cakupan induk dan proyek jika diperlukan
zenml_create_resourceMembuat sumber daya yang didukung dari payload bertipe
zenml_update_resourceMemperbarui UUID sumber daya tertentu
zenml_delete_resourceMenghapus atau mengarsipkan UUID sumber daya tertentu
zenml_action_resourceMenjalankan tindakan siklus hidup atau relasi yang diizinkan tanpa percobaan ulang

Sembilan alat khusus tetap tersedia karena menyediakan diagnostik, konteks aktif, log atau kode yang dialirkan, eksekusi pipeline, atau App interaktif:

  • diagnose_zenml_setup
  • get_active_user dan get_active_project
  • trigger_pipeline
  • get_step_logs, get_step_code, dan get_deployment_logs
  • open_pipeline_run_dashboard dan open_run_activity_chart

get_step_logs mengembalikan paling banyak 50,000 entri, dari yang terlama terlebih dahulu, dengan flag possibly_truncated, serta note yang menjelaskan entri mana yang hilang dan alasannya. Berikan tail untuk mendapatkan hanya entri terbaru. Pada server ZenML 0.97+, alat ini melakukan paginasi melalui penyimpanan log; pada 0.96, alat ini menggunakan endpoint permintaan tunggal yang lebih lama.

Gunakan ZENML_MCP_PROFILE=legacy jika klien yang sudah ada masih bergantung pada nama khusus entitas lama seperti list_pipeline_runs. Profil ini mempertahankan lapisan kompatibilitas nama alat dan skema yang telah dikarakterisasi untuk ZenML 0.97.0. Profil ini tidak menambahkan dukungan untuk versi server ZenML yang lebih lama. Gunakan hanya selama migrasi: bentuk respons lama mungkin mengekspos lebih banyak metadata operasional daripada alat ringkas, meskipun server menghilangkan konfigurasi yang memuat kredensial dan kolom sensitif lainnya dari kedua profil.

Pendaftaran dan akses tulis tidak saling bergantung:

ProfilKebijakanAlat yang diiklankan
compactread_write16
compactread_only11
legacyread_write57
legacyread_only52

Atur ZENML_MCP_WRITE_POLICY=read_only untuk menghapus keempat alat mutasi generik dan trigger_pipeline dari penemuan dan dispatch MCP. Penemuan sumber daya juga menghilangkan skema create, update, delete, dan action. Pengaturan lama ZENML_MCP_READ_ONLY=true tetap diterima; nilai kebijakan yang tidak valid akan gagal secara aman ke mode hanya-baca. Nilai ZENML_MCP_PROFILE yang tidak valid akan menghentikan startup dengan kesalahan konfigurasi.

Versi 2.0.0 memerlukan MCP Python SDK 2.2.0 dan ZenML 0.96.4. Profil ringkas menjadi default baru dan mengubah penemuan secara tidak kompatibel bagi klien yang memanggil nama alat khusus entitas. Atur ZENML_MCP_PROFILE=legacy selama migrasi klien tersebut, lalu alihkan setiap pemanggilan ke alat sumber daya generik.

Hasil mutasi membedakan hasil completed, accepted, dan unknown. Server tidak mencoba ulang mutasi setelah kemungkinan permintaan mencapai ZenML. Untuk hasil yang diterima atau tidak diketahui, ikuti petunjuk rekonsiliasi dalam respons sebelum memutuskan apakah akan memanggilnya lagi. Gunakan pembacaan bernama jika tersedia. Pembuatan webhook dan rotasi secret dapat mengembalikan secret penandatanganan baru satu kali; pembacaan berikutnya tidak menyertakannya. Skema delete menyatakan apakah suatu operasi mengarsipkan metadata, menghapus metadata, menonaktifkan sumber daya aktif, atau dapat menghapus data artefak yang tersimpan.

Rilis 2.0 pertama mencakup operasi biasa untuk proyek, stack dan komponennya, flavor, layanan, pipeline dan run, snapshot dan template, deployment, artefak dan versinya, model dan versinya, tag, konektor, repositori kode, webhook, pemicu, kondisi tunggu, dan pemanggilan hook. Pengguna, jadwal, jenis konektor layanan, secret, dan permintaan sumber daya memiliki cakupan hanya-baca yang ditunjukkan oleh zenml_describe_resources. Cakupan ini tidak mencakup administrasi control plane ZenML Cloud, administrasi Resource Manager, administrasi pengguna dan kredensial, CRUD nilai secret, login dan verifikasi konektor, event webhook mentah, atau alat debugging maupun lineage agregat.

Mulai alur kerja generik dengan menemukan skema yang tepat, lalu memanggilnya:

zenml_describe_resources(resource_type="pipeline_run", operation="list")
zenml_list_resources(
    resource_type="pipeline_run",
    filters={"status": "completed", "sort_by": "desc:created"},
    page=1,
    size=10,
)

Prompt dan sumber daya tetap tersedia di kedua profil. Prompt analisis, endpoint skema sumber daya terbatas, dan most_recent_runs adalah prompt atau sumber daya MCP, bukan alat.

Kompatibilitas template run

ZenML 0.97.0 tetap menyediakan API CRUD template run. Snapshot lebih disarankan untuk alur kerja baru. Pembuatan praktis pipeline dan parameter pemicu berbasis template sudah usang. Dalam profil lama, get_run_template dan list_run_templates tetap tersedia untuk klien yang sudah ada.

Input lama tag tetap ada di list_run_templates demi kompatibilitas skema, tetapi ZenML 0.97.0 tidak memiliki filter sisi server yang setara. Nilai non-null akan ditolak sebelum pemanggilan SDK. Pemfilteran tag snapshot tetap tersedia.

Migrasi: Template Run → Snapshot

Mengapa berubah? Snapshot menggantikan template run sebagai artefak pipeline yang dapat dijalankan dan lebih disarankan oleh ZenML. SDK 0.97.0 masih mendukung CRUD template run, sedangkan kode baru sebaiknya menggunakan snapshot.

Panduan Migrasi Singkat

Pola Lama (Template)Pola Ringkas (Snapshot)
list_run_templates()zenml_list_resources(resource_type="snapshot", filters={"runnable": true, "named_only": true})
get_run_template(name)zenml_get_resource(resource_type="snapshot", resource_id=id)
trigger_pipeline(template_id=...)trigger_pipeline(snapshot_name_or_id=...)

Contoh Alur Kerja (Snapshot Terlebih Dahulu)

1. Discover project context:
   → get_active_project()

2. Find runnable snapshots:
   → zenml_list_resources(resource_type="snapshot", filters={"runnable": true, "named_only": true})

3. Trigger a run:
   → trigger_pipeline(snapshot_name_or_id="my-snapshot")

4. Check deployments:
   → zenml_list_resources(resource_type="deployment", filters={"status": "running"})
   → get_deployment_logs(name_id_or_prefix="my-deployment", tail=100)

Untuk mengganti parameter saat memicu snapshot yang dapat dijalankan, berikan konfigurasi run ZenML (snapshot itu sendiri tetap tidak berubah):

trigger_pipeline(
    snapshot_name_or_id="my-snapshot",
    run_configuration={
        "steps": {"train": {"parameters": {"learning_rate": 0.01}}},
        "enable_cache": False,
    },
)

Untuk snapshot statis, ganti parameter langkah seperti yang ditunjukkan di atas. Penggantian tingkat atas run_configuration={"parameters": {...}} mengganti parameter fungsi pipeline dan hanya didukung untuk snapshot dinamis; ZenML menolaknya untuk snapshot statis.

Catatan: get_deployment_logs mengembalikan output terbatas (default 100 baris, maksimum 1000, dibatasi hingga 100KB) dan memerlukan integrasi deployer yang sesuai untuk diinstal.

Penyiapan Cepat melalui Dashboard (Disarankan)

Cara termudah untuk menyiapkan ZenML MCP Server adalah melalui halaman Pengaturan MCP di dashboard ZenML Anda.

MCP Settings Page

Buka Settings → MCP di dashboard ZenML Anda untuk mendapatkan:

  • Cuplikan yang telah dikonfigurasi untuk URL server dan kredensial khusus Anda
  • Instalasi sekali klik melalui deep link untuk IDE yang didukung
  • Konfigurasi siap salin-tempel untuk VS Code, Claude Desktop, Cursor, Claude Code, OpenAI Codex, dan lainnya
  • Opsi Docker dan uv sesuai preferensi Anda

Pengguna ZenML Pro

Halaman Pengaturan MCP memungkinkan Anda membuat Personal Access Token (PAT) hanya dengan satu klik. Token tersebut otomatis disertakan dalam semua cuplikan konfigurasi yang dihasilkan.

Pengguna ZenML OSS

  1. Buat token akun layanan terlebih dahulu melalui Settings → Service Accounts
  2. Tempel token ke halaman Pengaturan MCP
  3. Salin konfigurasi yang dihasilkan untuk IDE Anda

Lebih suka penyiapan manual? Lihat petunjuk terperinci di bawah.

MCP Apps (Eksperimental)

Apa itu MCP Apps? MCP Apps adalah UI HTML interaktif yang dapat disajikan server MCP langsung ke klien AI. UI ini ditampilkan dalam iframe sandbox dan dapat memanggil alat server secara dua arah. Lihat pengumuman resmi untuk detail selengkapnya.

Run Activity Chart

Server ini menyertakan dua MCP Apps eksperimental:

AppAlatDeskripsi
Dasbor Run Pipelineopen_pipeline_run_dashboardTabel interaktif berisi run pipeline terbaru, dengan status, detail langkah, dan log
Grafik Aktivitas Runopen_run_activity_chartDiagram batang aktivitas run pipeline selama 30 hari terakhir, dengan perincian status

Pipeline Runs Dashboard

App ini disertakan sebagai contoh bukti konsep. Kami menyambut masukan dan kontribusi untuk MCP Apps lainnya. Fitur baru ini masih dalam tahap awal, jadi kita perlu melihat bagaimana perkembangannya. Kami berharap dapat mendukungnya dengan lebih menyeluruh di masa mendatang.

Klien yang Didukung

MCP Apps memerlukan transport Streamable HTTP (bukan stdio). Klien berikut saat ini mendukung MCP Apps:

  • ✅ VS Code (Edisi Insiders)
  • ✅ Goose
  • ✅ ChatGPT (segera diluncurkan)
  • ⚠️ Claude Desktop -- hingga akhir Januari 2026, belum dapat menampilkan Apps.
  • ⚠️ Claude.ai (web) — hingga akhir Januari 2026, belum dapat menampilkan Apps.

Catatan: Saat penulisan, kami belum dapat menguji Claude Desktop atau Claude.ai secara menyeluruh. Jika Anda mengalami masalah, silakan laporkan.

Menjalankan MCP Apps dengan Docker

MCP Apps menggunakan Streamable HTTP. Ikat port container ke loopback dan tempatkan proxy terbalik terautentikasi atau layanan akses yang memahami identitas di depannya sebelum mengizinkan akses jarak jauh. Validasi Host dan Origin melindungi dari DNS rebinding; validasi tersebut tidak mengautentikasi pemanggil.

1. Bangun dan jalankan container Docker:

docker build -t mcp-zenml:apps .

docker run --rm -d --name mcp-zenml-apps -p 127.0.0.1:8001:8001 \
  -e ZENML_STORE_URL="https://your-zenml-server.example.com" \
  -e ZENML_STORE_API_KEY="your-api-key" \
  -e ZENML_MCP_PROFILE="compact" \
  -e ZENML_MCP_WRITE_POLICY="read_write" \
  -e ZENML_ACTIVE_PROJECT_ID="your-project-id" \
  mcp-zenml:apps --transport streamable-http --host 0.0.0.0 --port 8001 \
  --disable-dns-rebinding-protection

2. Konfigurasikan akses jarak jauh yang terautentikasi:

Buat Cloudflare Tunnel bernama, Tailscale Funnel dengan kontrol akses, atau reverse proxy terautentikasi yang setara. Arahkan origin privatnya ke http://127.0.0.1:8001, wajibkan identitas atau kredensial layanan untuk hostname publik, dan teruskan hanya permintaan terautentikasi ke origin. Konfigurasikan klien MCP Anda untuk menggunakan alur OAuth atau header otorisasi yang didukung penyedia.

Sebelum menambahkan kredensial ZenML ke container, pastikan bahwa permintaan tanpa autentikasi tidak dapat mencapai MCP:

curl -i https://mcp.example.com/mcp

Responsnya harus berupa 401, 403, atau pengalihan login dari penyedia akses. Respons JSON-RPC atau MCP berarti perimeter terbuka dan harus diperbaiki terlebih dahulu.

3. Hubungkan klien terautentikasi Anda:

{
	"servers": {
		"ZenML": {
			"url": "https://mcp.example.com/mcp",
			"type": "http"
		}
	},
	"inputs": []
}
  • Minta AI untuk "membuka dasbor eksekusi pipeline" atau "menampilkan grafik aktivitas eksekusi"

Catatan penting:

  • ZENML_ACTIVE_PROJECT_ID wajib ada — tanpanya, alat eksekusi pipeline akan gagal dengan "No project is currently set as active"
  • --disable-dns-rebinding-protection hanya sesuai jika proxy terautentikasi memvalidasi host publik dan port container tetap hanya dapat diakses melalui loopback
  • Batasi kunci API ZenML hanya pada izin yang dibutuhkan klien MCP; gunakan ZENML_MCP_WRITE_POLICY=read_only untuk klien yang hanya melakukan inspeksi

Pengujian & Jaminan Kualitas

Proyek ini mencakup pengujian otomatis untuk memastikan server MCP tetap berfungsi:

  • 🔄 Pengujian Smoke Otomatis: Pengujian smoke komprehensif dijalankan setiap 3 hari melalui GitHub Actions
  • 🚨 Pembuatan Issue: Pengujian yang gagal secara otomatis membuat issue GitHub dengan informasi debugging terperinci
  • ⚡ CI Cepat: Menggunakan UV dengan caching untuk instalasi dependensi dan pengujian yang cepat
  • 🧪 Pengujian Manual: Anda dapat menjalankan pengujian smoke secara lokal menggunakan uv run scripts/test_mcp_server.py server/zenml_server.py

Pengujian otomatis memverifikasi:

  • Koneksi dan handshake protokol MCP
  • Inisialisasi server dan penemuan alat
  • Fungsionalitas alat dasar (saat server ZenML dapat diakses)
  • Enumerasi resource dan prompt
  • diagnose_zenml_setup mengembalikan diagnostik terstruktur bahkan di lingkungan terbatas

CI tanpa kredensial mencakup setiap adapter melalui protokol MCP. CI PR dan rilis juga menjalankan server ZenML 0.97.0 OSS baru pada alamat loopback dan menjalankan receipt CRUD persisten serta isolasi proyek dengan nama yang sama. Server menggunakan konfigurasi dan basis data sementara yang dihapus saat job berakhir; tidak diperlukan lingkungan repositori, runner yang di-host sendiri, atau kredensial ZenML.

Server OSS lokal ZenML menonaktifkan autentikasi dan penyimpanan SQL-nya tidak mendukung pemutaran ulang pipeline atau infrastruktur deployment eksternal. Receipt akses terbatas dan receipt trigger, replay, deployment, kondisi tunggu, serta permintaan resource yang mengaktifkan fitur tetap menjadi gate opt-in terpisah. Gate tersebut memerlukan ZENML_MCP_RESTRICTED_INTEGRATION=1 dengan ZENML_MCP_RESTRICTED_API_KEY, atau ZENML_MCP_ACTION_INTEGRATION=1 dengan UUID fixture sekali pakai yang persis di ZENML_MCP_ACTION_FIXTURE, masing-masing. Skip yang disebabkan gate bukan bukti bahwa kapabilitas tersebut berhasil. Operator dapat mengatur ZENML_MCP_REQUIRE_COMPLETE_INTEGRATION=1 agar gate opt-in yang tidak tersedia menyebabkan kegagalan. Penyediaan infrastruktur cloud tidak pernah menjadi bagian dari pengujian default.

Debugging dengan MCP Inspector

Untuk debugging interaktif, gunakan MCP Inspector — alat berbasis web yang memungkinkan Anda menguji alat MCP secara real-time:

# Using .env.local (recommended for development)
cp .env.local.example .env.local  # Then edit with your credentials
source .env.local && npx @modelcontextprotocol/inspector \
  -e ZENML_STORE_URL=$ZENML_STORE_URL \
  -e ZENML_STORE_API_KEY=$ZENML_STORE_API_KEY \
  -- uv run server/zenml_server.py

Ini akan membuka UI web dengan kredensial Anda yang sudah terisi — cukup klik Connect dan gunakan tab Tools untuk menguji alat apa pun secara interaktif.

Lihat CLAUDE.md untuk petunjuk debugging yang lebih terperinci.

Privasi & Analitik

ZenML MCP Server mengumpulkan analitik penggunaan anonim untuk membantu kami meningkatkan produk.

Yang kami lacak:

  • Alat yang digunakan dan frekuensi penggunaannya
  • Tingkat dan jenis error (hanya jenis error, tanpa pesan)
  • Info lingkungan dasar (OS, versi Python, dan apakah dijalankan di Docker/CI)
  • Durasi sesi dan pola penggunaan alat

Yang TIDAK kami kumpulkan:

  • URL server ZenML atau kunci API Anda
  • Nama pipeline, nama model, atau data bisnis apa pun
  • Pesan error atau stack trace
  • Informasi apa pun yang dapat mengidentifikasi pribadi

Untuk menonaktifkan analitik:

# Option 1
export ZENML_MCP_ANALYTICS_ENABLED=false

# Option 2
export ZENML_MCP_DISABLE_ANALYTICS=true

Untuk debugging/pengujian (mencatat event ke stderr alih-alih mengirimkannya):

export ZENML_MCP_ANALYTICS_DEV=true

Untuk pengguna Docker: Anda dapat mengatur ZENML_MCP_ANALYTICS_ID (harus berupa UUID yang valid) untuk mempertahankan ID anonim yang konsisten di antara restart container. Jika Anda tidak mengaturnya dan sistem file container tidak dapat mempertahankan file ID analitik, server akan menggunakan UUID anonim deterministik yang diturunkan dari hash ZENML_STORE_URL (URL itu sendiri tidak pernah dikirim sebagai properti event).

Opsi analitik tambahan:

  • ZENML_MCP_ANALYTICS_SHUTDOWN_TIMEOUT_S — waktu maksimum (detik) untuk mengirim analitik secara sinkron saat shutdown (default: 1.0)

Catatan tentang pelacakan shutdown: Event shutdown dikirim secara sinkron dengan batas waktu untuk meningkatkan keandalan pengiriman. Namun, jika container dihentikan dengan SIGKILL (misalnya, docker kill), handler shutdown tidak dapat dijalankan — ini adalah keterbatasan Docker/OS, bukan bug.

Validasi Startup

Anda dapat mengaktifkan pemeriksaan diagnostik startup yang ringan:

# Print warnings but start normally
uv run server/zenml_server.py --startup-validation warn

# Exit non-zero if required setup is missing (useful in Docker/CI)
uv run server/zenml_server.py --startup-validation strict

Anda juga dapat mengaturnya melalui variabel lingkungan: ZENML_MCP_STARTUP_VALIDATION=warn.

Alat diagnose_zenml_setup juga tersedia sebagai alat MCP untuk pemecahan masalah saat runtime — alat ini tetap berfungsi meskipun ZenML SDK tidak terinstal atau variabel lingkungan tidak tersedia.

Penyiapan Manual

Prasyarat

Anda perlu memiliki akses ke server ZenML yang telah di-deploy. Jika belum memilikinya, Anda dapat mendaftar untuk uji coba gratis di ZenML Pro dan kami akan mengelola deployment untuk Anda.

Tips: Setelah memiliki server ZenML, lihat halaman Pengaturan MCP di dasbor Anda untuk pengalaman penyiapan yang paling mudah.

Kompatibilitas: Versi saat ini telah diuji dengan ZenML 0.97.0. Jika Anda menjalankan versi ZenML yang lebih lama, gunakan rilis sebelumnya dari server MCP ini.

Anda juga (mungkin) perlu menginstal uv secara lokal. Untuk informasi lebih lanjut, lihat dokumentasi uv. Kami menyarankan instalasi melalui skrip penginstalnya atau melalui brew jika menggunakan Mac. (Secara teknis Anda tidak memerlukannya, tetapi ini memudahkan instalasi dan penyiapan.)

Anda juga perlu meng-clone repositori ini ke suatu lokasi lokal:

git clone https://github.com/zenml-io/mcp-zenml.git

File konfigurasi MCP Anda

File konfigurasi MCP adalah file JSON yang memberi tahu klien MCP cara terhubung ke server MCP Anda. Klien MCP yang berbeda menggunakan atau menentukan konfigurasi ini dengan cara yang berbeda. Dua klien MCP yang umum digunakan adalah Claude Desktop dan Cursor, yang petunjuk instalasinya kami sediakan di bawah.

Anda perlu menentukan server MCP ZenML dalam format berikut:

{
    "mcpServers": {
        "zenml": {
            "command": "/usr/local/bin/uv",
            "args": ["run", "path/to/server/zenml_server.py"],
            "env": {
                "LOGLEVEL": "WARNING",
                "NO_COLOR": "1",
                "ZENML_LOGGING_COLORS_DISABLED": "true",
                "ZENML_LOGGING_VERBOSITY": "WARN",
                "ZENML_ENABLE_RICH_TRACEBACK": "false",
                "ZENML_MCP_PROFILE": "compact",
                "ZENML_MCP_WRITE_POLICY": "read_write",
                "PYTHONUNBUFFERED": "1",
                "PYTHONIOENCODING": "UTF-8",
                "ZENML_STORE_URL": "https://your-zenml-server-goes-here.com",
                "ZENML_STORE_API_KEY": "your-api-key-here"
            }
        }
    }
}

Jika ZENML_STORE_API_KEY diberikan, server MCP menyimpan kredensial ZenML di memori dan tidak membaca atau memperbarui kredensial yang disimpan oleh zenml login. Ini berlaku untuk eksekusi Python langsung, ekstensi MCPB, dan Docker. Koneksi tanpa kunci API tetap dapat menggunakan login terminal yang tersimpan. Mulai ulang server MCP setelah mengubah kunci API-nya; chat baru saja mungkin tetap menggunakan proses server yang sedang berjalan.

Ada empat nilai dummy yang perlu Anda ganti:

  • path ke uv yang terinstal secara lokal (path yang tercantum di atas adalah lokasi di Mac jika Anda menginstalnya melalui brew)
  • path ke file zenml_server.py (file ini akan dijalankan saat Anda terhubung ke server MCP). File ini berada di root repositori ini. Anda perlu menentukan path lengkap yang tepat ke file ini.
  • URL server ZenML (URL server ZenML Anda. Anda dapat menemukannya di UI ZenML Cloud). Formatnya kurang lebih seperti https://d534d987a-zenml.cloudinfra.zenml.io.
  • kunci API server ZenML (kunci API untuk server ZenML Anda. Anda dapat menemukannya di UI ZenML Cloud atau baca dokumentasi ini untuk mengetahui cara membuatnya. Untuk keperluan ZenML MCP server, kami menyarankan penggunaan akun layanan.)

Anda bebas mengubah cara menjalankan file Python server MCP, tetapi menggunakan uv mungkin merupakan opsi termudah karena menangani lingkungan dan instalasi dependensi untuk Anda.

Instalasi untuk digunakan dengan Claude Desktop

Alternatif cepat: Gunakan halaman Pengaturan MCP di dasbor ZenML Anda (Settings → MCP) untuk mendapatkan petunjuk instalasi yang telah dikonfigurasi sebelumnya dan tautan langsung untuk Claude Desktop.

Anda perlu menginstal versi terbaru Claude Desktop.

Anda cukup membuka menu Settings dan menyeret file mcp-zenml.mcpb dari root repositori ini ke menu tersebut; file itu akan memandu Anda melalui proses instalasi dan penyiapan. Anda perlu menambahkan URL server ZenML dan kunci API.

Catatan: MCP bundle (.mcpb) menggantikan format Desktop Extensions (.dxt) yang lebih lama; file .dxt yang sudah ada tetap berfungsi di Claude Desktop.

Opsional: Meningkatkan Tampilan Output Alat ZenML

Untuk pengalaman yang lebih baik dengan hasil alat ZenML, Anda dapat mengonfigurasi Claude agar menampilkan respons JSON dalam format yang lebih mudah dibaca. Di Claude Desktop, buka Settings → Profile, lalu di bagian "What personal preferences should Claude consider in responses?" tambahkan teks seperti berikut (atau gunakan kata-kata ini persis!):

When using zenml tools which return JSON strings and you're asked a question, you might want to consider using markdown tables to summarize the results or make them easier to view!

Ini akan mendorong Claude untuk memformat output alat ZenML sebagai tabel markdown, sehingga informasi jauh lebih mudah dibaca dan dipahami.

Instalasi untuk digunakan dengan Cursor

Alternatif cepat: Halaman Pengaturan MCP di dasbor ZenML Anda (Settings → MCP) dapat membuat konten mcp.json yang tepat dengan kredensial Anda yang sudah terisi.

Anda perlu menginstal Cursor.

Cursor sedikit berbeda dari Claude Desktop karena Anda menentukan file konfigurasi untuk setiap repositori. Artinya, jika ingin menggunakan server MCP ZenML di beberapa repositori, Anda perlu menentukan file konfigurasi di masing-masing repositori.

Untuk menyiapkannya bagi satu repositori, Anda perlu:

  • membuat folder .cursor di root repositori
  • membuat file mcp.json di dalamnya dengan konten di atas
  • membuka pengaturan Cursor dan mengeklik server ZenML untuk 'mengaktifkannya'.

Berdasarkan pengalaman kami, terkadang indikator error berwarna merah tetap muncul meskipun server berfungsi. Anda dapat mencobanya dengan mengobrol di jendela chat Cursor. Cursor akan memberi tahu apakah ia dapat mengakses alat ZenML atau tidak.

Docker Image

Anda dapat menjalankan server sebagai container Docker. Proses berkomunikasi melalui stdio, sehingga akan menunggu koneksi klien MCP. Teruskan kredensial ZenML Anda melalui variabel lingkungan.

Image Siap Pakai (Docker Hub)

Tarik image multi-arsitektur terbaru:

docker pull zenmldocker/mcp-zenml:latest

Rilis berversi diberi tag sebagai X.Y.Z:

docker pull zenmldocker/mcp-zenml:2.0.0

Jalankan dengan kredensial ZenML Anda (mode stdio):

docker run -i --rm \
  -e ZENML_STORE_URL="https://your-zenml-server.example.com" \
  -e ZENML_STORE_API_KEY="your-api-key" \
  zenmldocker/mcp-zenml:latest

Konfigurasi MCP kanonis menggunakan Docker

{
  "mcpServers": {
    "zenml": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "ZENML_STORE_URL=https://...",
        "-e", "ZENML_STORE_API_KEY=ZENKEY_...",
        "-e", "ZENML_ACTIVE_PROJECT_ID=...",
        "-e", "ZENML_MCP_PROFILE=compact",
        "-e", "ZENML_MCP_WRITE_POLICY=read_write",
        "-e", "LOGLEVEL=WARNING",
        "-e", "NO_COLOR=1",
        "-e", "ZENML_LOGGING_COLORS_DISABLED=true",
        "-e", "ZENML_LOGGING_VERBOSITY=WARN",
        "-e", "ZENML_ENABLE_RICH_TRACEBACK=false",
        "-e", "PYTHONUNBUFFERED=1",
        "-e", "PYTHONIOENCODING=UTF-8",
        "zenmldocker/mcp-zenml:latest"
      ]
    }
  }
}

Build Secara Lokal

Dari root repositori:

docker build -t zenmldocker/mcp-zenml:local .

Jalankan image yang dibuat secara lokal:

docker run -i --rm \
  -e ZENML_STORE_URL="https://your-zenml-server.example.com" \
  -e ZENML_STORE_API_KEY="your-api-key" \
  zenmldocker/mcp-zenml:local

MCP Bundles (.mcpb)

Proyek ini menggunakan MCP Bundles (.mcpb) — penerus Desktop Extensions (DXT) dari Anthropic. MCP Bundles mengemas seluruh server MCP (termasuk dependensi) ke dalam satu file dengan konfigurasi yang mudah digunakan.

Catatan tentang perubahan nama: MCP Bundles menggantikan format .dxt yang lebih lama. Claude Desktop tetap kompatibel dengan file .dxt yang sudah ada, tetapi kini kami mendistribusikan mcp-zenml.mcpb dan menyarankan penggunaannya ke depannya.

File mcp-zenml.mcpb di root repositori menggunakan runtime UV MCPB 0.4. Host menginstal dependensi Python yang dipatok untuk sistem operasi saat ini, sehingga bundle yang sama berfungsi di macOS, Windows, dan Linux tanpa menyertakan ekstensi native khusus platform. Saat pertama kali UV menyelesaikan lingkungan yang disertakan, instalasi memerlukan akses jaringan. Build bundle menggunakan mcpb-uv.lock yang telah di-commit dan menyelesaikan grafik dependensi Python-nya dalam mode offline. Daftar dependensi bundle berasal dari [project].dependencies di pyproject.toml. Setelah mengubah daftar tersebut, atur MCPB_REFRESH_LOCK=1 untuk menyelesaikan dependensi secara online sambil mempertahankan setiap pin yang masih sesuai; MCPB_REFRESH_LOCK=upgrade memindahkan setiap pin ke versi terbarunya.

Saat Anda menyeret dan melepas file .mcpb ke pengaturan Claude Desktop, proses ini secara otomatis menangani:

  • Instalasi dependensi runtime
  • Pengelolaan konfigurasi yang aman
  • Kompatibilitas lintas platform
  • Proses penyiapan yang mudah digunakan

Untuk informasi selengkapnya, lihat pengumuman Anthropic tentang Desktop Extensions (DXT) dan panduan terkait pengemasan bundle MCP dalam dokumentasi mereka: https://www.anthropic.com/engineering/desktop-extensions

Dipublikasikan di Anthropic MCP Registry

Server MCP ini dipublikasikan di Anthropic MCP Registry resmi dan dapat ditemukan oleh host yang kompatibel. Pada setiap rilis bertag, CI kami memperbarui entri registry melalui CLI mcp-publisher milik registry menggunakan GitHub OIDC, sehingga Anda dapat menginstal atau menemukan ZenML MCP Server secara langsung di mana pun registry didukung (misalnya, katalog Extensions Claude Desktop).

  • Selalu terbaru: entri registry diperbarui pada setiap rilis berdasarkan manifest.json dan server.json dari commit yang diberi tag.
  • Jalur instalasi alternatif: Anda tetap dapat menginstalnya secara lokal melalui bundle .mcpb yang dikemas (lihat di atas) atau menjalankan image Docker.

Pelajari selengkapnya tentang registry di sini: