from dedalus_mcp import get_context, tool
@tool(description="Process large dataset")
async def process_dataset(dataset_id: str) -> dict:
ctx = get_context()
await ctx.report_progress(0, total=100, message="Loading dataset")
data = load_dataset(dataset_id) # your code
await ctx.report_progress(30, total=100, message="Transforming data")
total_items = len(data)
if total_items:
for i, item in enumerate(data, start=1):
# map item progress into the 30..70 range
progress = 30 + int((i / total_items) * 40)
await ctx.report_progress(progress, total=100)
transform(item) # your code
await ctx.report_progress(70, total=100, message="Saving results")
save_results(data) # your code
await ctx.report_progress(100, total=100, message="Done")
return {"processed": len(data)}