ZenML
आधिकारिकअपने MLOps और LLMOps पाइपलाइनों के साथ अपने ZenML MCP सर्वर के माध्यम से बातचीत करें
ZenML MCP के साथ आप क्या कर सकते हैं?
- ZenML संसाधनों का निरीक्षण करें —
zenml_list_resourcesऔरzenml_describe_resourcesके माध्यम से पाइपलाइन, स्टैक, मॉडल या डिप्लॉयमेंट को सूचीबद्ध या वर्णित करने के लिए कहें। - पाइपलाइन रन ट्रिगर करें — नाम या ID के साथ
trigger_pipelineका उपयोग करके स्नैपशॉट या टेम्पलेट से नया रन अनुरोध करें। - रन विवरण और लॉग प्राप्त करें —
get_step_logs,get_deployment_logs, याget_step_codeके साथ स्टेप लॉग, डिप्लॉयमेंट लॉग या स्टेप कोड प्राप्त करें। - सेटअप समस्याओं का निदान करें — सर्वर कनेक्टिविटी या कॉन्फ़िगरेशन समस्याओं के समाधान के लिए
diagnose_zenml_setupचलाएँ। - इंटरैक्टिव डैशबोर्ड खोलें —
open_pipeline_run_dashboardयाopen_run_activity_chartके माध्यम से पाइपलाइन रन डैशबोर्ड या गतिविधि चार्ट लॉन्च करें। - संसाधनों को सुरक्षित रूप से प्रबंधित करें —
zenml_create_resource,zenml_update_resource, याzenml_delete_resourceका उपयोग करके प्रोजेक्ट या स्टैक जैसे संसाधन बनाएँ, अपडेट करें या हटाएँ।
दस्तावेज़
ZenML के लिए MCP सर्वर
यह प्रोजेक्ट ZenML API के साथ इंटरैक्ट करने के लिए एक https://modelcontextprotocol.io/introduction सर्वर लागू करता है।

