ZenML

आधिकारिक

अपने MLOps और LLMOps पाइपलाइनों के साथ अपने ZenML MCP सर्वर के माध्यम से बातचीत करें

ZenML MCP के साथ आप क्या कर सकते हैं?

  • संसाधन स्कीमा खोजें — क्वेरी चलाने से पहले zenml_describe_resources का उपयोग करके पूछें कि कौन-से संसाधन प्रकार और ऑपरेशन समर्थित हैं।
  • संसाधनों की सूची बनाएँ और फ़िल्टर करें — zenml_list_resources के ज़रिए मान्य फ़िल्टर और पेजिनेशन का उपयोग करके पाइपलाइन रन, डिप्लॉयमेंट, स्नैपशॉट या मॉडल सूचीबद्ध करें।
  • किसी एक संसाधन की जाँच करें — जहाँ आवश्यक हो, पैरेंट और प्रोजेक्ट का दायरा निर्दिष्ट करके zenml_get_resource से ID के आधार पर एक संसाधन प्राप्त करें।
  • पाइपलाइन रन ट्रिगर करें — trigger_pipeline के साथ चलाए जा सकने वाले स्नैपशॉट से रन शुरू करें और चाहें तो स्टेप पैरामीटर बदलें।
  • स्टेप लॉग और कोड पढ़ें — get_step_logs और get_step_code के ज़रिए सीमित स्टेप लॉग (नई प्रविष्टियों के लिए tail सहित) या स्टेप का सोर्स कोड प्राप्त करें।
  • सेटअप की समस्या का निदान करें — ZenML SDK या env vars उपलब्ध न होने पर भी संरचित समस्या-निवारण आउटपुट पाने के लिए diagnose_zenml_setup चलाएँ।

दस्तावेज़

ZenML के लिए MCP सर्वर

Trust Score

यह प्रोजेक्ट ZenML API के साथ इंटरैक्ट करने के लिए Model Context Protocol (MCP) सर्वर लागू करता है।

ZenML MCP Server

MCP क्या है?

Model Context Protocol (MCP) एक खुला प्रोटोकॉल है, जो Large Language Models (LLMs) को एप्लिकेशन द्वारा संदर्भ उपलब्ध कराने के तरीके को मानकीकृत करता है। यह "AI एप्लिकेशन के लिए USB-C पोर्ट" की तरह काम करता है—AI मॉडल को अलग-अलग डेटा स्रोतों और टूल से जोड़ने का एक मानकीकृत तरीका प्रदान करता है।

MCP क्लाइंट-सर्वर आर्किटेक्चर का पालन करता है, जिसमें:

  • MCP Hosts: Claude Desktop या IDE जैसे प्रोग्राम, जो MCP के ज़रिए डेटा तक पहुँचना चाहते हैं
  • MCP Clients: प्रोटोकॉल क्लाइंट, जो सर्वर के साथ 1:1 कनेक्शन बनाए रखते हैं
  • MCP Servers: हल्के प्रोग्राम, जो मानकीकृत प्रोटोकॉल के ज़रिए विशिष्ट क्षमताएँ उपलब्ध कराते हैं
  • Local Data Sources: आपके कंप्यूटर की फ़ाइलें, डेटाबेस और सेवाएँ, जिन्हें MCP सर्वर सुरक्षित रूप से एक्सेस कर सकते हैं
  • Remote Services: इंटरनेट पर उपलब्ध बाहरी सिस्टम, जिनसे MCP सर्वर कनेक्ट कर सकते हैं

ZenML क्या है?

ZenML ML और AI पाइपलाइन बनाने और प्रबंधित करने का एक ओपन-सोर्स प्लेटफ़ॉर्म है। यह डेटा, मॉडल और प्रयोगों को प्रबंधित करने के लिए एकीकृत इंटरफ़ेस प्रदान करता है।

अधिक जानकारी के लिए, ZenML वेबसाइट और हमारे दस्तावेज़ देखें।

सुविधाएँ

यह सर्वर ZenML सर्वर की मुख्य रीड कार्यक्षमता तक पहुँचने के लिए MCP टूल उपलब्ध कराता है, जिससे निम्नलिखित के बारे में लाइव जानकारी प्राप्त की जा सकती है:

मुख्य इकाइयाँ

  • Users - उपयोगकर्ता खाते और अनुमतियाँ
  • Stacks - इन्फ्रास्ट्रक्चर कॉन्फ़िगरेशन
  • Stack Components - स्टैक के अलग-अलग बिल्डिंग ब्लॉक
  • Flavors - उपलब्ध कंपोनेंट प्रकार
  • Service Connectors - क्लाउड प्रमाणीकरण

पाइपलाइन निष्पादन

  • Pipelines - पाइपलाइन परिभाषाएँ
  • Pipeline Runs - निष्पादन इतिहास और स्थिति
  • Pipeline Steps - अलग-अलग चरणों का विवरण, कोड और लॉग
  • Schedules - स्वचालित रन शेड्यूल
  • Artifacts - डेटा आर्टिफ़ैक्ट के बारे में मेटाडेटा (स्वयं डेटा नहीं)

डिप्लॉयमेंट और सर्विंग

  • Snapshots - फ़्रीज़ किए गए पाइपलाइन कॉन्फ़िगरेशन ("क्या चलाना/सर्व करना है" वाला आर्टिफ़ैक्ट)
  • Deployments - स्थिति, URL और लॉग वाले रनटाइम सर्विंग इंस्टेंस
  • Services - मॉडल सर्विंग एंडपॉइंट

