From 25b16afc93d92ed0c79ac12dbee70b1e403d63a3 Mon Sep 17 00:00:00 2001 From: David Ebbo Date: Sat, 5 Apr 2025 17:44:24 +0200 Subject: [PATCH] Returns execute_code stdout --- addon.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/addon.py b/addon.py index 54fb8f3..0238954 100644 --- a/addon.py +++ b/addon.py @@ -12,6 +12,8 @@ import traceback import os import shutil from bpy.props import StringProperty, IntProperty, BoolProperty, EnumProperty +import io +from contextlib import redirect_stdout bl_info = { "name": "Blender MCP", @@ -334,7 +336,14 @@ class BlenderMCPServer: try: # Create a local namespace for execution namespace = {"bpy": bpy} - exec(code, namespace) + + # Capture stdout during execution, and return it as result + capture_buffer = io.StringIO() + with redirect_stdout(capture_buffer): + exec(code, namespace) + + captured_output = capture_buffer.getvalue() + return {"executed": True, "result": captured_output} return {"executed": True} except Exception as e: raise Exception(f"Code execution error: {str(e)}")