ChrisSacrumCor's picture
Create shared/config.py
3a19347 verified
"""
Configuration for Gradio + MCP Linux administration system.
Simplified for Gradio's built-in MCP support.
"""
import os
from typing import List
from dataclasses import dataclass
@dataclass
class OpenAIConfig:
"""OpenAI API configuration"""
api_key: str
model: str = "gpt-4o-mini"
temperature: float = 0.7
max_tokens: int = 1000
@classmethod
def from_env(cls) -> 'OpenAIConfig':
api_key = os.getenv('OPENAI_API_KEY')
if not api_key:
raise ValueError("OPENAI_API_KEY environment variable is required")
return cls(api_key=api_key)
@dataclass
class SecurityConfig:
"""Security settings for command execution"""
# Whitelist of safe commands
safe_commands: List[str] = None
# Maximum command timeout (seconds)
command_timeout: int = 30
def __post_init__(self):
if self.safe_commands is None:
self.safe_commands = [
"ls", "df", "cat", "ps", "whoami", "pwd", "date",
"uptime", "free", "top", "netstat", "ss",
"tail", "head", "grep", "find", "which"
]
@dataclass
class GradioConfig:
"""Gradio interface configuration"""
title: str = "Linux MCP Administration"
description: str = "AI-powered Linux system administration with MCP tools"
theme: str = "soft"
share: bool = False
# Chat interface settings
chatbot_height: int = 600
textbox_placeholder: str = "Ask me about Linux administration..."
class Config:
"""Main configuration class"""
def __init__(self):
self.openai = OpenAIConfig.from_env()
self.security = SecurityConfig()
self.gradio = GradioConfig()
# Global config instance
config = Config()