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-08-19 09:10:01 +02:00
co-authored by Cursor
parent be74313d0b
commit 7613daadc6
+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 {