संगठन और खोज

  • Projects - ZenML संसाधनों के लिए संगठनात्मक कंटेनर
  • Tags - खोज के लिए विभिन्न क्षेत्रों में उपयोग होने वाले मेटाडेटा लेबल
  • Builds - इमेज और कोड की जानकारी वाले पाइपलाइन बिल्ड आर्टिफ़ैक्ट

मॉडल

  • Models - ML मॉडल रजिस्ट्री प्रविष्टियाँ
  • Model Versions - संस्करणबद्ध मॉडल आर्टिफ़ैक्ट

संगतता API (माइग्रेशन की अनुशंसा)

  • Pipeline run templates ZenML 0.97.0 में उपलब्ध रहते हैं, जबकि नए वर्कफ़्लो के लिए Snapshots को प्राथमिकता दी जाती है (Migration Guide देखें)

सर्वर आपको snapshots (प्राथमिक विकल्प) या पुराने template-आधारित trigger पैरामीटर का उपयोग करके नए पाइपलाइन रन शुरू करने की सुविधा भी देता है।

ध्यान दें: उपयोगकर्ता फ़ीडबैक के आधार पर हम इस इंटीग्रेशन को लगातार बेहतर बना रहे हैं। अपना अनुभव साझा करने और इसे और बेहतर बनाने में हमारी मदद करने के लिए हमारे Slack समुदाय से जुड़ें!

टूल प्रोफ़ाइल और लेखन नीति

डिफ़ॉल्ट compact प्रोफ़ाइल 16 टूल उपलब्ध कराती है। सात सामान्य टूल संसाधन कैटलॉग, रीड, सामान्य बदलाव और सीमित जीवनचक्र कार्रवाइयों को कवर करते हैं:

Toolउद्देश्य
zenml_describe_resourcesसमर्थित संसाधन प्रकारों और सीमित ऑपरेशन स्कीमा की खोज करें
zenml_list_resourcesमान्य फ़िल्टर और पेजिनेशन के साथ एक संसाधन प्रकार की सूची बनाएँ
zenml_get_resourceजहाँ आवश्यक हो, पैरेंट और प्रोजेक्ट स्कोप के साथ एक संसाधन प्राप्त करें
zenml_create_resourceटाइप किए गए पेलोड से समर्थित संसाधन बनाएँ
zenml_update_resourceएक सटीक संसाधन UUID अपडेट करें
zenml_delete_resourceएक सटीक संसाधन UUID हटाएँ या आर्काइव करें
zenml_action_resourceबिना रीट्राई के अनुमति-सूचीबद्ध जीवनचक्र या संबंध कार्रवाई चलाएँ

नौ केंद्रित टूल उपलब्ध रहते हैं, क्योंकि वे डायग्नोस्टिक्स, सक्रिय संदर्भ, स्ट्रीम किए गए लॉग या कोड, पाइपलाइन निष्पादन, या इंटरैक्टिव App प्रदान करते हैं:

  • diagnose_zenml_setup
  • get_active_user और get_active_project
  • trigger_pipeline
  • get_step_logs, get_step_code, और get_deployment_logs
  • open_pipeline_run_dashboard और open_run_activity_chart

get_step_logs अधिकतम 50,000 प्रविष्टियाँ लौटाता है, सबसे पुरानी पहले, साथ में possibly_truncated फ़्लैग और एक note जो बताता है कि कौन-सी प्रविष्टियाँ गायब हैं और क्यों। केवल नवीनतम प्रविष्टियाँ पाने के लिए tail पास करें। ZenML 0.97+ सर्वर पर यह लॉग स्टोर में पेजिनेशन करता है; 0.96 पर यह पुराने एकल-अनुरोध एंडपॉइंट का उपयोग करता है।

जब कोई मौजूदा क्लाइंट अब भी पुराने इकाई-विशिष्ट नामों, जैसे list_pipeline_runs, पर निर्भर हो, तो ZENML_MCP_PROFILE=legacy का उपयोग करें। इससे ZenML 0.97.0 के लिए विशेषताओं के अनुरूप टूल-नाम और स्कीमा संगतता परत बनी रहती है। इससे पुराने ZenML सर्वर संस्करणों के लिए समर्थन नहीं जुड़ता। इसका उपयोग केवल माइग्रेशन के दौरान करें: पुराने रिस्पॉन्स आकार कॉम्पैक्ट टूल की तुलना में अधिक ऑपरेशनल मेटाडेटा दिखा सकते हैं, हालाँकि सर्वर दोनों प्रोफ़ाइल से क्रेडेंशियल वाली कॉन्फ़िगरेशन और अन्य संवेदनशील फ़ील्ड हटा देता है।

पंजीकरण और लेखन पहुँच स्वतंत्र हैं:

Profileनीतिउपलब्ध टूल
compactread_write16
compactread_only11
legacyread_write57
legacyread_only52

MCP खोज और डिस्पैच से सभी चार सामान्य बदलाव टूल और trigger_pipeline हटाने के लिए ZENML_MCP_WRITE_POLICY=read_only सेट करें। संसाधन खोज में create, update, delete और action स्कीमा भी शामिल नहीं होते। पुरानी ZENML_MCP_READ_ONLY=true सेटिंग अब भी स्वीकार की जाती है; अमान्य नीति मानों पर सुरक्षित रूप से केवल-रीड मोड लागू होता है। अमान्य ZENML_MCP_PROFILE होने पर कॉन्फ़िगरेशन त्रुटि के साथ स्टार्टअप रुक जाता है।