MCP क्या है?
मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) एक खुला प्रोटोकॉल है जो मानकीकृत करता है कि एप्लिकेशन बड़े भाषा मॉडल (LLMs) को कॉन्टेक्स्ट कैसे प्रदान करते हैं। यह "AI अनुप्रयोगों के लिए USB-C पोर्ट" की तरह कार्य करता है - AI मॉडल को विभिन्न डेटा स्रोतों और टूल से जोड़ने का एक मानकीकृत तरीका प्रदान करता है।
MCP क्लाइंट-सर्वर आर्किटेक्चर का पालन करता है जहाँ:
- MCP होस्ट: क्लाउड डेस्कटॉप या IDE जैसे प्रोग्राम जो MCP के माध्यम से डेटा एक्सेस करना चाहते हैं
- MCP क्लाइंट: प्रोटोकॉल क्लाइंट जो सर्वर के साथ 1:1 कनेक्शन बनाए रखते हैं
- MCP सर्वर: हल्के प्रोग्राम जो मानकीकृत प्रोटोकॉल के माध्यम से विशिष्ट क्षमताओं को उजागर करते हैं
- स्थानीय डेटा स्रोत: आपके कंप्यूटर की फ़ाइलें, डेटाबेस और सेवाएँ जिन्हें MCP सर्वर सुरक्षित रूप से एक्सेस कर सकते हैं
- दूरस्थ सेवाएँ: इंटरनेट पर उपलब्ध बाहरी सिस्टम जिनसे MCP सर्वर कनेक्ट हो सकते हैं
ZenML क्या है?
ZenML ML और AI पाइपलाइनों के निर्माण और प्रबंधन के लिए एक ओपन-सोर्स प्लेटफ़ॉर्म है। यह डेटा, मॉडल और प्रयोगों के प्रबंधन के लिए एक एकीकृत इंटरफ़ेस प्रदान करता है।
अधिक जानकारी के लिए, ZenML वेबसाइट और हमारे दस्तावेज़ देखें।
विशेषताएँ
सर्वर ZenML सर्वर से कोर रीड कार्यक्षमता तक पहुँचने के लिए MCP टूल प्रदान करता है, जो निम्न के बारे में लाइव जानकारी प्राप्त करने का तरीका प्रदान करता है:
कोर इकाइयाँ
- उपयोगकर्ता - उपयोगकर्ता खाते और अनुमतियाँ
- स्टैक - इंफ्रास्ट्रक्चर कॉन्फ़िगरेशन
- स्टैक घटक - व्यक्तिगत स्टैक बिल्डिंग ब्लॉक
- फ्लेवर - उपलब्ध घटक प्रकार
- सेवा कनेक्टर - क्लाउड प्रमाणीकरण
पाइपलाइन निष्पादन
- पाइपलाइन - पाइपलाइन परिभाषाएँ
- पाइपलाइन रन - निष्पादन इतिहास और स्थिति
- पाइपलाइन चरण - व्यक्तिगत चरण विवरण, कोड और लॉग
- शेड्यूल - स्वचालित रन शेड्यूल
- आर्टिफैक्ट - डेटा आर्टिफैक्ट के बारे में मेटाडेटा (डेटा स्वयं नहीं)
परिनियोजन और सर्विंग
- स्नैपशॉट - फ्रोज़न पाइपलाइन कॉन्फ़िगरेशन ("क्या चलाना/सर्व करना है" आर्टिफैक्ट)
- परिनियोजन - स्थिति, URL और लॉग के साथ रनटाइम सर्विंग इंस्टेंस
- सेवाएँ - मॉडल सर्विंग एंडपॉइंट
संगठन और खोज
- प्रोजेक्ट - ZenML संसाधनों के लिए संगठनात्मक कंटेनर
- टैग - खोज के लिए क्रॉस-कटिंग मेटाडेटा लेबल
- बिल्ड - छवि और कोड जानकारी के साथ पाइपलाइन बिल्ड आर्टिफैक्ट
मॉडल
- मॉडल - ML मॉडल रजिस्ट्री प्रविष्टियाँ
- मॉडल संस्करण - संस्करणित मॉडल आर्टिफैक्ट
संगतता API (माइग्रेशन अनुशंसित)
- पाइपलाइन रन टेम्पलेट ZenML 0.97.0 में उपलब्ध रहते हैं, जबकि स्नैपशॉट नए वर्कफ़्लो के लिए पसंदीदा हैं (देखें माइग्रेशन गाइड)
सर्वर आपको स्नैपशॉट (पसंदीदा) या पुराने टेम्पलेट-आधारित ट्रिगर पैरामीटर का उपयोग करके नए पाइपलाइन रन ट्रिगर करने की भी अनुमति देता है।
नोट: हम उपयोगकर्ता प्रतिक्रिया के आधार पर इस एकीकरण में लगातार सुधार कर रहे हैं। कृपया अपना अनुभव साझा करने के लिए हमारे स्लैक समुदाय से जुड़ें और हमें इसे और बेहतर बनाने में मदद करें!
टूल प्रोफाइल और राइट पॉलिसी
डिफ़ॉल्ट compact प्रोफाइल 16 टूल का विज्ञापन करता है। सात सामान्य टूल संसाधन कैटलॉग, रीड, सामान्य म्यूटेशन और सीमित जीवनचक्र क्रियाओं को कवर करते हैं:
| टूल | उद्देश्य |
|---|---|
zenml_describe_resources | समर्थित संसाधन प्रकार और बाउंडेड ऑपरेशन स्कीमा खोजें |
zenml_list_resources | मान्य फ़िल्टर और पेजिनेशन के साथ एक संसाधन प्रकार सूचीबद्ध करें |
zenml_get_resource | एक संसाधन प्राप्त करें, जहाँ आवश्यक हो मूल और प्रोजेक्ट स्कोप के साथ |
zenml_create_resource | टाइप किए गए पेलोड से समर्थित संसाधन बनाएँ |
zenml_update_resource | एक सटीक संसाधन UUID अपडेट करें |
zenml_delete_resource | एक सटीक संसाधन UUID हटाएँ या संग्रहित करें |
zenml_action_resource | बिना रीट्राई के अनुमत जीवनचक्र या संबंध क्रिया चलाएँ |
नौ केंद्रित टूल बने रहते हैं क्योंकि वे डायग्नोस्टिक्स, सक्रिय कॉन्टेक्स्ट, स्ट्रीम किए गए लॉग या कोड, पाइपलाइन निष्पादन, या एक इंटरैक्टिव ऐप प्रदान करते हैं:
diagnose_zenml_setupget_active_userऔरget_active_projecttrigger_pipelineget_step_logs,get_step_code, औरget_deployment_logsopen_pipeline_run_dashboardऔरopen_run_activity_chart
get_step_logs अधिकतम 50,000 प्रविष्टियाँ लौटाता है, सबसे पुरानी पहले, एक possibly_truncated फ़्लैग के साथ, साथ ही एक note जो बताता है कि कौन सी प्रविष्टियाँ गायब हैं और क्यों। केवल नवीनतम प्रविष्टियाँ प्राप्त करने के लिए tail पास करें। ZenML 0.97+ सर्वर पर यह लॉग स्टोर के माध्यम से पेज करता है; 0.96 पर यह पुराने सिंगल-रिक्वेस्ट एंडपॉइंट का उपयोग करता है।
ZENML_MCP_PROFILE=legacy का उपयोग करें जब कोई मौजूदा क्लाइंट अभी भी पुराने एंटिटी-विशिष्ट नामों जैसे list_pipeline_runs पर निर्भर करता है। यह ZenML 0.97.0 के लिए विशेषता वाले टूल-नाम और स्कीमा संगतता परत को बनाए रखता है। यह पुराने ZenML सर्वर संस्करणों के लिए समर्थन नहीं जोड़ता है। केवल माइग्रेट करते समय इसका उपयोग करें: विरासत प्रतिक्रिया आकार कॉम्पैक्ट टूल की तुलना में अधिक परिचालन मेटाडेटा उजागर कर सकते हैं, हालाँकि सर्वर दोनों प्रोफाइल से क्रेडेंशियल-युक्त कॉन्फ़िगरेशन और अन्य संवेदनशील फ़ील्ड को छोड़ देता है।
पंजीकरण और राइट एक्सेस स्वतंत्र हैं:
| प्रोफाइल | पॉलिसी | विज्ञापित टूल |
|---|---|---|
compact | read_write | 16 |
compact | read_only | 11 |
legacy | read_write | 57 |
legacy | read_only | 52 |
सभी चार सामान्य म्यूटेशन टूल और trigger_pipeline को MCP डिस्कवरी और डिस्पैच से हटाने के लिए ZENML_MCP_WRITE_POLICY=read_only सेट करें। संसाधन डिस्कवरी भी क्रिएट, अपडेट, डिलीट और एक्शन स्कीमा को छोड़ देती है। पुरानी 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 तक पहुँच चुका हो। स्वीकृत या अज्ञात परिणाम के लिए, दोबारा कॉल करने का निर्णय लेने से पहले प्रतिक्रिया में पुनर्संयोजन निर्देशों का पालन करें। जब उपलब्ध हो तो नामित रीड का उपयोग करें। वेबहुक निर्माण और सीक्रेट रोटेशन एक बार नया साइनिंग सीक्रेट लौटा सकते हैं; बाद के रीड इसे छोड़ देते हैं। डिलीट स्कीमा बताते हैं कि कोई ऑपरेशन मेटाडेटा संग्रहित करता है, मेटाडेटा हटाता है, लाइव संसाधन को डीप्रोविज़न करता है, या संग्रहीत आर्टिफैक्ट डेटा हटा सकता है।
पहला 2.0 रिलीज़ प्रोजेक्ट, स्टैक और घटक, फ्लेवर, सेवाएँ, पाइपलाइन और रन, स्नैपशॉट और टेम्पलेट, परिनियोजन, आर्टिफैक्ट और संस्करण, मॉडल और संस्करण, टैग, कनेक्टर, कोड रिपॉजिटरी, वेबहुक, ट्रिगर, प्रतीक्षा स्थितियाँ और हुक आह्वान के लिए सामान्य संचालन को कवर करता है। उपयोगकर्ता, शेड्यूल, सेवा कनेक्टर प्रकार, सीक्रेट और संसाधन अनुरोधों में zenml_describe_resources द्वारा दिखाया गया रीड-ओनली कवरेज है। यह ZenML क्लाउड कंट्रोल-प्लेन प्रशासन, संसाधन प्रबंधक प्रशासन, उपयोगकर्ता और क्रेडेंशियल प्रशासन, सीक्रेट-मान CRUD, कनेक्टर लॉगिन और सत्यापन, कच्चे वेबहुक इवेंट और समग्र डिबगिंग या लिनेज टूल को बाहर करता है।
सटीक स्कीमा खोजकर एक सामान्य वर्कफ़्लो शुरू करें, फिर उसे कॉल करें:
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,
)
प्रॉम्प्ट और संसाधन दोनों प्रोफाइल में उपलब्ध रहते हैं। विश्लेषण प्रॉम्प्ट, बाउंडेड संसाधन-स्कीमा एंडपॉइंट और most_recent_runs टूल के बजाय MCP प्रॉम्प्ट या संसाधन हैं।
रन-टेम्पलेट संगतता
ZenML 0.97.0 रन-टेम्पलेट CRUD API बनाए रखता है। नए वर्कफ़्लो के लिए स्नैपशॉट पसंदीदा हैं। पाइपलाइन सुविधा निर्माण और टेम्पलेट-आधारित ट्रिगर पैरामीटर पुराने हैं। विरासत प्रोफाइल में, get_run_template और list_run_templates मौजूदा क्लाइंट्स के लिए उपलब्ध रहते हैं।
विरासत tag इनपुट स्कीमा संगतता के लिए list_run_templates में रहता है, लेकिन ZenML 0.97.0 में कोई समकक्ष सर्वर-साइड फ़िल्टर नहीं है। SDK कॉल से पहले एक गैर-शून्य मान अस्वीकार कर दिया जाता है। स्नैपशॉट टैग फ़िल्टरिंग उपलब्ध रहती है।
माइग्रेशन: रन टेम्पलेट → स्नैपशॉट
परिवर्तन क्यों? स्नैपशॉट ने रन टेम्पलेट को ZenML के पसंदीदा चलने योग्य पाइपलाइन आर्टिफैक्ट के रूप में बदल दिया। 0.97.0 SDK अभी भी रन-टेम्पलेट CRUD का समर्थन करता है, जबकि नए कोड को स्नैपशॉट का उपयोग करना चाहिए।
त्वरित माइग्रेशन गाइड
| विरासत पैटर्न (टेम्पलेट) | कॉम्पैक्ट पैटर्न (स्नैपशॉट) |
|---|---|
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=...) |
उदाहरण वर्कफ़्लो (स्नैपशॉट-फर्स्ट)
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)
नोट: get_deployment_logs बाउंडेड आउटपुट लौटाता है (डिफ़ॉल्ट 100 लाइनें, अधिकतम 1000, 100KB पर कैप) और उपयुक्त डिप्लॉयर एकीकरण स्थापित होना आवश्यक है।
डैशबोर्ड के माध्यम से त्वरित सेटअप (अनुशंसित)
ZenML MCP सर्वर सेट करने का सबसे आसान तरीका आपके ZenML डैशबोर्ड के MCP सेटिंग्स पेज के माध्यम से है।

