- कोई Client
prompts/listके ज़रिए prompt खोजता है (हर prompt मेंargumentsऔर मेटाडेटा शामिल हो सकते हैं)। - कोई Client string-valued
argumentsके साथprompts/getके ज़रिए किसी prompt को रेंडर करता है। - सर्वर आपका prompt renderer निष्पादित करता है।
- सर्वर MCP स्पेसिफिकेशन के अनुसार
messages(और वैकल्पिकdescription) वालाGetPromptResultवापस करता है।
@prompt(...) के साथ prompt परिभाषित करें और उन्हें server.collect(...) (या with server.binding(): ... के अंदर) के ज़रिए रजिस्टर करें।
डेकोरेटर सिग्नेचर
prompt(...):prompt(name: str, *, description=None, title=None, arguments=None, icons=None, meta=None)
fn(arguments: dict[str, str] | None)→messages/ mapping /GetPromptResult/Noneलौटाता है
बेसिक prompt
arguments=[...] यह परिभाषित करता है कि Client को prompts/get में कौन‑से arguments पास करने चाहिए।
Arguments (आवश्यक बनाम वैकल्पिक)
arguments=[...] में required=True के रूप में चिह्नित करते हैं।
args मौजूद नहीं हैं, तो Dedalus INVALID_PARAMS के साथ एक मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) त्रुटि उत्पन्न करता है।
जटिल आर्ग्युमेंट मान (लिस्ट/डिक्ट)
रिटर्न फ़ॉर्मैट्स
- messages की एक list/iterable, जहाँ हर item इनमें से एक हो सकता है:
(role, content)tuple{"role": "...", "content": ...}जैसा mappingPromptMessageinstance
- एक mapping, जिसके ज़रिए explicit control मिलता है:
- required:
"messages" - optional:
"description"
- required:
GetPromptResultNone(ज़ीरो संदेश पैदा करता है)
str रिटर्न करना (Dedalus TypeError raise करता है ताकि आप हमेशा role + content दोनों ही दें)।
स्पष्ट नियंत्रण (मैपिंग)
संदेश सामग्री
content के लिए, आप उपयोग कर सकते हैं:
- एक
str(जो अपने‑आप टेक्स्ट सामग्री में बदल दिया जाएगा) - एक पूरा content-block मैपिंग (जैसे
{"type": "text", "text": "..."}) dedalus_mcp.typesसे एक content-block इंस्टेंस (जैसेTextContent,ImageContent, आदि)
ऐसिंक prompts
async def को प्राथमिकता दें।
डेकोरेटर के विकल्प
कॉन्टेक्स्ट एक्सेस
get_context() के ज़रिए कॉन्टेक्स्ट एक्सेस कर सकती है (logging, progress आदि के लिए)।
नोट: get_context() केवल एक सक्रिय MCP request handler के अंदर ही काम करता है; इसे request के बाहर call करने पर LookupError थ्रो होता है।
परीक्षण
prompts/get जैसा):