Simple-MCP

karar-hayder/Simple-MCP

3.2

If you are the rightful owner of Simple-MCP and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The MCP Server is designed with a modular architecture to ensure maintainability, scalability, and robustness in development.

Tools
5
Resources
0
Prompts
0

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

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:

    pip install -r requirements.txt
    
  2. Create environment file:

    # Create .env file with your configuration
    TG_TOKEN=your_telegram_bot_token
    ADMIN_ID=your_telegram_chat_id
    
  3. Run the server:

    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