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
š Quick Start
Install dependencies:
pip install -r requirements.txtCreate environment file:
# Create .env file with your configuration TG_TOKEN=your_telegram_bot_token ADMIN_ID=your_telegram_chat_idRun the server:
python main.py
š Available Tools
Basic Tools
echoā Echo back input text
File Tools
read_fileā Read the contents of a filewrite_fileā Write content to a filecreate_fileā Create a new empty filecreate_folderā Create a new directorylist_filesā List files and folders in a directorydelete_fileā Delete a filerename_fileā Rename or move a filemove_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 outputinstall_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 timeschedule_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 detailscancel_scheduled_jobā Cancel a scheduled job by its IDget_available_functionsā List all functions available for schedulingget_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 storageget_persistent_infoā Retrieve all persistent data, or a specific key's valuedelete_persistent_info_keyā Delete a key from persistent storage
Control Tools
type_textā Simulate typing text using the keyboardpress_hotkeyā Press a combination of keys as a hotkey (e.g., Ctrl+Tab)switch_to_windowā Switch focus to a window with a specified titlelist_open_windowsā List the titles of all currently open windowsmove_mouse_toā Move the mouse cursor to specified screen coordinatesclick_mouseā Click the mouse at specified coordinates or at the current position
YouTube Tools
youtube_download_videoā Download a YouTube video as MP4youtube_download_audioā Download YouTube audio as MP3youtube_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 definitionsjob_execution_log.jsonā Execution historypersistent_info.jsonā Custom datamain.logā Application logserror.logā Error logs
š ļø Development
Adding New Tools
Create a new module in
tools/Import the shared MCP instance:
from . import mcpDefine your tool function with
@mcp.tool()decoratorRegister the function in
tools/__init__.pyif needed
Adding New Persistence Functions
Add functions to
persistence.pyImport and use them in your tools
Follow the existing pattern for error handling
š Troubleshooting
Check logs in
main.loganderror.logVerify environment variables in
.envEnsure all dependencies are installed
Check file permissions for persistence
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
A modular MCP server that provides comprehensive system automation capabilities including file operations, Telegram integration, job scheduling, system control, and YouTube downloads. Features persistent data storage and a clean architecture for easy extension and maintenance.