diff --git a/.windsurfrules b/.windsurfrules
index 3fcdb10a..6457e212 100644
--- a/.windsurfrules
+++ b/.windsurfrules
@@ -1,12 +1,64 @@
-This project is split in 2 parts:
-- The C# Unity Editor package in the Editor/ folder
-- The Node.js server in the Server/ folder.
+## 1. Project Structure
 
-Use WebSockets to communicate between the Editor and the Node.js server.
-For more documentation for the WebSocket library being used in Unity see https://github.com/sta/websocket-sharp/tree/master/websocket-sharp/Server
+- The project consists of two main parts:
+  - Editor/: A C# Unity Editor package that exposes Unity Editor functionality via a WebSocket bridge.
+  - Server/: A Node.js server implementing the Model Context Protocol (MCP), using the official TypeScript SDK.
 
-Minimum supported versions:
-- Unity 2022.3
-- Node.js 18.0.0
+## 2. Communication & Protocol
 
-The MCP Node.js server implements the typescript SDK from https://github.com/modelcontextprotocol/typescript-sdk
\ No newline at end of file
+- Communication between the Unity Editor and the Node.js MCP server is handled via WebSockets.
+- The Unity side uses the `websocket-sharp` library: https://github.com/sta/websocket-sharp/tree/master/websocket-sharp/Server
+- The Node.js server uses the `@modelcontextprotocol/sdk` for protocol implementation and exposes tools/resources to LLMs and AI clients.
+
+## 3. Minimum Supported Versions
+
+- Unity: 2022.3 or newer
+- Node.js: 18.0.0 or newer
+
+## 4. Key Components
+
+### Unity Editor Package (Editor/)
+
+- **McpUnityServer**: Singleton entry point for the Unity-side server. Registers tools/resources, manages WebSocket connections, and handles requests from Node.js.
+- **McpUnitySocketHandler**: Handles WebSocket messages/events, dispatches tool/resource calls, and manages client connections.
+- **Tools**: Modular C# classes implementing various Unity actions (e.g., running tests, modifying the scene, package management).
+- **Resources**: Read-only endpoints for querying Unity state (e.g., assets, hierarchy, logs).
+- **Services**: Dependency-injected logic for test running, logging, etc., improving testability and maintainability.
+- **Utils**: Utility classes for configuration, logging, and workspace integration.
+
+### Node.js Server (Server/)
+
+- **index.ts**: Entry point. Sets up the MCP server, registers all tools/resources, and initializes the Unity bridge.
+- **unity/mcpUnity.js**: Handles low-level communication with the Unity Editor via WebSocket.
+- **tools/**: Implements MCP tool endpoints (e.g., run tests, add asset, select object).
+- **resources/**: Implements MCP resource endpoints (e.g., get hierarchy, get logs).
+- **utils/**: Logging and helper utilities.
+- **package.json**: Declares dependencies, including `@modelcontextprotocol/sdk`, `ws`, `express`, etc.
+
+## 5. Integration & Usage
+
+- The Unity Editor package is designed to be used as a package (via UPM or direct import).
+- The Node.js server can be started independently and connects to Unity via WebSocket (port configurable, default 8090).
+- The system is designed for use with LLM-based IDEs (e.g., Windsurf, Cursor, Claude Desktop) to enable AI-powered Unity Editor automation and queries.
+
+## 6. Configuration
+
+- Configuration utilities are provided for generating and injecting MCP config into various IDEs (Cursor, Claude Desktop, Windsurf).
+- Unity-side settings are persisted in `ProjectSettings/McpUnitySettings.json`.
+
+## 7. Extensibility
+
+- Tools and resources can be extended by adding new C# classes (Unity) or TypeScript modules (Node.js).
+- Dependency injection is used on the Unity side for improved modularity and testability.
+
+## 8. References
+
+- MCP Protocol: https://modelcontextprotocol.io
+- TypeScript SDK: https://github.com/modelcontextprotocol/typescript-sdk
+
+## 9. Conventions
+
+- Use WebSockets for all cross-process communication.
+- Follow the MCP protocol for all tool/resource definitions.
+- All new tools/resources should be registered in both Unity and Node.js server entry points.
+- Follow Conventional Commits for all commit messages.
\ No newline at end of file
diff --git a/Editor/Tools/RunTestsTool.cs b/Editor/Tools/RunTestsTool.cs
index d186c19b..08757ef5 100644
--- a/Editor/Tools/RunTestsTool.cs
+++ b/Editor/Tools/RunTestsTool.cs
@@ -114,6 +114,12 @@ public void TestStarted(ITestAdaptor test)
         // Called when a test finishes
         public void TestFinished(ITestResultAdaptor result)
         {
+            // Skip test suites (tests with children)
+            if (result.Test.HasChildren)
+            {
+                return;
+            }
+            
             _testResults.Add(new TestResult
             {
                 Name = result.Test.Name,
@@ -136,8 +142,11 @@ public void RunFinished(ITestResultAdaptor result)
             // Create test results summary
             var summary = new JObject
             {
-                ["testCount"] = _testResults.Count,
-                ["passCount"] = _testResults.FindAll(r => r.Passed).Count,
+                ["testCount"] = result.PassCount + result.FailCount + result.SkipCount + result.InconclusiveCount,
+                ["passCount"] = result.PassCount,
+                ["failCount"] = result.FailCount,
+                ["skipCount"] = result.SkipCount,
+                ["inconclusiveCount"] = result.InconclusiveCount,
                 ["duration"] = result.Duration,
                 ["success"] = result.ResultState == "Passed",
                 ["status"] = "completed",
@@ -166,7 +175,13 @@ public void RunFinished(ITestResultAdaptor result)
                 {
                     ["success"] = true,
                     ["type"] = "text",
-                    ["message"] = summary["message"].Value<string>()
+                    ["message"] = summary["message"].Value<string>(),
+                    ["testCount"] = summary["testCount"],
+                    ["passCount"] = summary["passCount"],
+                    ["failCount"] = summary["failCount"],
+                    ["skipCount"] = summary["skipCount"],
+                    ["inconclusiveCount"] = summary["inconclusiveCount"],
+                    ["results"] = summary["results"]
                 });
             }
             catch (Exception ex)
diff --git a/Editor/UnityBridge/McpUnityEditorWindow.cs b/Editor/UnityBridge/McpUnityEditorWindow.cs
index c9329da7..86585300 100644
--- a/Editor/UnityBridge/McpUnityEditorWindow.cs
+++ b/Editor/UnityBridge/McpUnityEditorWindow.cs
@@ -178,7 +178,9 @@ private void DrawServerTab()
             }
             else
             {
-                EditorGUILayout.LabelField("No clients connected", EditorStyles.centeredGreyMiniLabel);
+                GUIStyle wrapStyle = new GUIStyle(EditorStyles.centeredGreyMiniLabel);
+                wrapStyle.wordWrap = true;
+                GUILayout.Label("No clients connected\nInvoke a tool from the MCP Client to connect", wrapStyle, GUILayout.ExpandWidth(true));
             }
                 
             EditorGUILayout.EndVertical();
diff --git a/Editor/UnityBridge/McpUnityServer.cs b/Editor/UnityBridge/McpUnityServer.cs
index 4ca4a941..06c4c7cb 100644
--- a/Editor/UnityBridge/McpUnityServer.cs
+++ b/Editor/UnityBridge/McpUnityServer.cs
@@ -1,16 +1,12 @@
 using System;
 using System.Collections.Generic;
 using System.Threading;
-using System.Threading.Tasks;
 using UnityEngine;
 using UnityEditor;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
 using McpUnity.Tools;
 using McpUnity.Resources;
 using McpUnity.Services;
 using McpUnity.Utils;
-using WebSocketSharp;
 using WebSocketSharp.Server;
 
 namespace McpUnity.Unity
@@ -31,8 +27,7 @@ public class McpUnityServer
         private CancellationTokenSource _cts;
         private TestRunnerService _testRunnerService;
         private ConsoleLogsService _consoleLogsService;
-        private Dictionary<string, string> _clients = new Dictionary<string, string>();
-        
+
         /// <summary>
         /// Static constructor that gets called when Unity loads due to InitializeOnLoad attribute
         /// </summary>
@@ -40,7 +35,16 @@ static McpUnityServer()
         {
             // Initialize the singleton instance when Unity loads
             // This ensures the bridge is available as soon as Unity starts
-            EditorApplication.quitting += () => Instance.StopServer();
+            EditorApplication.quitting += Instance.StopServer;
+
+            // Auto-restart server after domain reload
+            EditorApplication.delayCall += () =>
+            {
+                if (McpUnitySettings.Instance.AutoStartServer)
+                {
+                    Instance.StartServer();
+                }
+            };
         }
         
         /// <summary>
@@ -66,8 +70,8 @@ public static McpUnityServer Instance
         /// <summary>
         /// Dictionary of connected clients with this server
         /// </summary>
-        public Dictionary<string, string> Clients => _clients;
-        
+        public Dictionary<string, string> Clients { get; } = new Dictionary<string, string>();
+
         /// <summary>
         /// Private constructor to enforce singleton pattern
         /// </summary>
@@ -76,13 +80,6 @@ private McpUnityServer()
             InitializeServices();
             RegisterResources();
             RegisterTools();
-            
-            McpLogger.LogInfo($"Created WebSocket server on port {McpUnitySettings.Instance.Port}");
-
-            if (McpUnitySettings.Instance.AutoStartServer || Application.internetReachability != NetworkReachability.NotReachable)
-            {
-                StartServer();
-            }
         }
         
         /// <summary>
@@ -102,7 +99,7 @@ public void StartServer()
                 // Start the server
                 _webSocketServer.Start();
                 
-                McpLogger.LogInfo("WebSocket server started");
+                McpLogger.LogInfo($"WebSocket server started on port {McpUnitySettings.Instance.Port}");
             }
             catch (Exception ex)
             {
diff --git a/README-ja.md b/README-ja.md
index b224a6b5..826bea2c 100644
--- a/README-ja.md
+++ b/README-ja.md
@@ -244,6 +244,17 @@ MCP Unityサーバーをデバッグするには、以下の方法を使用で
 - メニュー項目が確認を必要とするかどうかを確認
 - メニュー項目が現在のコンテキストで利用可能であることを確認
 
+#### Play Modeテスト実行時に `Connection failed` エラー
+
+`run_tests` ツールの実行が次のエラーを返します：
+```
+Error:
+Connection failed: Unknown error
+```
+
+このエラーは、Play Modeに切り替わる際にドメインがリロードされるため、ブリッジ接続が失われることで発生します。  
+回避方法は、**Edit > Project Settings > Editor > "Enter Play Mode Settings"** で **Reload Domain** をオフにすることです。
+
 ## 貢献
 
 貢献は大歓迎です！詳細については[貢献ガイド](CONTRIBUTING.md)をお読みください。
diff --git a/README.md b/README.md
index da96f1d4..719f0fec 100644
--- a/README.md
+++ b/README.md
@@ -327,6 +327,19 @@ Don't forget to shutdown the server with `Ctrl + C` before closing the terminal
 - Verify that the menu item is available in the current context
 </details>
 
+<details>
+<summary><span style="font-size: 1.1em; font-weight: bold;">Connection failed when running Play Mode tests</span></summary>
+
+The `run_tests` tool returns the following response:
+```
+Error:
+Connection failed: Unknown error
+```
+
+This error occurs because the bridge connection is lost when the domain reloads upon switching to Play Mode.  
+The workaround is to turn off **Reload Domain** in **Edit > Project Settings > Editor > "Enter Play Mode Settings"**.
+</details>
+
 ## Support & Feedback
 
 If you have any questions or need support, please open an [issue](https://github.com/CoderGamester/mcp-unity/issues) on this repository.
diff --git a/README_zh-CN.md b/README_zh-CN.md
index d99e22b0..a277a1fd 100644
--- a/README_zh-CN.md
+++ b/README_zh-CN.md
@@ -246,6 +246,17 @@ MCP Unity 通过将 Unity `Library/PackedCache` 文件夹添加到您的工作
 - 检查菜单项是否需要确认
 - 验证菜单项在当前上下文中是否可用
 
+#### 运行播放模式测试时连接失败
+
+`run_tests` 工具返回以下响应：
+```
+Error:
+Connection failed: Unknown error
+```
+
+发生此错误的原因是在切换到播放模式触发域重新加载时，桥接连接会丢失。  
+解决方法是在 **Edit > Project Settings > Editor > "Enter Play Mode Settings"** 中关闭 **Reload Domain**。
+
 ## 贡献
 
 欢迎贡献！请阅读我们的[贡献指南](CONTRIBUTING.md)以获取更多信息。
diff --git a/Server/build/tools/runTestsTool.js b/Server/build/tools/runTestsTool.js
index 5adcbd21..cd2c00d0 100644
--- a/Server/build/tools/runTestsTool.js
+++ b/Server/build/tools/runTestsTool.js
@@ -57,6 +57,9 @@ async function toolHandler(mcpUnity, params) {
     const testResults = response.results || [];
     const testCount = response.testCount || 0;
     const passCount = response.passCount || 0;
+    const failCount = response.failCount || 0;
+    const inconclusiveCount = response.inconclusiveCount || 0;
+    const skipCount = response.skipCount || 0;
     // Format the result message
     let resultMessage = `${passCount}/${testCount} tests passed`;
     if (testCount > 0 && passCount < testCount) {
@@ -69,14 +72,16 @@ async function toolHandler(mcpUnity, params) {
         content: [
             {
                 type: 'text',
-                text: response.message || resultMessage
+                text: resultMessage || response.message
             },
             {
                 type: 'text',
                 text: JSON.stringify({
                     testCount,
                     passCount,
-                    failCount: testCount - passCount,
+                    failCount,
+                    inconclusiveCount,
+                    skipCount,
                     results: testResults
                 }, null, 2)
             }
diff --git a/Server/build/unity/mcpUnity.d.ts b/Server/build/unity/mcpUnity.d.ts
index e26e2ead..98a30487 100644
--- a/Server/build/unity/mcpUnity.d.ts
+++ b/Server/build/unity/mcpUnity.d.ts
@@ -10,6 +10,7 @@ export declare class McpUnity {
     private ws;
     private pendingRequests;
     private readonly REQUEST_TIMEOUT;
+    private retryDelay;
     constructor(logger: Logger);
     /**
      * Start the Unity connection
diff --git a/Server/build/unity/mcpUnity.js b/Server/build/unity/mcpUnity.js
index 6308ad23..44fd6935 100644
--- a/Server/build/unity/mcpUnity.js
+++ b/Server/build/unity/mcpUnity.js
@@ -9,6 +9,7 @@ export class McpUnity {
     ws = null;
     pendingRequests = new Map();
     REQUEST_TIMEOUT = 10000;
+    retryDelay = 1000;
     constructor(logger) {
         this.logger = logger;
         // Initialize port from environment variable or use default
@@ -87,6 +88,8 @@ export class McpUnity {
             this.ws.onclose = () => {
                 this.logger.debug('WebSocket closed');
                 this.disconnect();
+                //this.logger.debug('WebSocket closed. Reconnecting in', this.retryDelay);
+                //setTimeout(this.connect, this.retryDelay);
             };
         });
     }
diff --git a/Server/src/tools/runTestsTool.ts b/Server/src/tools/runTestsTool.ts
index b7b7ed12..b8de19a3 100644
--- a/Server/src/tools/runTestsTool.ts
+++ b/Server/src/tools/runTestsTool.ts
@@ -75,6 +75,9 @@ async function toolHandler(mcpUnity: McpUnity, params: any): Promise<CallToolRes
   const testResults = response.results || [];
   const testCount = response.testCount || 0;
   const passCount = response.passCount || 0;
+  const failCount = response.failCount || 0;
+  const inconclusiveCount = response.inconclusiveCount || 0;
+  const skipCount = response.skipCount || 0;
   
   // Format the result message
   let resultMessage = `${passCount}/${testCount} tests passed`;
@@ -89,14 +92,16 @@ async function toolHandler(mcpUnity: McpUnity, params: any): Promise<CallToolRes
     content: [
       {
         type: 'text',
-        text: response.message || resultMessage
+        text: resultMessage || response.message
       },
       {
         type: 'text',
         text: JSON.stringify({
           testCount,
           passCount,
-          failCount: testCount - passCount,
+          failCount,
+          inconclusiveCount,
+          skipCount,
           results: testResults
         }, null, 2)
       }
diff --git a/Server/src/unity/mcpUnity.ts b/Server/src/unity/mcpUnity.ts
index 31de601d..3b552635 100644
--- a/Server/src/unity/mcpUnity.ts
+++ b/Server/src/unity/mcpUnity.ts
@@ -34,6 +34,7 @@ export class McpUnity {
   private ws: WebSocket | null = null;
   private pendingRequests: Map<string, PendingRequest> = new Map<string, PendingRequest>();
   private readonly REQUEST_TIMEOUT = 10000;
+  private retryDelay = 1000;
   
   constructor(logger: Logger) {
     this.logger = logger;
@@ -129,6 +130,8 @@ export class McpUnity {
       this.ws.onclose = () => {
         this.logger.debug('WebSocket closed');
         this.disconnect();
+        //this.logger.debug('WebSocket closed. Reconnecting in', this.retryDelay);
+        //setTimeout(this.connect, this.retryDelay);
       };
     });
   }
diff --git a/package.json b/package.json
index 8a3efcc3..c4bf5bfb 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
   "name": "com.gamelovers.mcp-unity",
   "displayName": "MCP Unity Server",
   "author": "CoderGamester",
-  "version": "1.0.0",
+  "version": "1.0.1",
   "unity": "2022.3",
   "license": "MIT",
   "description": "The purpose of this package is to provide a MCP Unity Server for executing Unity operations and request Editor information from AI MCP enabled hosts",
