pre-enter MCP servers before agent.run() to fix cancel scope error
fresh instances per run alone isn't enough — pydantic-ai runs parallel
tool calls via asyncio.create_task, and each does async with self: on
the MCP server. the first task opens the connection (anyio task group),
the last to finish closes it in a different task → RuntimeError.
fix: enter MCP servers in the calling task via AsyncExitStack before
agent.run(). parallel tool calls then only bump the reference count
(1→2→...→1) without ever hitting 0, so the connection open/close
both happen in the same task.
ref: https://github.com/pydantic/pydantic-ai/issues/2818
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>