संस्करण 2.0.0 के लिए MCP Python SDK 2.2.0 और ZenML 0.96.4 आवश्यक हैं। कॉम्पैक्ट प्रोफ़ाइल अब डिफ़ॉल्ट है और यह उन क्लाइंट के लिए एक ब्रेकिंग डिस्कवरी बदलाव है, जो इकाई-विशिष्ट टूल नामों का उपयोग करते हैं। ऐसे क्लाइंट माइग्रेट करते समय ZENML_MCP_PROFILE=legacy सेट करें, फिर हर कॉल को सामान्य संसाधन टूल पर ले जाएँ।

बदलाव के परिणामों में completed, accepted, और unknown परिणामों के बीच अंतर होता है। ZenML तक पहुँच जाने की संभावना वाले बदलाव को सर्वर दोबारा नहीं आज़माता। स्वीकार किए गए या अज्ञात परिणाम के लिए, दोबारा कॉल करने का निर्णय लेने से पहले रिस्पॉन्स में दिए गए मिलान निर्देशों का पालन करें। जहाँ उपलब्ध हो, नामित रीड का उपयोग करें। Webhook निर्माण और secret rotation एक बार नया signing secret लौटा सकते हैं; बाद के रीड में यह शामिल नहीं होता। Delete स्कीमा बताती हैं कि कोई ऑपरेशन मेटाडेटा आर्काइव करता है, मेटाडेटा हटाता है, लाइव संसाधन को डिप्रोविज़न करता है, या संग्रहीत आर्टिफ़ैक्ट डेटा हटा सकता है।

पहली 2.0 रिलीज़ में projects, stacks और components, flavors, services, pipelines और runs, snapshots और templates, deployments, artifacts और versions, models और versions, tags, connectors, code repositories, webhooks, triggers, wait conditions, और hook invocations के सामान्य ऑपरेशन शामिल हैं। Users, schedules, service connector types, secrets, और resource requests के लिए zenml_describe_resources में दिखाया गया केवल-रीड कवरेज उपलब्ध है। इसमें ZenML Cloud control-plane प्रशासन, Resource Manager प्रशासन, उपयोगकर्ता और क्रेडेंशियल प्रशासन, secret-value CRUD, connector login और verification, raw webhook events, और समेकित डिबगिंग या lineage टूल शामिल नहीं हैं।

सामान्य वर्कफ़्लो शुरू करने के लिए पहले सटीक स्कीमा खोजें, फिर उसे कॉल करें:

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,
)

दोनों प्रोफ़ाइल में prompts और resources उपलब्ध रहते हैं। विश्लेषण prompts, सीमित resource-schema endpoints, और most_recent_runs टूल नहीं, बल्कि MCP prompts या resources हैं।

Run-template संगतता

ZenML 0.97.0 में run-template CRUD API उपलब्ध रहते हैं। नए वर्कफ़्लो के लिए snapshots को प्राथमिकता दी जाती है। पाइपलाइन बनाने की सुविधा और template-आधारित trigger पैरामीटर अब पुराने माने जाते हैं। पुराने प्रोफ़ाइल में, मौजूदा क्लाइंट के लिए get_run_template और list_run_templates उपलब्ध रहते हैं।

पुराना tag इनपुट स्कीमा संगतता के लिए list_run_templates में बना रहता है, लेकिन ZenML 0.97.0 में इसके बराबर कोई सर्वर-साइड फ़िल्टर नहीं है। SDK कॉल से पहले गैर-null मान अस्वीकार कर दिया जाता है। Snapshot टैग फ़िल्टरिंग अब भी उपलब्ध है।

माइग्रेशन: Run Templates → Snapshots

यह बदलाव क्यों? Snapshots ने run templates की जगह ZenML के पसंदीदा चलाए जा सकने वाले पाइपलाइन आर्टिफ़ैक्ट का स्थान लिया है। 0.97.0 SDK अब भी run-template CRUD का समर्थन करता है, जबकि नए कोड में snapshots का उपयोग करना चाहिए।

त्वरित माइग्रेशन गाइड

पुराना पैटर्न (Templates)कॉम्पैक्ट पैटर्न (Snapshots)
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=...)

उदाहरण वर्कफ़्लो (Snapshot-First)

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)

चलाए जा सकने वाले snapshot को ट्रिगर करते समय पैरामीटर ओवरराइड करने के लिए, ZenML run configuration पास करें (snapshot स्वयं अपरिवर्तित रहता है):

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

Static snapshots के लिए, ऊपर दिखाए अनुसार step पैरामीटर ओवरराइड करें। शीर्ष-स्तरीय run_configuration={"parameters": {...}} पाइपलाइन फ़ंक्शन पैरामीटर ओवरराइड करता है और केवल dynamic snapshots के लिए समर्थित है; ZenML इसे static snapshots के लिए अस्वीकार करता है।

ध्यान दें: get_deployment_logs सीमित आउटपुट लौटाता है (डिफ़ॉल्ट 100 पंक्तियाँ, अधिकतम 1000, 100KB तक सीमित) और इसके लिए उपयुक्त deployer integration इंस्टॉल होना आवश्यक है।

डैशबोर्ड के ज़रिए त्वरित सेटअप (अनुशंसित)

