get_system_info
Retrieve system environment information in JSON format to diagnose configuration issues and monitor system status for troubleshooting purposes.
Instructions
獲取系統環境資訊
Returns: str: JSON 格式的系統資訊
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- The handler function for the get_system_info tool. It collects system platform, Python version, environment detection (WSL, remote), and relevant environment variables, returning them as a formatted JSON string. Registered via @mcp.tool() decorator.@mcp.tool() def get_system_info() -> str: """ 獲取系統環境資訊 Returns: str: JSON 格式的系統資訊 """ is_remote = is_remote_environment() is_wsl = is_wsl_environment() system_info = { "平台": sys.platform, "Python 版本": sys.version.split()[0], "WSL 環境": is_wsl, "遠端環境": is_remote, "介面類型": "Web UI", "環境變數": { "SSH_CONNECTION": os.getenv("SSH_CONNECTION"), "SSH_CLIENT": os.getenv("SSH_CLIENT"), "DISPLAY": os.getenv("DISPLAY"), "VSCODE_INJECTION": os.getenv("VSCODE_INJECTION"), "SESSIONNAME": os.getenv("SESSIONNAME"), "WSL_DISTRO_NAME": os.getenv("WSL_DISTRO_NAME"), "WSL_INTEROP": os.getenv("WSL_INTEROP"), "WSLENV": os.getenv("WSLENV"), }, } return json.dumps(system_info, ensure_ascii=False, indent=2)
- Helper function to detect if running in WSL environment, used by get_system_info.def is_wsl_environment() -> bool: """ 檢測是否在 WSL (Windows Subsystem for Linux) 環境中運行 Returns: bool: True 表示 WSL 環境,False 表示其他環境 """ try: # 檢查 /proc/version 文件是否包含 WSL 標識 if os.path.exists("/proc/version"): with open("/proc/version") as f: version_info = f.read().lower() if "microsoft" in version_info or "wsl" in version_info: debug_log("偵測到 WSL 環境(通過 /proc/version)") return True # 檢查 WSL 相關環境變數 wsl_env_vars = ["WSL_DISTRO_NAME", "WSL_INTEROP", "WSLENV"] for env_var in wsl_env_vars: if os.getenv(env_var): debug_log(f"偵測到 WSL 環境變數: {env_var}") return True # 檢查是否存在 WSL 特有的路徑 wsl_paths = ["/mnt/c", "/mnt/d", "/proc/sys/fs/binfmt_misc/WSLInterop"] for path in wsl_paths: if os.path.exists(path): debug_log(f"偵測到 WSL 特有路徑: {path}") return True except Exception as e: debug_log(f"WSL 檢測過程中發生錯誤: {e}") return False
- Helper function to detect if running in a remote environment (SSH, Docker, etc.), excluding WSL, used by get_system_info.def is_remote_environment() -> bool: """ 檢測是否在遠端環境中運行 Returns: bool: True 表示遠端環境,False 表示本地環境 """ # WSL 不應被視為遠端環境,因為它可以訪問 Windows 瀏覽器 if is_wsl_environment(): debug_log("WSL 環境不被視為遠端環境") return False # 檢查 SSH 連線指標 for env_var in SSH_ENV_VARS: if os.getenv(env_var): debug_log(f"偵測到 SSH 環境變數: {env_var}") return True # 檢查遠端開發環境 for env_var in REMOTE_ENV_VARS: if os.getenv(env_var): debug_log(f"偵測到遠端開發環境: {env_var}") return True # 檢查 Docker 容器 if os.path.exists("/.dockerenv"): debug_log("偵測到 Docker 容器環境") return True # Windows 遠端桌面檢查 if sys.platform == "win32": session_name = os.getenv("SESSIONNAME", "") if session_name and "RDP" in session_name: debug_log(f"偵測到 Windows 遠端桌面: {session_name}") return True # Linux 無顯示環境檢查(但排除 WSL) if ( sys.platform.startswith("linux") and not os.getenv("DISPLAY") and not is_wsl_environment() ): debug_log("偵測到 Linux 無顯示環境") return True return False