अपने ZenML डैशबोर्ड में सेटिंग्स → MCP पर नेविगेट करें:
- आपके विशिष्ट सर्वर URL और क्रेडेंशियल के लिए पूर्व-कॉन्फ़िगर किए गए स्निपेट
- समर्थित IDE के लिए डीप लिंक के माध्यम से वन-क्लिक इंस्टॉलेशन
- VS Code, Claude Desktop, Cursor, Claude Code, OpenAI Codex और अधिक के लिए कॉपी-पेस्ट कॉन्फ़िगरेशन
- आपकी पसंद के आधार पर Docker और uv विकल्प
ZenML Pro उपयोगकर्ता
MCP सेटिंग्स पेज आपको एक क्लिक के साथ पर्सनल एक्सेस टोकन (PAT) उत्पन्न करने देता है। टोकन स्वचालित रूप से सभी उत्पन्न कॉन्फ़िगरेशन स्निपेट में शामिल होता है।
ZenML OSS उपयोगकर्ता
- पहले सेटिंग्स → सेवा खाते के माध्यम से एक सेवा खाता टोकन बनाएँ
- टोकन को MCP सेटिंग्स पेज में पेस्ट करें
- अपने IDE के लिए उत्पन्न कॉन्फ़िगरेशन कॉपी करें
मैन्युअल सेटअप पसंद है? नीचे विस्तृत निर्देश देखें।
MCP ऐप्स (प्रायोगिक)
MCP ऐप्स क्या हैं? MCP ऐप्स इंटरैक्टिव HTML UI हैं जिन्हें MCP सर्वर सीधे AI क्लाइंट्स में सर्व कर सकते हैं। वे सैंडबॉक्स किए गए iframes में रेंडर करते हैं और द्विदिशात्मक रूप से सर्वर टूल कॉल कर सकते हैं। पूर्ण विवरण के लिए आधिकारिक घोषणा देखें।