ZenML MCP Server सेट अप करने का सबसे आसान तरीका आपके ZenML डैशबोर्ड के MCP Settings पेज से है।

MCP Settings Page

अपने ZenML डैशबोर्ड में Settings → MCP पर जाएँ और ये पाएँ:

  • आपके विशिष्ट सर्वर URL और क्रेडेंशियल के लिए पहले से कॉन्फ़िगर किए गए स्निपेट
  • समर्थित IDE के लिए डीप लिंक के ज़रिए एक-क्लिक इंस्टॉलेशन
  • VS Code, Claude Desktop, Cursor, Claude Code, OpenAI Codex और अन्य के लिए कॉपी-पेस्ट कॉन्फ़िगरेशन
  • आपकी पसंद के अनुसार Docker और uv विकल्प

ZenML Pro उपयोगकर्ता

MCP Settings पेज से एक क्लिक में Personal Access Token (PAT) बनाया जा सकता है। यह टोकन सभी जनरेट किए गए कॉन्फ़िगरेशन स्निपेट में अपने-आप शामिल हो जाता है।

ZenML OSS उपयोगकर्ता

  1. पहले Settings → Service Accounts के ज़रिए service account token बनाएँ
  2. टोकन को MCP Settings पेज में पेस्ट करें
  3. अपने IDE के लिए जनरेट किया गया कॉन्फ़िगरेशन कॉपी करें

मैन्युअल सेटअप पसंद है? नीचे दिए गए विस्तृत निर्देश देखें।

MCP Apps (प्रायोगिक)

MCP Apps क्या हैं? MCP Apps इंटरैक्टिव HTML UI हैं, जिन्हें MCP सर्वर सीधे AI क्लाइंट में उपलब्ध करा सकते हैं। ये sandboxed iframes में रेंडर होते हैं और सर्वर टूल को दोनों दिशाओं में कॉल कर सकते हैं। पूरी जानकारी के लिए आधिकारिक घोषणा देखें।

Run Activity Chart

इस सर्वर में दो प्रायोगिक MCP Apps शामिल हैं:

AppToolविवरण
Pipeline Runs Dashboardopen_pipeline_run_dashboardहाल के पाइपलाइन रन की स्थिति, चरणों के विवरण और लॉग वाली इंटरैक्टिव तालिका
Run Activity Chartopen_run_activity_chartस्थिति के अनुसार विभाजन के साथ पिछले 30 दिनों की पाइपलाइन रन गतिविधि का बार चार्ट

Pipeline Runs Dashboard

ये ऐप्स प्रूफ़-ऑफ़-कॉन्सेप्ट उदाहरण के रूप में शामिल हैं। हम और MCP Apps बनाने के लिए फ़ीडबैक और योगदान का स्वागत करते हैं। यह नई सुविधा अभी शुरुआती चरण में है, इसलिए देखना होगा कि यह कैसे विकसित होती है। भविष्य में हम इसे और व्यापक रूप से समर्थन देने की अपेक्षा करते हैं।

समर्थित क्लाइंट

MCP Apps के लिए Streamable HTTP ट्रांसपोर्ट आवश्यक है (stdio नहीं)। निम्नलिखित क्लाइंट वर्तमान में MCP Apps का समर्थन करते हैं:

  • ✅ VS Code (Insiders Edition)
  • ✅ Goose
  • ✅ ChatGPT (जल्द लॉन्च हो रहा है)
  • ⚠️ Claude Desktop -- जनवरी 2026 के अंत तक, यह अभी Apps रेंडर नहीं करता।
  • ⚠️ Claude.ai (वेब) — जनवरी 2026 के अंत तक, यह अभी Apps रेंडर नहीं करता।

ध्यान दें: लिखते समय हम Claude Desktop या Claude.ai के साथ पूरी तरह परीक्षण नहीं कर पाए थे। यदि आपको कोई समस्या आती है, तो कृपया उसकी रिपोर्ट करें।

Docker के साथ MCP Apps चलाना

MCP Apps, Streamable HTTP का उपयोग करते हैं। कंटेनर पोर्ट को loopback से बाइंड रखें और रिमोट एक्सेस की अनुमति देने से पहले उसके सामने प्रमाणीकृत reverse proxy या identity-aware access service रखें। Host और Origin सत्यापन DNS rebinding से सुरक्षा करते हैं; वे कॉल करने वालों को प्रमाणित नहीं करते।

1. 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. प्रमाणित रिमोट एक्सेस कॉन्फ़िगर करें:

नाम वाला Cloudflare Tunnel, एक्सेस नियंत्रणों वाला Tailscale Funnel, या इसके समकक्ष कोई प्रमाणित रिवर्स प्रॉक्सी बनाएँ। इसके निजी origin को http://127.0.0.1:8001 पर इंगित करें, सार्वजनिक hostname के लिए पहचान या सेवा क्रेडेंशियल आवश्यक करें, और केवल प्रमाणित अनुरोधों को origin तक पहुँचने दें। अपने MCP क्लाइंट को प्रदाता के समर्थित OAuth फ़्लो या authorization headers का उपयोग करने के लिए कॉन्फ़िगर करें।

कंटेनर में ZenML क्रेडेंशियल जोड़ने से पहले, सत्यापित करें कि कोई अप्रमाणित अनुरोध MCP तक नहीं पहुँच सकता:

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

प्रतिक्रिया एक्सेस प्रदाता का 401, 403, या लॉगिन रीडायरेक्ट होना चाहिए। JSON-RPC या MCP प्रतिक्रिया का अर्थ है कि सुरक्षा परिधि खुली है और इसे पहले ठीक करना होगा।

