मुख्य सामग्री पर जाएं
Context ऑब्जेक्ट आपको किसी tool/resource/prompt के चलते समय रिक्वेस्ट-स्कोप्ड यूटिलिटीज़ तक पहुँच देता है—मुख्य रूप से logging, progress, और request metadata सक्रिय कॉन्टेक्स्ट प्राप्त करने के लिए get_context() का उपयोग करें। नोट: get_context() केवल सक्रिय मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) रिक्वेस्ट हैंडलर के अंदर ही काम करता है। इसे कहीं और कॉल करने पर LookupError उठाई जाती है।

कॉन्टेक्स्ट प्राप्त करें

from dedalus_mcp import get_context, tool

@tool(description="लॉगिंग के साथ डेटा को प्रोसेस करें")
async def process(data: str) -> str:
    ctx = get_context()
    await ctx.info("Processing", data={"bytes": len(data)})
    return "done"

ऑटो-इंजेक्शन (टूल्स + निर्भरताएँ)

टूल्स (और dependency callables) में, Context के रूप में annotate किए गए parameters को framework द्वारा ऑटो-इंजेक्ट किया जा सकता है—get_context() को मैन्युअली कॉल करने की ज़रूरत नहीं होती:
from dedalus_mcp import Context, tool

@tool(description="process() के समान, लेकिन Context को इंजेक्ट किया जाता है")
async def process_injected(data: str, ctx: Context) -> str:
    await ctx.info("Processing", data={"bytes": len(data)})
    return "done"

उपलब्ध फ़ीचर्स

फ़ीचरAPI (एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस)यह क्या करता है
लॉगिंगctx.debug(), ctx.info(), ctx.warning(), ctx.error(), ctx.log()लॉग संदेश Client को भेजें
रिक्वेस्ट मेटाडेटाctx.request_id, ctx.session_id, ctx.progress_tokenवर्तमान रिक्वेस्ट/सेशन और प्रोग्रेस टोकन की पहचान करें
सर्वर/रनटाइम एक्सेसctx.server, ctx.runtimeरनटाइम वायरिंग तक पहुँच प्राप्त करें (यदि मौजूद हो)
Auth कॉन्टेक्स्टctx.auth_contextAuth कॉन्टेक्स्ट तक पहुँच प्राप्त करें (यदि authorization सक्षम हो)
प्रोग्रेसctx.report_progress(...), ctx.progress(...)प्रोग्रेस नोटिफ़िकेशन भेजें (यदि Client ने प्रोग्रेस टोकन प्रदान किया हो)
Dispatch (वैकल्पिक)ctx.dispatch(...)कॉन्फ़िगर किए गए dispatch backend के माध्यम से authenticated HTTP रिक्वेस्ट भेजें (यदि कॉन्फ़िगर किया गया हो)
Connection resolution (वैकल्पिक)ctx.resolve_client(...)कॉन्फ़िगर किए गए resolver के माध्यम से connection हैंडल को Client में resolve करें (यदि कॉन्फ़िगर किया गया हो)

रिक्वेस्ट मेटाडेटा

from dedalus_mcp import get_context, tool

@tool(description="अनुरोध मेटाडेटा दिखाएं")
async def my_tool() -> dict:
    ctx = get_context()
    return {
        "request_id": ctx.request_id,
        "session_id": ctx.session_id,          # None हो सकता है (उदा. stdio)
        "progress_token": ctx.progress_token,  # यदि Client ने progress का अनुरोध नहीं किया तो None हो सकता है
    }

प्राधिकरण संदर्भ

यदि प्राधिकरण सक्रिय है, तो ctx.auth_context सेट हो सकता है; अन्यथा यह None होता है:
from dedalus_mcp import get_context, tool

@tool(description="प्रमाणीकरण संदर्भ की उपस्थिति दिखाएं")
async def whoami() -> dict:
    ctx = get_context()
    if ctx.auth_context is None:
        return {"user": "anonymous"}
    return {"auth_context": "present"}

प्रगति का उदाहरण

import anyio
from dedalus_mcp import get_context, tool

@tool(description="प्रगति रिपोर्टिंग के साथ फ़ाइलों को प्रोसेस करें")
async def process_files(paths: list[str]) -> dict:
    ctx = get_context()
    processed = 0
    async with ctx.progress(total=len(paths)) as tracker:
        for _path in paths:
            await anyio.sleep(0.01)
            processed += 1
            await tracker.advance(1)

    return {"processed": processed}