logout
End your session on the Open eClass platform using the authentication system, ensuring secure disconnection and access termination.
Instructions
Log out from eClass
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| random_string | Yes | Dummy parameter for no-parameter tools |
Implementation Reference
- src/eclass_mcp_server/server.py:134-144 (registration)Registration of the 'logout' MCP tool, including its description and input schema (dummy parameter).types.Tool( name="logout", description="Log out from eClass", inputSchema={ "type": "object", "properties": { "random_string": {"type": "string", "description": "Dummy parameter for no-parameter tools"}, }, "required": ["random_string"], }, ),
- src/eclass_mcp_server/server.py:219-225 (handler)MCP handler function for the 'logout' tool that invokes the authentication logout logic and formats the response.async def handle_logout() -> List[types.TextContent]: """Handle logout from eClass.""" # Use the authentication module to perform logout success, username_or_error = authentication.perform_logout(session_state) # Format and return the response return [authentication.format_logout_response(success, username_or_error)]
- Core implementation of logout logic: sends GET to logout URL, resets session, handles errors.def perform_logout(session_state) -> Tuple[bool, Optional[str]]: """ Log out from eClass. Args: session_state: The current session state Returns: Tuple of (success, error_message or username) """ if not session_state.logged_in: return True, None # Already logged out try: response = session_state.session.get(session_state.logout_url) response.raise_for_status() # Store username for response message username = session_state.username # Reset session state session_state.reset() return True, username except Exception as e: logger.error(f"Logout error: {str(e)}") return False, f"Error during logout: {str(e)}"
- Helper function to format the logout result into an MCP TextContent response.def format_logout_response(success: bool, username_or_error: Optional[str]) -> types.TextContent: """ Format logout response for MCP. Args: success: Whether logout was successful username_or_error: Username if logout succeeded, error message if failed Returns: Formatted MCP TextContent response """ if success: if username_or_error: # If we had a username return types.TextContent( type="text", text=f"Successfully logged out user {username_or_error}.", ) else: return types.TextContent( type="text", text="Not logged in, nothing to do.", ) else: return types.TextContent( type="text", text=f"Error during logout: {username_or_error}", )
- Input schema definition for the 'logout' tool (uses dummy parameter as tool takes no real inputs).inputSchema={ "type": "object", "properties": { "random_string": {"type": "string", "description": "Dummy parameter for no-parameter tools"}, }, "required": ["random_string"], },