From 3a1f99790a6a482000da3e757b9d451254258d1e Mon Sep 17 00:00:00 2001 From: Steve Yegge Date: Tue, 14 Oct 2025 19:22:38 -0700 Subject: [PATCH] feat(mcp): Add debug_env tool to diagnose working directory issues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added a debug tool that reports: - os.getcwd() value - PWD environment variable - BEADS_WORKING_DIR environment variable - Other relevant environment variables This will help diagnose where bd commands are running from and whether Claude Code sets PWD or other variables correctly. 🤖 Generated with Claude Code Co-Authored-By: Claude --- .../beads-mcp/src/beads_mcp/server.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/integrations/beads-mcp/src/beads_mcp/server.py b/integrations/beads-mcp/src/beads_mcp/server.py index e74c15fe..bae113f3 100644 --- a/integrations/beads-mcp/src/beads_mcp/server.py +++ b/integrations/beads-mcp/src/beads_mcp/server.py @@ -1,5 +1,7 @@ """FastMCP server for beads issue tracker.""" +import os + from fastmcp import FastMCP from beads_mcp.models import BlockedIssue, DependencyType, Issue, IssueStatus, IssueType, Stats @@ -197,6 +199,28 @@ async def init(prefix: str | None = None) -> str: return await beads_init(prefix=prefix) +@mcp.tool( + name="debug_env", + description="Debug tool: Show environment and working directory information", +) +async def debug_env() -> str: + """Debug tool to check working directory and environment variables.""" + info = [] + info.append("=== Working Directory Debug Info ===\n") + info.append(f"os.getcwd(): {os.getcwd()}\n") + info.append(f"PWD env var: {os.environ.get('PWD', 'NOT SET')}\n") + info.append(f"BEADS_WORKING_DIR env var: {os.environ.get('BEADS_WORKING_DIR', 'NOT SET')}\n") + info.append(f"BEADS_PATH env var: {os.environ.get('BEADS_PATH', 'NOT SET')}\n") + info.append(f"BEADS_DB env var: {os.environ.get('BEADS_DB', 'NOT SET')}\n") + info.append(f"HOME: {os.environ.get('HOME', 'NOT SET')}\n") + info.append(f"USER: {os.environ.get('USER', 'NOT SET')}\n") + info.append("\n=== All Environment Variables ===\n") + for key, value in sorted(os.environ.items()): + if not key.startswith('_'): # Skip internal vars + info.append(f"{key}={value}\n") + return "".join(info) + + def main() -> None: """Entry point for the MCP server.""" mcp.run()