Skip to main content
Glama
course_management.py2.52 kB
""" Course management module for eClass MCP Server. Handles retrieval and formatting of course information from eClass. """ from __future__ import annotations import logging from typing import TYPE_CHECKING, Dict, List, Optional, Tuple import mcp.types as types import requests from . import html_parsing if TYPE_CHECKING: from .server import SessionState logger = logging.getLogger('eclass_mcp_server.course_management') def get_courses( session_state: SessionState ) -> Tuple[bool, Optional[str], Optional[List[Dict[str, str]]]]: """ Retrieve a list of enrolled courses from eClass. Returns: Tuple of (success, message, courses). On success: (True, None, courses_list) On empty result: (True, message, []) On failure: (False, error_message, None) """ if not session_state.logged_in: return False, "Not logged in. Please log in first using the login tool.", None if not session_state.is_session_valid(): return False, "Session expired. Please log in again.", None try: response = session_state.session.get(session_state.portfolio_url) response.raise_for_status() courses = html_parsing.extract_courses(response.text, session_state.base_url) session_state.courses = courses if not courses: return True, "No courses found. You may not be enrolled in any courses.", [] logger.info(f"Successfully retrieved {len(courses)} courses") return True, None, courses except requests.RequestException as e: logger.error(f"Network error getting courses: {e}") return False, f"Network error retrieving courses: {e}", None except Exception as e: logger.error(f"Error getting courses: {e}") return False, f"Error retrieving courses: {e}", None def format_courses_response( success: bool, message: Optional[str], courses: Optional[List[Dict[str, str]]] ) -> types.TextContent: """Format course list response for MCP.""" if not success: return types.TextContent( type="text", text=f"Error: {message}", ) if message: # No courses found message return types.TextContent( type="text", text=message, ) course_list = html_parsing.format_course_list(courses) return types.TextContent( type="text", text=f"Found {len(courses)} courses:\n\n{course_list}", )

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sdi2200262/eclass-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server