- कोई Client
resources/listके ज़रिए resources खोजता है (हर resource मेंuri, वैकल्पिकname, वैकल्पिकmimeTypeआदि शामिल होते हैं)। - कोई Client
resources/readके ज़रिए किसी resource को उसकेuriके साथ पढ़ता है। - सर्वर आपका resource handler चलाता है।
- सर्वर मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) स्पेसिफिकेशन के अनुसार
contentsके साथ एकReadResourceResultलौटाता है।
@resource(...) से परिभाषित करें और उन्हें server.collect(...) के साथ (या with server.binding(): ... के अंदर) रजिस्टर करें।
डेकोरेटर सिग्नेचर
resource(...):resource(uri: str, *, name=None, description=None, mime_type=None)
fn()→str(टेक्स्ट) याbytes(बाइनरी) लौटाता है। (async defभी समर्थित है।)
मूलभूत संसाधन
collect() उसे रजिस्टर करता है। Clients resources/list से resources की सूची प्राप्त करते हैं और resources/read से उन्हें पढ़ते हैं।
टेक्स्ट बनाम बाइनरी
str रिटर्न करें:
bytes रिटर्न करें (Dedalus इसे MCP प्रतिक्रिया में base64 के रूप में एन्कोड करता है):
असिंक्रोनस संसाधन
async def को प्राथमिकता दें। (टूल्स की तरह, sync handlers इनलाइन ही चलते हैं।)
MIME टाइप्स
text/plain(strलौटाते समय और यदि कोईmime_typeप्रदान नहीं किया गया हो, तो डिफ़ॉल्ट)application/octet-stream(bytesलौटाते समय और यदि कोईmime_typeप्रदान नहीं किया गया हो, तो डिफ़ॉल्ट)
Subscriptions
resources/subscribe के ज़रिए resources में होने वाले परिवर्तनों को subscribe कर सकते हैं और resources/unsubscribe के ज़रिए unsubscribe कर सकते हैं।
जब आपका underlying डेटा बदलता है, तो subscribers को सूचित करें:
notifications/resources/updated इवेंट प्राप्त होता है।
डेकोरेटर विकल्प
त्रुटि प्रबंधन
mimeType="text/plain"text="Resource error: <exception message>"
resources/read एक खाली contents सूची लौटाता है।
परीक्षण
resources/read जैसा ही):
Resource templates
@resource_template(...) का उपयोग करके resources/templates/list के माध्यम से URI patterns को प्रकाशित करें (Client द्वारा discovery और completions के लिए)। Dedalus मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) इस समय केवल listing के लिए templates रजिस्टर करता है, लेकिन resources/read को अपने‑आप किसी template function पर route नहीं करता — आपको अभी भी @resource(...) के साथ विशिष्ट resource URIs रजिस्टर करने की ज़रूरत होती है।