Skip to main content
Glama
hingaibm

Data Intelligence MCP Server

by hingaibm
constants.py4.1 kB
# Copyright [2025] [IBM] # Licensed under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) # See the LICENSE file in the project root for license information. """ Logging constants and configuration for the Data Intelligence MCP Server. This module defines constants used throughout the logging system, including log levels, formats, and parameter names. """ import os from typing import Dict, Any # Logging levels mapping LOGGING_LEVELS = { "CRITICAL": 50, "ERROR": 40, "WARNING": 30, "INFO": 20, "DEBUG": 10 } # Logging format types JSON_LOGGING = "json_logging" HUMAN_LOGGING = "human_logging" # Parameter names for configuration LOGGING_LEVEL = "logging_level" LOGGING_FORMAT = "logging_format" CONTAINER_NAME = "container_name" ENVIRONMENT = "environment" BUILD_VERSION = "build_version" LOG_FILE_PATH = "log_file_path" # Default parameter values DEFAULT_PARAMETERS = { LOGGING_LEVEL: ["INFO", False, str], LOGGING_FORMAT: [JSON_LOGGING, False, str], CONTAINER_NAME: ["data-intelligence-mcp-server", False, str], ENVIRONMENT: ["development", False, str], BUILD_VERSION: ["0.4.0", False, str], LOG_FILE_PATH: [None, False, str], } # Global parameter storage parameter_values: Dict[str, Any] = {} def _get_environment_value(parameter_name: str) -> str: """ Get parameter value from environment variable or Pydantic settings. Args: parameter_name: The name of the parameter to look up Returns: str: The environment value if found, None otherwise """ # Try environment variable first env_value = os.environ.get(parameter_name.upper()) # Fallback to Pydantic settings if available if env_value is None: try: from app.core.settings import settings if hasattr(settings, parameter_name): env_value = getattr(settings, parameter_name) except ImportError: pass return env_value def _convert_value_to_type(value: str, param_type: type) -> Any: """ Convert string value to the specified parameter type. Args: value: The string value to convert param_type: The target type for conversion Returns: Any: The converted value """ if param_type is bool: return value.lower() in ('true', '1', 'yes', 'on') elif param_type is int: return int(value) else: return value def _validate_parameter_exists(parameter_name: str) -> None: """ Validate that the parameter exists in DEFAULT_PARAMETERS. Args: parameter_name: The name of the parameter to validate Raises: ValueError: If parameter is not found in DEFAULT_PARAMETERS """ if parameter_name not in DEFAULT_PARAMETERS: raise ValueError(f"Unknown parameter: {parameter_name}") def _handle_missing_parameter(parameter_name: str, is_mandatory: bool, default_value: Any) -> None: """ Handle the case when parameter value is not found in environment. Args: parameter_name: The name of the parameter is_mandatory: Whether the parameter is mandatory default_value: The default value to use if not mandatory Raises: ValueError: If parameter is mandatory but not found """ if is_mandatory: raise ValueError(f"Required parameter {parameter_name} not found in environment") parameter_values[parameter_name] = default_value def set_parameter_value(parameter_name: str) -> None: """ Set parameter value from environment variable or use default. Args: parameter_name: The name of the parameter to set """ _validate_parameter_exists(parameter_name) default_value, is_mandatory, param_type = DEFAULT_PARAMETERS[parameter_name] env_value = _get_environment_value(parameter_name) if env_value is not None: converted_value = _convert_value_to_type(env_value, param_type) parameter_values[parameter_name] = converted_value else: _handle_missing_parameter(parameter_name, is_mandatory, default_value)

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/hingaibm/data-intelligence-mcp-server'

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