from anthropic import AsyncAnthropic
from dedalus_mcp import types
anthropic = AsyncAnthropic()
async def sampling_handler(
_ctx: object,
params: types.CreateMessageRequestParams,
) -> types.CreateMessageResult | types.ErrorData:
try:
messages = [{"role": m.role, "content": m.content.text} for m in params.messages]
resp = await anthropic.messages.create(
model="claude-sonnet-4-20250514",
messages=messages,
max_tokens=params.maxTokens,
)
return types.CreateMessageResult(
model=resp.model,
role="assistant",
content=types.TextContent(type="text", text=resp.content[0].text),
stopReason="end_turn",
)
except Exception as e:
return types.ErrorData(code=types.INTERNAL_ERROR, message=str(e))