fix(tools): send mcp-server startup diagnostics to stderr

idf.py mcp-server printed startup, shutdown, and error messages on
stdout. On the stdio MCP transport, stdout is the JSON-RPC channel, so
those non-JSON lines can confuse or break strict clients. Route them to
stderr like the other diagnostics in mcp_ext.py.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Marek Fiala
2026-09-01 08:10:23 +02:00
co-authored by Cursor
parent a6c3f023a2
commit cf09ccd766
+5 -4
View File
@@ -437,15 +437,16 @@ def action_extensions(base_actions: dict, project_path: str) -> dict:
except Exception as e:
return f'Error getting devices: {str(e)}'
# Start the MCP server
print('MCP Server running on stdio...')
# Start the MCP server. Diagnostics should go to stderr — stdout is reserved
# for the JSON-RPC transport and any non-JSON bytes can confuse MCP clients.
print('MCP Server running on stdio...', file=sys.stderr)
try:
mcp.run()
except KeyboardInterrupt:
print('\nMCP Server stopped.')
print('\nMCP Server stopped.', file=sys.stderr)
except Exception as e:
print(f'MCP Server error: {e}')
print(f'MCP Server error: {e}', file=sys.stderr)
# Return the action extension
return {