हैंडलर
उपयोग
Actions
| Action | Description |
|---|---|
accept | एकत्रित कंटेंट को सर्वर पर सबमिट करें |
decline | वर्कफ़्लो को रद्द किए बिना रिक्वेस्ट को अस्वीकार करें |
cancel | ऑपरेशन को पूरी तरह समाप्त कर दें |
tool निष्पादन के दौरान उपयोगकर्ता इनपुट प्राप्त करें
from dedalus_mcp.client import ClientCapabilitiesConfig, open_connection
from dedalus_mcp.types import (
ElicitRequestParams,
ElicitResult,
ErrorData,
)
async def elicitation_handler(
context: object,
params: ElicitRequestParams,
) -> ElicitResult | ErrorData:
"""सर्वर से elicitation अनुरोधों को हैंडल करें।"""
print(f"\nServer requests input: {params.message}")
# स्कीमा में प्रत्येक फ़ील्ड के लिए मान एकत्र करें
content = {}
schema = params.requestedSchema
properties = schema.get("properties", {})
required = schema.get("required", [])
for field, field_schema in properties.items():
field_type = field_schema.get("type", "string")
is_required = field in required
value = input(f"{field} ({field_type}): ")
if not value and is_required:
return ElicitResult(action="decline")
# टाइप coercion
if field_type == "boolean":
content[field] = value.lower() in ("true", "yes", "1", "y")
elif field_type == "integer":
content[field] = int(value)
elif field_type == "number":
content[field] = float(value)
else:
content[field] = value
return ElicitResult(action="accept", content=content)
capabilities = ClientCapabilitiesConfig(elicitation=elicitation_handler)
async with open_connection(
url="http://127.0.0.1:8000/mcp",
transport="streamable-http",
capabilities=capabilities,
) as client:
# सर्वर अब tool निष्पादन के दौरान उपयोगकर्ता इनपुट का अनुरोध कर सकता है
result = await client.call_tool("deploy", {"env": "production"})
| Action | Description |
|---|---|
accept | एकत्रित कंटेंट को सर्वर पर सबमिट करें |
decline | वर्कफ़्लो को रद्द किए बिना रिक्वेस्ट को अस्वीकार करें |
cancel | ऑपरेशन को पूरी तरह समाप्त कर दें |
# Accept with content
return ElicitResult(action="accept", content={"confirmed": True})
# अस्वीकार करें (उपयोगकर्ता ने इनकार किया)
return ElicitResult(action="decline")
# Cancel (abort operation)
return ElicitResult(action="cancel")
async def elicitation_handler(context, params):
"""परीक्षण के लिए डिफ़ॉल्ट मानों के साथ स्वतः-स्वीकृति।"""
content = {}
properties = params.requestedSchema.get("properties", {})
for field, schema in properties.items():
field_type = schema.get("type", "string")
if field_type == "boolean":
content[field] = True
elif field_type in ("integer", "number"):
content[field] = 0
else:
content[field] = "auto-filled"
return ElicitResult(action="accept", content=content)
वाज़ दिस पेज हेल्पफुल