संसाधन सर्वर द्वारा उपलब्ध कराए गए केवल‑पढ़ने योग्य डेटा होते हैं। कोई संसाधन एक फ़ाइल, उत्पन्न की गई रिपोर्ट, या कोई अन्य सामग्री हो सकती है जिसे सर्वर बिना किसी साइड‑इफ़ेक्ट के प्रदान कर सकता है।
## संसाधनों की सूची
from dedalus_mcp.client import open_connection
async with open_connection("http://127.0.0.1:8000/mcp") as client:
resources = await client.list_resources()
for r in resources.resources:
print(f"{r.uri}: {r.name}")
## संसाधन स्कीमा
प्रत्येक संसाधन में निम्न शामिल होते हैं:
| Field | Type | Description |
|---|
uri | str | संसाधन पहचानकर्ता (उदाहरण के लिए resource://config/app) |
name | str | मानव-पठनीय नाम |
description | str | None | संसाधन में निहित सामग्री का विवरण |
mimeType | str | None | सामग्री प्रकार (उदाहरण के लिए application/json) |
for r in resources.resources:
print(f"URI: {r.uri}")
print(f"Name: {r.name}")
print(f"Type: {r.mimeType}")
## संसाधन पढ़ें
किसी विशिष्ट संसाधन को उसके URI से पढ़ें:
result = await client.read_resource("resource://config/app")
result एक ReadResourceResult है जिसमें contents नामक सूची होती है। इसमें TextResourceContents (टेक्स्ट) या BlobResourceContents (base64 ब्लॉब) शामिल हो सकते हैं।
## प्रतिक्रिया संरचना (टेक्स्ट बनाम बाइनरी)
import base64
from dedalus_mcp import types
result = await client.read_resource("resource://data/report")
if not result.contents:
print("No contents (resource missing or empty)")
else:
item = result.contents[0]
if isinstance(item, types.TextResourceContents):
print(item.text)
elif isinstance(item, types.BlobResourceContents):
data = base64.b64decode(item.blob) # blob base64 टेक्स्ट है
with open("output.bin", "wb") as f:
f.write(data)
## उदाहरण: कॉन्फ़िगरेशन रीडर
import json
from dedalus_mcp.client import open_connection
from dedalus_mcp import types
async with open_connection("http://127.0.0.1:8000/mcp") as client:
resources = await client.list_resources()
print("Available resources:")
for r in resources.resources:
print(f" - {r.uri} ({r.mimeType})")
result = await client.read_resource("resource://config/app")
if not result.contents or not isinstance(result.contents[0], types.TextResourceContents):
raise RuntimeError("Expected text config resource")
data = json.loads(result.contents[0].text)
print(f"App config: {data}")
## Resource templates
Resource templates बस वे “पैटर्न” होते हैं जिन्हें कोई server प्रकाशित कर सकता है (जैसे resource://users/) यह दिखाने के लिए कि किस प्रकार के resource URLs उपलब्ध हैं। ये अपने‑आप resources नहीं बनाते—कुछ पढ़ने के लिए, आपको अब भी read_resource(…) को किसी वास्तविक URL (जैसे resource://users/123) के साथ कॉल करना होता है, और यह तभी काम करता है जब server वास्तव में ठीक उसी URI को संभाल रहा हो।
## Context manager
फिर से, open_connection(...) एक async context manager है। इसका मतलब है कि आपको client.close() को await करके कॉल करना याद रखने की ज़रूरत नहीं रहती। जैसे ही async with ब्लॉक से बाहर निकलते हैं, यह आपके लिए अपने आप भीतर का कनेक्शन बंद कर देता है।
from dedalus_mcp.client import open_connection
async with open_connection("http://127.0.0.1:8000/mcp") as client:
resources = await client.list_resources()
result = await client.read_resource("resource://docs/readme")