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