इस सर्वर में दो प्रायोगिक MCP ऐप्स शामिल हैं:
| ऐप | टूल | विवरण |
|---|---|---|
| पाइपलाइन रन डैशबोर्ड | open_pipeline_run_dashboard | स्थिति, चरण विवरण और लॉग के साथ हाल के पाइपलाइन रन की इंटरैक्टिव तालिका |
| रन गतिविधि चार्ट | open_run_activity_chart | स्थिति विभाजन के साथ पिछले 30 दिनों में पाइपलाइन रन गतिविधि का बार चार्ट |

ये ऐप्स प्रूफ-ऑफ-कॉन्सेप्ट उदाहरण के रूप में शामिल हैं। हम अधिक MCP ऐप्स के लिए प्रतिक्रिया और योगदान का स्वागत करते हैं। इस नई सुविधा के लिए अभी शुरुआती दिन हैं इसलिए हमें देखना होगा कि यह कैसे विकसित होती है। हम भविष्य में इसे और अधिक पूर्ण रूप से समर्थन करने की उम्मीद करते हैं।
समर्थित क्लाइंट
MCP ऐप्स को स्ट्रीमेबल HTTP ट्रांसपोर्ट की आवश्यकता होती है (stdio नहीं)। निम्नलिखित क्लाइंट वर्तमान में MCP ऐप्स का समर्थन करते हैं:
- ✅ VS Code (इनसाइडर्स संस्करण)
- ✅ Goose
- ✅ ChatGPT (जल्द लॉन्च हो रहा है)
- ⚠️ Claude Desktop -- जनवरी 2026 के अंत तक, ऐप्स रेंडर नहीं करता है।
- ⚠️ Claude.ai (वेब) — जनवरी 2026 के अंत तक, ऐप्स रेंडर नहीं करता है।
नोट: लेखन के समय हम Claude Desktop या Claude.ai के साथ पूरी तरह से परीक्षण करने में असमर्थ थे। यदि आपको समस्याएँ आती हैं, तो कृपया रिपोर्ट करें।
Docker के साथ MCP ऐप्स चलाना
MCP ऐप्स स्ट्रीमेबल HTTP का उपयोग करते हैं। कंटेनर पोर्ट को लूपबैक से बाउंड रखें और रिमोट एक्सेस की अनुमति देने से पहले उसके सामने एक प्रमाणित रिवर्स प्रॉक्सी या आइडेंटिटी-अवेयर एक्सेस सेवा रखें। होस्ट और ओरिजिन सत्यापन DNS रीबाइंडिंग से सुरक्षा करते हैं; वे कॉल करने वालों को प्रमाणित नहीं करते हैं।
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, या समकक्ष प्रमाणित रिवर्स प्रॉक्सी बनाएं। इसका निजी ओरिजिन http://127.0.0.1:8001 पर इंगित करें, सार्वजनिक होस्टनाम के लिए पहचान या सेवा क्रेडेंशियल आवश्यक करें, और केवल प्रमाणित अनुरोधों को ओरिजिन तक पास करें। अपने MCP क्लाइंट को प्रदाता के समर्थित OAuth फ्लो या प्राधिकरण हेडर का उपयोग करने के लिए कॉन्फ़िगर करें।
कंटेनर में 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केवल तभी उपयुक्त है जब प्रमाणित प्रॉक्सी सार्वजनिक होस्ट को मान्य करता है और कंटेनर पोर्ट केवल-लूपबैक रहता है- ZenML API कुंजी को उन अनुमतियों तक सीमित रखें जिनकी 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 प्रोटोकॉल के माध्यम से हर एडाप्टर को कवर करता है। PR और रिलीज़ CI भी लूपबैक पते पर एक नया ZenML 0.97.0 OSS सर्वर शुरू करता है और स्थायी CRUD और समान-नाम परियोजना-अलगाव रसीदें चलाता है। सर्वर एक अस्थायी कॉन्फ़िगरेशन और डेटाबेस का उपयोग करता है जो जॉब समाप्त होने पर हटा दिया जाता है; कोई रिपॉजिटरी वातावरण, स्व-होस्टेड रनर, या ZenML क्रेडेंशियल आवश्यक नहीं है।
ZenML का स्थानीय OSS सर्वर प्रमाणीकरण अक्षम करता है और इसका SQL स्टोर पाइपलाइन रीप्ले या बाहरी तैनाती बुनियादी ढांचे का समर्थन नहीं करता है। प्रतिबंधित एक्सेस और सुविधा-सक्षम ट्रिगर, रीप्ले, तैनाती, प्रतीक्षा-स्थिति, और संसाधन-अनुरोध रसीदें इसलिए अलग ऑप्ट-इन गेट बनी रहती हैं। उन्हें क्रमशः ZENML_MCP_RESTRICTED_INTEGRATION=1 के साथ ZENML_MCP_RESTRICTED_API_KEY, या ZENML_MCP_ACTION_INTEGRATION=1 के साथ ZENML_MCP_ACTION_FIXTURE में सटीक डिस्पोजेबल फिक्स्चर UUID की आवश्यकता होती है। एक गेटेड स्किप इस बात का प्रमाण नहीं है कि वे क्षमताएं पास हुईं। एक ऑपरेटर लापता ऑप्ट-इन गेट को विफलता में बदलने के लिए ZENML_MCP_REQUIRE_COMPLETE_INTEGRATION=1 सेट कर सकता है। क्लाउड इंफ्रास्ट्रक्चर प्रावधान कभी भी डिफ़ॉल्ट परीक्षण रन का हिस्सा नहीं है।
MCP इंस्पेक्टर के साथ डिबगिंग
इंटरैक्टिव डिबगिंग के लिए, MCP इंस्पेक्टर का उपयोग करें — एक वेब-आधारित टूल जो आपको वास्तविक समय में 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 सर्वर उत्पाद को बेहतर बनाने में हमारी मदद करने के लिए अनाम उपयोग एनालिटिक्स एकत्र करता है।
हम ट्रैक करते हैं:
- कौन से टूल का उपयोग किया जाता है और कितनी बार
- त्रुटि दर और प्रकार (केवल त्रुटि प्रकार, कोई संदेश नहीं)
- बुनियादी पर्यावरण जानकारी (OS, Python संस्करण, और Docker/CI में चल रहा है या नहीं)
- सत्र अवधि और टूल उपयोग पैटर्न
हम एकत्र नहीं करते:
- आपका ZenML सर्वर URL या API कुंजी
- पाइपलाइन नाम, मॉडल नाम, या कोई व्यावसायिक डेटा
- त्रुटि संदेश या स्टैक ट्रेस
- कोई व्यक्तिगत रूप से पहचान योग्य जानकारी
एनालिटिक्स अक्षम करने के लिए:
# 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 के हैश से प्राप्त एक निर्धारक अनाम 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 सेटिंग्स पेज देखें।
संगतता: वर्तमान संस्करण ZenML 0.97.0 के खिलाफ परीक्षण किया गया है। यदि आप एक पुराना ZenML संस्करण चला रहे हैं, तो कृपया इस MCP सर्वर का पहले का रिलीज़ उपयोग करें।
आपको स्थानीय रूप से uv स्थापित करने की भी (शायद) आवश्यकता होगी। अधिक जानकारी के लिए, uv दस्तावेज़ीकरण देखें। हम उनके इंस्टॉलर स्क्रिप्ट के माध्यम से या Mac का उपयोग करने पर brew के माध्यम से स्थापना की सलाह देते हैं। (तकनीकी रूप से आपको इसकी आवश्यकता नहीं है, लेकिन यह स्थापना और सेटअप को आसान बनाता है।)
आपको इस रिपॉजिटरी को स्थानीय रूप से कहीं क्लोन करने की भी आवश्यकता होगी:
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"
}
}
}
}
चार डमी मान हैं जिन्हें आपको बदलने की आवश्यकता होगी:
- आपके स्थानीय रूप से स्थापित
uvका पथ (ऊपर सूचीबद्ध पथ वह है जहां यह Mac पर होगा यदि आपने इसेbrewके माध्यम से स्थापित किया है) zenml_server.pyफ़ाइल का पथ (यह वह फ़ाइल है जो MCP सर्वर से कनेक्ट होने पर चलाई जाएगी)। यह फ़ाइल इस रिपॉजिटरी के अंदर रूट पर स्थित है। आपको इस फ़ाइल का सटीक पूर्ण पथ निर्दिष्ट करना होगा।- ZenML सर्वर URL (यह आपके ZenML सर्वर का URL है। आप इसे ZenML क्लाउड UI में पा सकते हैं)। यह कुछ ऐसा दिखेगा जैसे
https://d534d987a-zenml.cloudinfra.zenml.io। - ZenML सर्वर API कुंजी (यह आपके ZenML सर्वर के लिए API कुंजी है। आप इसे ZenML क्लाउड UI में पा सकते हैं या https://docs.zenml.io/how-to/manage-zenml-server/connecting-to-zenml/connect-with-a-service-account को पढ़ सकते हैं कि एक कैसे बनाएं। ZenML MCP सर्वर के प्रयोजनों के लिए हम एक सेवा खाते का उपयोग करने की सलाह देते हैं।)
आप MCP सर्वर Python फ़ाइल चलाने के तरीके को बदलने के लिए स्वतंत्र हैं, लेकिन uv का उपयोग करना शायद सबसे आसान विकल्प होगा क्योंकि यह आपके लिए पर्यावरण और निर्भरता स्थापना को संभालता है।
Claude Desktop के साथ उपयोग के लिए स्थापना
त्वरित विकल्प: पूर्व-कॉन्फ़िगर स्थापना निर्देशों और Claude Desktop के लिए डीप लिंक प्राप्त करने के लिए अपने ZenML डैशबोर्ड में MCP सेटिंग्स पेज (सेटिंग्स → MCP) का उपयोग करें।
आपके पास Claude Desktop का नवीनतम संस्करण स्थापित होना चाहिए।
आप बस सेटिंग्स मेनू खोल सकते हैं और इस रिपॉजिटरी के रूट से mcp-zenml.mcpb फ़ाइल को मेनू पर खींच सकते हैं और यह आपको स्थापना और सेटअप प्रक्रिया के माध्यम से मार्गदर्शन करेगा। आपको अपना ZenML सर्वर URL और API कुंजी जोड़ने की आवश्यकता होगी।
नोट: MCP बंडल (.mcpb) पुराने डेस्कटॉप एक्सटेंशन (.dxt) प्रारूप को प्रतिस्थापित करते हैं; मौजूदा .dxt फ़ाइलें अभी भी Claude Desktop में काम करती हैं।
वैकल्पिक: ZenML टूल आउटपुट प्रदर्शन में सुधार
ZenML टूल परिणामों के साथ बेहतर अनुभव के लिए, आप Claude को JSON प्रतिक्रियाओं को अधिक पठनीय प्रारूप में प्रदर्शित करने के लिए कॉन्फ़िगर कर सकते हैं। Claude Desktop में, सेटिंग्स → प्रोफ़ाइल पर जाएं, और "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 टूल आउटपुट को मार्कडाउन तालिकाओं के रूप में प्रारूपित करने के लिए प्रोत्साहित करेगा, जिससे जानकारी पढ़ने और समझने में बहुत आसान हो जाएगी।
Cursor के साथ उपयोग के लिए स्थापना
त्वरित विकल्प: आपके ZenML डैशबोर्ड में MCP सेटिंग्स पेज (सेटिंग्स → MCP) आपके क्रेडेंशियल्स के साथ पहले से भरी हुई सटीक
mcp.jsonसामग्री उत्पन्न कर सकता है।
आपके पास Cursor स्थापित होना चाहिए।
Cursor Claude Desktop से थोड़ा अलग काम करता है जिसमें आप कॉन्फ़िग फ़ाइल को प्रति-रिपॉजिटरी आधार पर निर्दिष्ट करते हैं। इसका मतलब है कि यदि आप कई रिपॉजिटरी में ZenML MCP सर्वर का उपयोग करना चाहते हैं, तो आपको उनमें से प्रत्येक में कॉन्फ़िग फ़ाइल निर्दिष्ट करनी होगी।
एकल रिपॉजिटरी के लिए इसे सेट करने के लिए, आपको यह करना होगा:
- अपनी रिपॉजिटरी के रूट में एक
.cursorफ़ोल्डर बनाएं - इसके अंदर, उपरोक्त सामग्री के साथ एक
mcp.jsonफ़ाइल बनाएं - अपनी Cursor सेटिंग्स में जाएं और इसे 'सक्षम' करने के लिए ZenML सर्वर पर क्लिक करें।
हमारे अनुभव में, कभी-कभी यह काम करने पर भी एक लाल त्रुटि संकेतक दिखाता है। आप Cursor चैट विंडो में चैट करके इसे आज़मा सकते हैं। यह आपको बताएगा कि क्या यह ZenML टूल तक पहुंचने में सक्षम है या नहीं।
Docker इमेज
आप सर्वर को Docker कंटेनर के रूप में चला सकते हैं। प्रक्रिया stdio पर संचार करती है, इसलिए यह MCP क्लाइंट कनेक्शन की प्रतीक्षा करेगी। अपने ZenML क्रेडेंशियल्स को पर्यावरण चर के माध्यम से पास करें।
पूर्व-निर्मित इमेज (Docker Hub)
नवीनतम मल्टी-आर्क इमेज खींचें:
docker pull zenmldocker/mcp-zenml:latest
संस्करणित रिलीज़ X.Y.Z के रूप में टैग किए गए हैं:
docker pull zenmldocker/mcp-zenml:2.0.0
अपने ZenML क्रेडेंशियल्स के साथ चलाएं (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
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"
]
}
}
}
स्थानीय रूप से बनाएं
रिपॉजिटरी रूट से:
docker build -t zenmldocker/mcp-zenml:local .
स्थानीय रूप से निर्मित इमेज चलाएं:
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 बंडल (.mcpb)
यह परियोजना MCP बंडल (.mcpb) का उपयोग करती है — जो Anthropic के डेस्कटॉप एक्सटेंशन (DXT) का उत्तराधिकारी है। MCP बंडल एक संपूर्ण MCP सर्वर (निर्भरताओं सहित) को उपयोगकर्ता-अनुकूल कॉन्फ़िगरेशन के साथ एक फ़ाइल में पैकेज करते हैं।
नाम बदलने पर नोट: MCP बंडल पुराने .dxt प्रारूप को प्रतिस्थापित करते हैं। Claude Desktop मौजूदा .dxt फ़ाइलों के साथ पिछड़ा-संगत बना हुआ है, लेकिन हम अब mcp-zenml.mcpb भेजते हैं और आगे जाकर इसका उपयोग करने की सलाह देते हैं।
रिपॉजिटरी रूट में mcp-zenml.mcpb फ़ाइल MCPB 0.4 UV रनटाइम का उपयोग करती है। होस्ट वर्तमान ऑपरेटिंग सिस्टम के लिए पिन की गई Python निर्भरताएं स्थापित करता है, इसलिए वही बंडल macOS, Windows और Linux पर प्लेटफ़ॉर्म-विशिष्ट मूल एक्सटेंशन एम्बेड किए बिना काम करता है। स्थापना को पहली बार UV बंडल किए गए वातावरण को हल करने पर नेटवर्क एक्सेस की आवश्यकता होती है।
बंडल निर्माण प्रतिबद्ध mcpb-uv.lock का पुन: उपयोग करते हैं और इसके Python निर्भरता ग्राफ को ऑफ़लाइन मोड में हल करते हैं। बंडल की निर्भरता सूची pyproject.toml में [project].dependencies से आती है। उस सूची को बदलने के बाद, हर पिन को बनाए रखते हुए ऑनलाइन पुन: हल करने के लिए MCPB_REFRESH_LOCK=1 सेट करें; MCPB_REFRESH_LOCK=upgrade हर पिन को उसके नवीनतम संस्करण में ले जाता है।
जब आप .mcpb फ़ाइल को Claude Desktop की सेटिंग्स में खींचकर छोड़ते हैं, तो यह स्वचालित रूप से निम्नलिखित संभालता है:
- रनटाइम निर्भरताओं की स्थापना
- सुरक्षित कॉन्फ़िगरेशन प्रबंधन
- क्रॉस-प्लेटफ़ॉर्म संगतता
- उपयोगकर्ता-अनुकूल सेटअप प्रक्रिया
अधिक जानकारी के लिए, Anthropic की डेस्कटॉप एक्सटेंशन (DXT) की घोषणा और संबंधित MCP बंडल पैकेजिंग मार्गदर्शन उनके दस्तावेज़ में देखें: https://www.anthropic.com/engineering/desktop-extensions
Anthropic MCP रजिस्ट्री पर प्रकाशित
यह MCP सर्वर आधिकारिक Anthropic MCP रजिस्ट्री पर प्रकाशित है और संगत होस्ट द्वारा खोजा जा सकता है। प्रत्येक टैग किए गए रिलीज़ पर, हमारा CI रजिस्ट्री की mcp-publisher CLI का उपयोग करके GitHub OIDC के माध्यम से रजिस्ट्री प्रविष्टि को अपडेट करता है, ताकि आप ZenML MCP सर्वर को सीधे वहाँ स्थापित या खोज सकें जहाँ रजिस्ट्री समर्थित है (जैसे, Claude Desktop की एक्सटेंशन सूची)।
- हमेशा अद्यतित: रजिस्ट्री प्रविष्टि टैग किए गए कमिट के
manifest.jsonऔरserver.jsonसे हर रिलीज़ के साथ ताज़ा की जाती है। - वैकल्पिक स्थापना पथ: आप अभी भी पैकेज किए गए
.mcpbबंडल के माध्यम से स्थानीय रूप से स्थापित कर सकते हैं (ऊपर देखें) या Docker इमेज चला सकते हैं।
रजिस्ट्री के बारे में यहाँ और जानें:
- Anthropic MCP रजिस्ट्री (सामुदायिक रिपॉजिटरी): https://github.com/modelcontextprotocol/registry