3. अपने प्रमाणित क्लाइंट को कनेक्ट करें:

{
	"servers": {
		"ZenML": {
			"url": "https://mcp.example.com/mcp",
			"type": "http"
		}
	},
	"inputs": []
}
  • AI से कहें कि वह "पाइपलाइन रन डैशबोर्ड खोले" या "रन गतिविधि चार्ट दिखाए"

महत्वपूर्ण नोट:

  • ZENML_ACTIVE_PROJECT_ID आवश्यक है — इसके बिना, पाइपलाइन रन टूल "No project is currently set as active" त्रुटि देंगे
  • --disable-dns-rebinding-protection का उपयोग केवल तभी उचित है जब प्रमाणित प्रॉक्सी सार्वजनिक host को सत्यापित करे और कंटेनर पोर्ट केवल loopback तक सीमित रहे
  • ZenML API key को MCP क्लाइंट की आवश्यक अनुमतियों तक सीमित रखें; केवल निरीक्षण करने वाले क्लाइंट के लिए ZENML_MCP_WRITE_POLICY=read_only का उपयोग करें

परीक्षण और गुणवत्ता आश्वासन

इस प्रोजेक्ट में यह सुनिश्चित करने के लिए स्वचालित परीक्षण शामिल हैं कि MCP सर्वर काम करता रहे:

  • 🔄 स्वचालित स्मोक टेस्ट: GitHub Actions के ज़रिए हर 3 दिन में एक व्यापक स्मोक टेस्ट चलता है
  • 🚨 इश्यू बनाना: विफल परीक्षण विस्तृत डिबगिंग जानकारी के साथ अपने-आप GitHub इश्यू बनाते हैं
  • ⚡ तेज़ CI: निर्भरताओं को जल्दी इंस्टॉल और टेस्ट करने के लिए कैशिंग के साथ UV का उपयोग करता है
  • 🧪 मैन्युअल परीक्षण: आप uv run scripts/test_mcp_server.py server/zenml_server.py का उपयोग करके स्थानीय रूप से स्मोक टेस्ट चला सकते हैं

स्वचालित परीक्षण इन चीज़ों की पुष्टि करते हैं:

  • MCP प्रोटोकॉल कनेक्शन और हैंडशेक
  • सर्वर इनिशियलाइज़ेशन और टूल खोज
  • बुनियादी टूल कार्यक्षमता (जब ZenML सर्वर उपलब्ध हो)
  • संसाधनों और प्रॉम्प्ट की गणना
  • diagnose_zenml_setup सीमित परिवेशों में भी संरचित डायग्नोस्टिक्स लौटाता है

क्रेडेंशियल-मुक्त CI, MCP प्रोटोकॉल के ज़रिए हर adapter को कवर करता है। PR और रिलीज़ CI एक नया ZenML 0.97.0 OSS सर्वर loopback पते पर शुरू करते हैं और स्थायी CRUD तथा समान-नाम वाले प्रोजेक्ट के पृथक्करण की पुष्टि करते हैं। सर्वर एक अस्थायी कॉन्फ़िगरेशन और डेटाबेस का उपयोग करता है, जिन्हें जॉब समाप्त होने पर हटा दिया जाता है; किसी repository environment, self-hosted runner, या ZenML क्रेडेंशियल की आवश्यकता नहीं होती।

ZenML का स्थानीय OSS सर्वर प्रमाणीकरण अक्षम करता है और इसका SQL store pipeline replay या बाहरी deployment infrastructure का समर्थन नहीं करता। इसलिए प्रतिबंधित एक्सेस और सुविधा-सक्षम trigger, replay, deployment, wait-condition, तथा resource-request की पुष्टि अलग वैकल्पिक गेट के रूप में रहती है। इनके लिए क्रमशः ZENML_MCP_RESTRICTED_INTEGRATION=1 के साथ ZENML_MCP_RESTRICTED_API_KEY, या ZENML_MCP_ACTION_INTEGRATION=1 के साथ ZENML_MCP_ACTION_FIXTURE में दिए गए सटीक अस्थायी fixture UUID आवश्यक हैं। गेट के कारण टेस्ट छोड़ दिया जाना इस बात का प्रमाण नहीं है कि वे क्षमताएँ सफल रहीं। कोई ऑपरेटर ZENML_MCP_REQUIRE_COMPLETE_INTEGRATION=1 सेट करके, वैकल्पिक गेट न होने पर उसे विफलता में बदल सकता है। क्लाउड इन्फ्रास्ट्रक्चर का प्रावधान कभी भी डिफ़ॉल्ट टेस्ट रन का हिस्सा नहीं होता।

MCP Inspector से डिबगिंग

इंटरैक्टिव डिबगिंग के लिए MCP Inspector का उपयोग करें — यह एक वेब-आधारित टूल है, जिससे आप MCP टूल को रियल टाइम में टेस्ट कर सकते हैं:

# 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

इससे आपके क्रेडेंशियल पहले से भरे हुए वेब UI खुलेगा — बस Connect पर क्लिक करें और किसी भी टूल को इंटरैक्टिव रूप से टेस्ट करने के लिए Tools टैब का उपयोग करें।

डिबगिंग के अधिक विस्तृत निर्देशों के लिए CLAUDE.md देखें।

गोपनीयता और एनालिटिक्स

