diff --git a/libs/arcade-mcp-server/arcade_mcp_server/usage/server_tracker.py b/libs/arcade-mcp-server/arcade_mcp_server/usage/server_tracker.py index 610c23e2..99a896a0 100644 --- a/libs/arcade-mcp-server/arcade_mcp_server/usage/server_tracker.py +++ b/libs/arcade-mcp-server/arcade_mcp_server/usage/server_tracker.py @@ -110,6 +110,13 @@ class ServerTracker: self.usage_service.capture( EVENT_MCP_SERVER_STARTED, self.user_id, properties=properties, is_anon=is_anon ) + # TODO: Use background thread instead of subprocess to capture server start events. + # Using a subprocess for server starts is not ideal because the parent immediately enters `uvicorn.run()` + # for http and `asyncio.run()` for stdio which is blocking and prevents the subprocess from starting. + # Therefore we add a small delay to ensure the subprocess has started. + + # Assumes that the process creation takes max ~50ms and Python startup takes max ~100ms. + time.sleep(0.15) def track_tool_call( self, diff --git a/libs/arcade-mcp-server/pyproject.toml b/libs/arcade-mcp-server/pyproject.toml index c7d05b8d..6e38eaa5 100644 --- a/libs/arcade-mcp-server/pyproject.toml +++ b/libs/arcade-mcp-server/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "arcade-mcp-server" -version = "1.7.2" +version = "1.7.3" description = "Model Context Protocol (MCP) server framework for Arcade.dev" readme = "README.md" authors = [{ name = "Arcade.dev" }]