Skip to main content
Glama
README.mdβ€’5.91 kB
# MCP Server - Modular Architecture This MCP (Model Context Protocol) server is built with a clean, modular architecture for maintainable, scalable, and robust development. ## πŸ“ Project Structure ```text MCP-test/ β”œβ”€β”€ main.py # Main entry point β”œβ”€β”€ config.py # Configuration and constants β”œβ”€β”€ persistence.py # Data persistence layer β”œβ”€β”€ scheduler.py # Job scheduling functionality β”œβ”€β”€ tools/ # MCP tools organized by concern β”‚ β”œβ”€β”€ __init__.py # Tools package initialization and registry β”‚ β”œβ”€β”€ basic_tools.py # Basic utility tools β”‚ β”œβ”€β”€ control_tools.py # Server control tools (restart, shutdown, etc) β”‚ β”œβ”€β”€ file_tools.py # File system operations β”‚ β”œβ”€β”€ persistence_tools.py # Persistence management tools β”‚ β”œβ”€β”€ scheduling_tools.py # Scheduling-related tools β”‚ β”œβ”€β”€ system_tools.py # System information and commands β”‚ β”œβ”€β”€ telegram_tools.py # Telegram integration β”‚ └── youtube_tools.py # YouTube-related tools β”œβ”€β”€ requirements.txt # Python dependencies β”œβ”€β”€ .env # Environment variables (create this) └── README.md # This file ``` ## πŸš€ Quick Start 1. **Install dependencies:** ```bash pip install -r requirements.txt ``` 2. **Create environment file:** ```bash # Create .env file with your configuration TG_TOKEN=your_telegram_bot_token ADMIN_ID=your_telegram_chat_id ``` 3. **Run the server:** ```bash python main.py ``` ## πŸ“‹ Available Tools ### Basic Tools - `echo` β€” Echo back input text ### File Tools - `read_file` β€” Read the contents of a file - `write_file` β€” Write content to a file - `create_file` β€” Create a new empty file - `create_folder` β€” Create a new directory - `list_files` β€” List files and folders in a directory - `delete_file` β€” Delete a file - `rename_file` β€” Rename or move a file - `move_folder` β€” Move a folder (directory) to a new location ### System Tools - `system_info` β€” Get basic system information (platform, memory, CPU, etc.) - `list_processes` β€” List running processes (PID, name, user) - `run_python_code` β€” Execute a Python code snippet and return the output - `install_python_library` β€” Install a Python library (via pip) and update requirements.txt ### Telegram Integration - `send_telegram_message` β€” Send Telegram messages, audio, video, or documents (with optional metadata) - `receive_telegram_updates` β€” Receive and download incoming Telegram messages and files ### Scheduling & Job Tools (still in testing) - `schedule_telegram_message` β€” Schedule a Telegram message to be sent at a specific time (supports ISO datetime or relative times like "in 10 minutes") - `schedule_function_call` β€” Schedule any registered function to run once at a specified time - `schedule_recurring_job` β€” Schedule recurring jobs using cron expressions or intervals (e.g., "every 5 minutes", "0 9 ** 1-5") - `list_scheduled_jobs` β€” List all currently scheduled jobs with details - `cancel_scheduled_job` β€” Cancel a scheduled job by its ID - `get_available_functions` β€” List all functions available for scheduling - `get_job_execution_log` β€” View the execution history and results of scheduled jobs ### Persistence Tools - `update_persistent_info` β€” Add or update a key-value pair in persistent storage - `get_persistent_info` β€” Retrieve all persistent data, or a specific key's value - `delete_persistent_info_key` β€” Delete a key from persistent storage ### Control Tools - `type_text` β€” Simulate typing text using the keyboard - `press_hotkey` β€” Press a combination of keys as a hotkey (e.g., Ctrl+Tab) - `switch_to_window` β€” Switch focus to a window with a specified title - `list_open_windows` β€” List the titles of all currently open windows - `move_mouse_to` β€” Move the mouse cursor to specified screen coordinates - `click_mouse` β€” Click the mouse at specified coordinates or at the current position ### YouTube Tools - `youtube_download_video` β€” Download a YouTube video as MP4 - `youtube_download_audio` β€” Download YouTube audio as MP3 - `youtube_video_info` β€” Get detailed YouTube video information ## πŸ”§ Architecture Benefits ### Separation of Concerns - **config.py**: Centralized configuration - **persistence.py**: Data storage abstraction - **scheduler.py**: Scheduling logic isolated - **tools/**: Tools organized by functionality ### Maintainability - Add new tools by creating new modules - Clear dependencies between components - Consistent error handling and logging ### Scalability - Modular design for easy extension - Shared MCP instance prevents conflicts - Function registry enables dynamic scheduling ## πŸ“Š Data Persistence The server automatically persists: - **Scheduled Jobs**: Survives server restarts - **Execution Logs**: Detailed job run history - **Persistent Info**: Custom key-value storage Files created: - `scheduled_jobs.json` β€” Job definitions - `job_execution_log.json` β€” Execution history - `persistent_info.json` β€” Custom data - `main.log` β€” Application logs - `error.log` β€” Error logs ## πŸ› οΈ Development ### Adding New Tools 1. Create a new module in `tools/` 2. Import the shared MCP instance: `from . import mcp` 3. Define your tool function with `@mcp.tool()` decorator 4. Register the function in `tools/__init__.py` if needed ### Adding New Persistence Functions 1. Add functions to `persistence.py` 2. Import and use them in your tools 3. Follow the existing pattern for error handling ## πŸ” Troubleshooting - Check logs in `main.log` and `error.log` - Verify environment variables in `.env` - Ensure all dependencies are installed - Check file permissions for persistence

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/karar-hayder/Simple-MCP'

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