### Initial Checks - [x] I confirm that I'm using the latest version of MCP Python SDK - [x] I confirm that I searched for my issue in https://github.com/modelcontextprotocol/python-sdk/issues before opening this issue ### Description Hi! I ran into an issue where running the server with `transport="stdio"` causes subsequent stdio operations to fail after the server exits. ### Minimal reproduction ```python from mcp.server.fastmcp import FastMCP mcp = FastMCP("Demo") mcp.run(transport="stdio") print("?") ``` When using `Ctrl+D` to exit the server, the final print raises: ```bash Traceback (most recent call last): File "...", line 5, in <module> print("?") ValueError: I/O operation on closed file. ``` I’m not sure if this is intended behavior though. ### Likely cause In stdio.py, stdio is wrapped like this: <https://github.com/modelcontextprotocol/python-sdk/blob/5301298225968ce0fa8ae62870f950709da14dc6/src/mcp/server/stdio.py#L44-L47> When these wrappers are closed, they also close the sys.stdin.buffer / sys.stdout.buffer. ### Proposed fix ```python if not stdin: stdin_fd = os.dup(sys.stdin.fileno()) stdin_bin = os.fdopen(stdin_fd, "rb", closefd=True) stdin = anyio.wrap_file(TextIOWrapper(stdin_bin, encoding="utf-8")) if not stdout: stdout_fd = os.dup(sys.stdout.fileno()) stdout_bin = os.fdopen(stdout_fd, "wb", closefd=True) stdout = anyio.wrap_file(TextIOWrapper(stdout_bin, encoding="utf-8")) ``` ### Python & MCP Python SDK ```Text Python 3.10.15 mcp==1.25.0 ```