ZenML MCP Server उत्पाद को बेहतर बनाने में हमारी मदद के लिए गुमनाम उपयोग एनालिटिक्स एकत्र करता है।

हम ट्रैक करते हैं:

  • कौन-से टूल उपयोग किए जाते हैं और कितनी बार
  • त्रुटि दर और प्रकार (केवल त्रुटि का प्रकार, संदेश नहीं)
  • परिवेश की बुनियादी जानकारी (OS, Python संस्करण, और Docker/CI में चल रहा है या नहीं)
  • सत्र की अवधि और टूल उपयोग के पैटर्न

हम एकत्र नहीं करते:

  • आपका ZenML सर्वर URL या API key
  • पाइपलाइन के नाम, मॉडल के नाम, या कोई व्यावसायिक डेटा
  • त्रुटि संदेश या stack trace
  • कोई भी व्यक्तिगत पहचान योग्य जानकारी

एनालिटिक्स बंद करने के लिए:

# Option 1
export ZENML_MCP_ANALYTICS_ENABLED=false

# Option 2
export ZENML_MCP_DISABLE_ANALYTICS=true

डिबगिंग/परीक्षण के लिए (भेजने के बजाय इवेंट stderr पर लॉग करता है):

export ZENML_MCP_ANALYTICS_DEV=true

Docker उपयोगकर्ताओं के लिए: कंटेनर रीस्टार्ट के दौरान एक समान गुमनाम ID बनाए रखने के लिए आप ZENML_MCP_ANALYTICS_ID सेट कर सकते हैं (यह मान्य UUID होना चाहिए)। यदि आप इसे सेट नहीं करते और कंटेनर का फ़ाइल सिस्टम एनालिटिक्स ID फ़ाइल को स्थायी रूप से सहेज नहीं सकता, तो सर्वर ZENML_STORE_URL के hash से निकले एक नियतात्मक गुमनाम UUID का उपयोग करेगा (URL स्वयं कभी भी इवेंट प्रॉपर्टी के रूप में नहीं भेजा जाता)।

एनालिटिक्स के अतिरिक्त विकल्प:

  • ZENML_MCP_ANALYTICS_SHUTDOWN_TIMEOUT_S — शटडाउन के दौरान एनालिटिक्स को सिंक्रोनस रूप से भेजने के लिए अधिकतम समय (सेकंड में; डिफ़ॉल्ट: 1.0)

शटडाउन ट्रैकिंग पर नोट: बेहतर डिलीवरी विश्वसनीयता के लिए शटडाउन इवेंट सीमित समय-सीमा के साथ सिंक्रोनस रूप से भेजे जाते हैं। हालाँकि, यदि किसी कंटेनर को SIGKILL (उदाहरण के लिए, docker kill) के साथ बंद किया जाता है, तो शटडाउन हैंडलर नहीं चल सकते — यह Docker/OS की सीमा है, बग नहीं।

स्टार्टअप सत्यापन

आप हल्की स्टार्टअप डायग्नोस्टिक जाँच सक्षम कर सकते हैं:

# 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

आप इसे पर्यावरण वेरिएबल के ज़रिए भी सेट कर सकते हैं: ZENML_MCP_STARTUP_VALIDATION=warn।

diagnose_zenml_setup टूल रनटाइम समस्या-निवारण के लिए MCP टूल के रूप में भी उपलब्ध है — यह तब भी काम करता है जब ZenML SDK इंस्टॉल न हो या पर्यावरण वेरिएबल मौजूद न हों।

मैन्युअल सेटअप

आवश्यकताएँ

आपके पास डिप्लॉय किए गए ZenML सर्वर का एक्सेस होना चाहिए। यदि आपके पास ऐसा सर्वर नहीं है, तो ZenML Pro पर मुफ़्त ट्रायल के लिए साइन अप करें और हम आपके लिए डिप्लॉयमेंट प्रबंधित करेंगे।

सुझाव: ZenML सर्वर मिलने के बाद, सबसे आसान सेटअप अनुभव के लिए अपने डैशबोर्ड में MCP Settings पेज देखें।

संगतता: वर्तमान संस्करण का परीक्षण ZenML 0.97.0 के साथ किया गया है। यदि आप ZenML का पुराना संस्करण चला रहे हैं, तो इस MCP सर्वर की पुरानी रिलीज़ का उपयोग करें।

आपको (संभवतः) स्थानीय रूप से uv भी इंस्टॉल करना होगा। अधिक जानकारी के लिए uv दस्तावेज़ देखें। हम उनके installer script के ज़रिए इंस्टॉल करने की सलाह देते हैं, या Mac का उपयोग करने पर brew के ज़रिए। (तकनीकी रूप से इसकी ज़रूरत नहीं है, लेकिन इससे इंस्टॉलेशन और सेटअप आसान हो जाता है।)

आपको इस repository को स्थानीय रूप से किसी स्थान पर clone भी करना होगा:

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

आपकी MCP कॉन्फ़िगरेशन फ़ाइल

MCP कॉन्फ़िगरेशन फ़ाइल एक JSON फ़ाइल है, जो MCP क्लाइंट को बताती है कि आपके MCP सर्वर से कैसे कनेक्ट करना है। अलग-अलग MCP क्लाइंट इसे अलग-अलग तरीकों से उपयोग या निर्दिष्ट करते हैं। आम तौर पर उपयोग किए जाने वाले दो MCP क्लाइंट Claude Desktop और Cursor हैं, जिनके लिए हम नीचे इंस्टॉलेशन निर्देश देते हैं।

