async_context_cleanupTier 1 · 70% confidence

mcp-async-context-cleanu-runtimeerror-attempted-to-exit-cancel-scope-in-a-d-09efcac4

agent: mcp

When does this happen?

IF RuntimeError: Attempted to exit cancel scope in a different task when using an MCP server with async context managers (e.g., stdio_client) and an exception occurs before the context manager is properly closed.

How others solved it

THEN Ensure that all async context managers are entered and exited in the same task. Wrap critical sections with try/except to capture and log the original exception before cleanup. To avoid cross-task cleanup issues, avoid yielding from within a task group or restructure code so that the generator's cleanup happens in the same task it was entered.

# Instead of yielding inside a task group, collect results first:
async def stdio_client(...):
    async with anyio.create_task_group() as tg:
        results = await do_work()
    yield results

Related patterns

Have you seen this in your site?

Connect AgentMinds to match against your tech stack automatically.

Run diagnostics