list_workbooks
Retrieve information about all currently open Excel workbooks to monitor active sessions and manage workbook operations through the xlwings Excel MCP Server.
Instructions
List all open workbook sessions.
Returns:
List of session information dictionaries
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/xlwings_mcp/server.py:191-204 (handler)The primary handler and registration for the 'list_workbooks' tool using @mcp.tool() decorator. Delegates to SESSION_MANAGER.list_sessions() to return list of active sessions.@mcp.tool() def list_workbooks() -> List[Dict[str, Any]]: """ List all open workbook sessions. Returns: List of session information dictionaries """ try: return SESSION_MANAGER.list_sessions() except Exception as e: logger.error(f"Error listing workbooks: {e}") raise WorkbookError(f"Failed to list workbooks: {str(e)}")
- src/xlwings_mcp/session.py:459-463 (helper)ExcelSessionManager.list_sessions(): Core logic that iterates over active sessions and calls get_info() on each to build the response list.def list_sessions(self) -> list: """List all active sessions""" with self._sessions_lock: return [session.get_info() for session in self._sessions.values()]
- src/xlwings_mcp/session.py:120-131 (helper)ExcelSession.get_info(): Provides the detailed information dictionary for each session, including ID, path, visibility, timestamps, and list of sheets.def get_info(self) -> Dict[str, Any]: """Get session information""" return { "session_id": self.id, "filepath": self.filepath, "visible": self.visible, "read_only": self.read_only, "created_at": datetime.fromtimestamp(self.created_at).isoformat(), "last_access": datetime.fromtimestamp(self.last_accessed).isoformat(), "sheets": [sheet.name for sheet in self.workbook.sheets] if self.workbook else [] }
- src/xlwings_mcp/server.py:191-204 (registration)Tool registration via FastMCP @mcp.tool() decorator with inferred schema from type hints (no parameters, returns List[Dict[str, Any]]).@mcp.tool() def list_workbooks() -> List[Dict[str, Any]]: """ List all open workbook sessions. Returns: List of session information dictionaries """ try: return SESSION_MANAGER.list_sessions() except Exception as e: logger.error(f"Error listing workbooks: {e}") raise WorkbookError(f"Failed to list workbooks: {str(e)}")