आपको अपना ZenML MCP सर्वर इस फ़ॉर्मैट में निर्दिष्ट करना होगा:

{
    "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"
            }
        }
    }
}

जब ZENML_STORE_API_KEY दिया जाता है, तो MCP सर्वर अपने ZenML क्रेडेंशियल मेमोरी में रखता है और zenml login द्वारा सहेजे गए क्रेडेंशियल को पढ़ता या अपडेट नहीं करता। यह सीधे Python रन, MCPB एक्सटेंशन और Docker पर लागू होता है। API key के बिना कनेक्शन अब भी आपके सहेजे गए टर्मिनल लॉगिन का उपयोग कर सकते हैं। अपनी API key बदलने के बाद MCP सर्वर रीस्टार्ट करें; केवल नई चैट शुरू करने पर चल रही सर्वर प्रक्रिया का फिर से उपयोग हो सकता है।

चार डमी मान हैं जिन्हें आपको बदलना होगा:

  • आपके स्थानीय रूप से इंस्टॉल किए गए uv का पथ (ऊपर दिया गया पथ Mac पर तब लागू होगा, जब आपने इसे brew के ज़रिए इंस्टॉल किया हो)
  • zenml_server.py फ़ाइल का पथ (MCP सर्वर से कनेक्ट होने पर यही फ़ाइल चलाई जाएगी)। यह फ़ाइल इस repository के root में मौजूद है। आपको इस फ़ाइल का पूरा सटीक पथ निर्दिष्ट करना होगा।
  • ZenML सर्वर URL (यह आपके ZenML सर्वर का URL है। आप इसे ZenML Cloud UI में पा सकते हैं)। यह कुछ इस तरह दिखेगा: https://d534d987a-zenml.cloudinfra.zenml.io।
  • ZenML सर्वर API key (यह आपके ZenML सर्वर की API key है। आप इसे ZenML Cloud UI में पा सकते हैं या इसे बनाने का तरीका जानने के लिए https://docs.zenml.io/how-to/manage-zenml-server/connecting-to-zenml/connect-with-a-service-account पढ़ सकते हैं। ZenML MCP server के लिए हम service account का उपयोग करने की सलाह देते हैं।)

आप MCP सर्वर की Python फ़ाइल चलाने का तरीका बदल सकते हैं, लेकिन uv का उपयोग करना शायद सबसे आसान विकल्प होगा, क्योंकि यह आपके लिए पर्यावरण और निर्भरता इंस्टॉलेशन संभालता है।

Claude Desktop के साथ उपयोग के लिए इंस्टॉलेशन

त्वरित विकल्प: पहले से कॉन्फ़िगर किए गए इंस्टॉलेशन निर्देश और Claude Desktop के लिए deep link पाने हेतु अपने ZenML डैशबोर्ड में MCP Settings पेज (Settings → MCP) का उपयोग करें।

आपके पास Claude Desktop का नवीनतम संस्करण इंस्टॉल होना चाहिए।

आप बस Settings मेनू खोलकर इस repository के root में मौजूद mcp-zenml.mcpb फ़ाइल को मेनू पर खींच सकते हैं। यह आपको इंस्टॉलेशन और सेटअप प्रक्रिया में मार्गदर्शन देगा। आपको अपना ZenML सर्वर URL और API key जोड़नी होगी।

नोट: MCP bundles (.mcpb) पुराने Desktop Extensions (.dxt) फ़ॉर्मैट की जगह लेते हैं; मौजूदा .dxt फ़ाइलें अब भी Claude Desktop में काम करती हैं।

वैकल्पिक: ZenML टूल आउटपुट का प्रदर्शन बेहतर करना

ZenML टूल के परिणामों का बेहतर अनुभव पाने के लिए, आप Claude को JSON प्रतिक्रियाएँ अधिक पठनीय फ़ॉर्मैट में दिखाने के लिए कॉन्फ़िगर कर सकते हैं। Claude Desktop में Settings → Profile पर जाएँ और "What personal preferences should Claude consider in responses?" सेक्शन में नीचे जैसा कुछ जोड़ें (या इन सटीक शब्दों का उपयोग करें!):

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!

इससे Claude को ZenML टूल आउटपुट को Markdown तालिकाओं के रूप में फ़ॉर्मैट करने के लिए प्रोत्साहन मिलेगा, जिससे जानकारी पढ़ना और समझना बहुत आसान हो जाएगा।

Cursor के साथ उपयोग के लिए इंस्टॉलेशन

त्वरित विकल्प: आपके ZenML डैशबोर्ड का MCP Settings पेज (Settings → MCP), आपके क्रेडेंशियल पहले से भरे हुए सटीक mcp.json कंटेंट बना सकता है।

आपके पास Cursor इंस्टॉल होना चाहिए।

Cursor, Claude Desktop से थोड़ा अलग तरीके से काम करता है: इसमें आप प्रति-repository कॉन्फ़िगरेशन फ़ाइल निर्दिष्ट करते हैं। इसका अर्थ है कि यदि आप कई repos में ZenML MCP server का उपयोग करना चाहते हैं, तो आपको हर repo में कॉन्फ़िगरेशन फ़ाइल निर्दिष्ट करनी होगी।

एक repository के लिए इसे सेट अप करने हेतु:

  • अपनी repository के root में .cursor फ़ोल्डर बनाएँ
  • उसके अंदर, ऊपर दिए गए कंटेंट के साथ mcp.json फ़ाइल बनाएँ
  • अपनी Cursor settings में जाएँ और ZenML server को 'enable' करने के लिए उस पर क्लिक करें।

हमारे अनुभव में, कभी-कभी यह काम करने के बावजूद लाल त्रुटि संकेतक दिखाता है। आप Cursor chat विंडो में चैट करके इसे आज़मा सकते हैं। यह आपको बताएगा कि वह ZenML टूल तक पहुँच सकता है या नहीं।

Docker Image

आप सर्वर को Docker कंटेनर के रूप में चला सकते हैं। प्रक्रिया stdio के ज़रिए संचार करती है, इसलिए यह MCP क्लाइंट कनेक्शन की प्रतीक्षा करेगी। अपने ZenML क्रेडेंशियल पर्यावरण वेरिएबल के ज़रिए दें।

पहले से बनी Images (Docker Hub)

नवीनतम multi-arch image pull करें:

docker pull zenmldocker/mcp-zenml:latest

संस्करण वाली रिलीज़ को X.Y.Z के रूप में टैग किया जाता है:

docker pull zenmldocker/mcp-zenml:2.0.0

अपने ZenML क्रेडेंशियल के साथ चलाएँ (stdio mode):

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

Docker का उपयोग करके मानक MCP कॉन्फ़िगरेशन

{
  "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 करें

repository के root से:

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

स्थानीय रूप से बनाई गई image चलाएँ:

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)

यह प्रोजेक्ट MCP Bundles (.mcpb) का उपयोग करता है — ये Anthropic के Desktop Extensions (DXT) के उत्तराधिकारी हैं। MCP Bundles पूरे MCP सर्वर (निर्भरताओं सहित) को उपयोगकर्ता-अनुकूल कॉन्फ़िगरेशन वाली एक फ़ाइल में पैकेज करते हैं।

नाम बदलने पर नोट: MCP Bundles पुराने .dxt फ़ॉर्मैट की जगह लेते हैं। Claude Desktop मौजूदा .dxt फ़ाइलों के साथ पिछली संगतता बनाए रखता है, लेकिन अब हम mcp-zenml.mcpb भेजते हैं और आगे से इसका उपयोग करने की सलाह देते हैं।

repository के root में मौजूद mcp-zenml.mcpb फ़ाइल MCPB 0.4 UV runtime का उपयोग करती है। होस्ट वर्तमान ऑपरेटिंग सिस्टम के लिए पिन की गई Python निर्भरताएँ इंस्टॉल करता है, इसलिए वही bundle macOS, Windows और Linux पर platform-specific native extensions को शामिल किए बिना काम करता है। पहली बार UV द्वारा bundled environment का समाधान करने पर इंस्टॉलेशन के लिए नेटवर्क एक्सेस आवश्यक है। बंडल बिल्ड, कमिट किए गए mcpb-uv.lock का फिर से उपयोग करते हैं और ऑफ़लाइन मोड में इसकी Python निर्भरता ग्राफ़ को हल करते हैं। बंडल की निर्भरता सूची pyproject.toml में मौजूद [project].dependencies से आती है। उस सूची में बदलाव करने के बाद, ऑनलाइन फिर से हल करने के लिए MCPB_REFRESH_LOCK=1 सेट करें और उन सभी पिन को बनाए रखें जो अब भी उपयुक्त हैं; MCPB_REFRESH_LOCK=upgrade हर पिन को उसके नवीनतम संस्करण पर ले जाता है।

जब आप .mcpb फ़ाइल को Claude Desktop की सेटिंग में ड्रैग और ड्रॉप करते हैं, तो यह अपने आप इन कामों को संभालता है:

  • रनटाइम निर्भरता इंस्टॉल करना
  • सुरक्षित कॉन्फ़िगरेशन प्रबंधन
  • क्रॉस-प्लैटफ़ॉर्म संगतता
  • उपयोगकर्ता-अनुकूल सेटअप प्रक्रिया

अधिक जानकारी के लिए, Anthropic की Desktop Extensions (DXT) संबंधी घोषणा और उनके दस्तावेज़ों में MCP बंडल पैकेजिंग से जुड़े दिशानिर्देश देखें: https://www.anthropic.com/engineering/desktop-extensions

Anthropic MCP Registry पर प्रकाशित

यह MCP सर्वर आधिकारिक Anthropic MCP Registry पर प्रकाशित है और संगत होस्ट द्वारा खोजा जा सकता है। हर टैग किए गए रिलीज़ पर, हमारा CI GitHub OIDC का उपयोग करके Registry की mcp-publisher CLI के ज़रिए Registry प्रविष्टि को अपडेट करता है, ताकि आप जहाँ भी Registry समर्थित हो (जैसे, Claude Desktop के Extensions कैटलॉग में), वहीं से ZenML MCP Server को सीधे इंस्टॉल या खोज सकें।

  • हमेशा अप-टू-डेट: हर रिलीज़ के साथ Registry प्रविष्टि को टैग किए गए कमिट के manifest.json और server.json से रीफ़्रेश किया जाता है।
  • वैकल्पिक इंस्टॉल तरीके: आप अब भी पैकेज किए गए .mcpb बंडल के ज़रिए स्थानीय रूप से इंस्टॉल कर सकते हैं (ऊपर देखें) या Docker इमेज चला सकते हैं।

Registry के बारे में यहाँ और जानें: