diff --git a/src/basic_memory/cli/commands/project.py b/src/basic_memory/cli/commands/project.py index a6d39bf2..99c716bb 100644 --- a/src/basic_memory/cli/commands/project.py +++ b/src/basic_memory/cli/commands/project.py @@ -128,7 +128,7 @@ async def _list_projects(ws: str | None = None): table.add_column("Cloud Path", style="green") table.add_column("Workspace", style="green") table.add_column("CLI Route", style="blue") - table.add_column("MCP (stdio)", style="blue") + table.add_column("MCP", style="blue") table.add_column("Sync", style="green") table.add_column("Default", style="magenta") @@ -164,6 +164,11 @@ async def _list_projects(ws: str | None = None): elif entry and entry.mode == ProjectMode.LOCAL and entry.path: local_path = format_path(normalize_project_path(entry.path)) + # Clear local path for cloud-mode projects — only local projects + # should display a local path + if entry and entry.mode == ProjectMode.CLOUD: + local_path = "" + cloud_path = "" if cloud_project is not None: cloud_path = normalize_project_path(cloud_project.path) @@ -182,7 +187,13 @@ async def _list_projects(ws: str | None = None): is_default = config.default_project == project_name has_sync = bool(entry and entry.local_sync_path) - mcp_stdio_target = "local" if local_project is not None else "n/a" + # Determine MCP transport based on project routing mode + if entry and entry.mode == ProjectMode.CLOUD: + mcp_transport = "https" + elif entry is None and cloud_project is not None: + mcp_transport = "https" + else: + mcp_transport = "stdio" # Show workspace name (type) for cloud-sourced projects ws_label = "" @@ -195,7 +206,7 @@ async def _list_projects(ws: str | None = None): "local_path": local_path, "cloud_path": cloud_path, "cli_route": cli_route, - "mcp_stdio": mcp_stdio_target, + "mcp_stdio": mcp_transport, "sync": has_sync, "is_default": is_default, } diff --git a/tests/cli/test_project_list_and_ls.py b/tests/cli/test_project_list_and_ls.py index be9f583d..ed49b038 100644 --- a/tests/cli/test_project_list_and_ls.py +++ b/tests/cli/test_project_list_and_ls.py @@ -122,15 +122,16 @@ async def fake_list_projects(self): assert "Local Path" in result.stdout assert "Cloud Path" in result.stdout assert "CLI Route" in result.stdout - assert "MCP (stdio)" in result.stdout + assert "MCP" in result.stdout lines = result.stdout.splitlines() alpha_line = next(line for line in lines if "│ alpha" in line) beta_line = next(line for line in lines if "│ beta" in line) assert "local" in alpha_line # CLI route for alpha + assert "stdio" in alpha_line # Local projects use stdio transport assert "cloud" in beta_line # CLI route for beta - assert "n/a" in beta_line # MCP stdio route is unavailable for cloud-only projects + assert "https" in beta_line # Cloud projects use HTTPS transport assert "alpha-local" in result.stdout assert "/alpha" in result.stdout assert "/beta" in result.stdout