Skip to main content
Glama

Canvas MCP Server

"""Configuration management for Canvas MCP server.""" import os import sys from typing import Optional from dotenv import load_dotenv # Load environment variables from .env file load_dotenv() class Config: """Configuration class for Canvas MCP server.""" def __init__(self): # Required configuration self.canvas_api_token = os.getenv("CANVAS_API_TOKEN", "") self.canvas_api_url = os.getenv("CANVAS_API_URL", "https://canvas.illinois.edu/api/v1") # Optional configuration with defaults self.mcp_server_name = os.getenv("MCP_SERVER_NAME", "canvas-api") self.debug = os.getenv("DEBUG", "false").lower() == "true" self.api_timeout = int(os.getenv("API_TIMEOUT", "30")) self.cache_ttl = int(os.getenv("CACHE_TTL", "300")) self.max_concurrent_requests = int(os.getenv("MAX_CONCURRENT_REQUESTS", "10")) # Development configuration self.log_level = os.getenv("LOG_LEVEL", "INFO").upper() self.log_api_requests = os.getenv("LOG_API_REQUESTS", "false").lower() == "true" # Privacy and security configuration self.enable_data_anonymization = os.getenv("ENABLE_DATA_ANONYMIZATION", "true").lower() == "true" self.anonymization_debug = os.getenv("ANONYMIZATION_DEBUG", "false").lower() == "true" # Optional metadata self.institution_name = os.getenv("INSTITUTION_NAME", "") self.timezone = os.getenv("TIMEZONE", "UTC") @property def api_base_url(self) -> str: """Legacy compatibility for API_BASE_URL.""" return self.canvas_api_url @property def api_token(self) -> str: """Legacy compatibility for API_TOKEN.""" return self.canvas_api_token # Global configuration instance _config: Optional[Config] = None def get_config() -> Config: """Get the global configuration instance.""" global _config if _config is None: _config = Config() return _config def validate_config() -> bool: """Validate that required configuration is present.""" config = get_config() if not config.canvas_api_token: print("Error: CANVAS_API_TOKEN environment variable is required", file=sys.stderr) print("Please set it to your Canvas API token in your .env file", file=sys.stderr) return False if not config.canvas_api_url: print("Error: CANVAS_API_URL environment variable is required", file=sys.stderr) print("Please set it to your Canvas API URL in your .env file", file=sys.stderr) return False if not config.canvas_api_url.endswith("/api/v1"): print("Warning: CANVAS_API_URL should end with '/api/v1'", file=sys.stderr) print(f"Current URL: {config.canvas_api_url}", file=sys.stderr) return True # Legacy compatibility - these will be used by existing code API_BASE_URL = get_config().api_base_url API_TOKEN = get_config().api_token

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/vishalsachdev/canvas-mcp'

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