create the working dir if it doesn't exist (#147)
diff --git a/pkgs/dart_mcp_server/lib/src/utils/cli_utils.dart b/pkgs/dart_mcp_server/lib/src/utils/cli_utils.dart index 44e2389..bfacc6c 100644 --- a/pkgs/dart_mcp_server/lib/src/utils/cli_utils.dart +++ b/pkgs/dart_mcp_server/lib/src/utils/cli_utils.dart
@@ -214,9 +214,12 @@ } commandWithPaths.addAll(paths); + final workingDir = fileSystem.directory(projectRoot.path); + await workingDir.create(recursive: true); + final result = await processManager.run( commandWithPaths, - workingDirectory: projectRoot.path, + workingDirectory: workingDir.path, runInShell: true, );
diff --git a/pkgs/dart_mcp_server/test/utils/cli_utils_test.dart b/pkgs/dart_mcp_server/test/utils/cli_utils_test.dart index 2392d30..ab93e26 100644 --- a/pkgs/dart_mcp_server/test/utils/cli_utils_test.dart +++ b/pkgs/dart_mcp_server/test/utils/cli_utils_test.dart
@@ -56,6 +56,7 @@ test( 'can run commands with roots that are subdirectories of known roots', () async { + expect(fileSystem.directory('/bar/baz').existsSync(), false); final result = await runCommandInRoots( CallToolRequest( name: 'foo', @@ -79,6 +80,7 @@ workingDirectory: '/bar/baz/', )), ]); + expect(fileSystem.directory('/bar/baz').existsSync(), true); }, ); });