模块化协议服务器

MCP服务器是一个基于模块化架构的协议服务器,提供文件操作、系统管理、Telegram集成、任务调度等功能,适用于自动化任务和系统管理场景。

  • by karar-hayder
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 karar-hayder/Simple-MCP

使用说明

MCP服务器-模块化架构

此MCP(模型上下文协议)服务器采用干净的模块化架构构建,用于可维护、可扩展和健壮的开发。

📁 项目结构

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

🚀 快速开始

  1. 安装依赖项:

    pip install -r requirements.txt
    
  2. 创建环境文件:

    # Create .env file with your configuration
    TG_TOKEN=your_telegram_bot_token
    ADMIN_ID=your_telegram_chat_id
    
  3. 运行服务器:

    python main.py
    

📋 可用工具

基本工具

  • echo --回显输入文本

文件工具

  • read_file --读取文件内容
  • write_file --将内容写入文件
  • create_file --创建一个新的空文件
  • create_folder --创建新目录
  • list_files --列出目录中的文件和文件夹
  • delete_file --删除文件
  • rename_file --重命名或移动文件
  • move_folder --将文件夹(目录)移动到新位置

系统工具

  • system_info --获取基本系统信息(平台、内存、CPU等)
  • list_processes --列出正在运行的进程(PID、名称、用户)
  • run_python_code --执行Python代码片段并返回输出
  • install_python_library --安装Python库(通过pip)并更新requirements.txt

电报集成

  • send_telegram_message --发送电报消息、音频、视频或文档(带可选元数据)
  • receive_telegram_updates --接收和下载收到的电报消息和文件

日程安排和作业工具(仍在测试中)

  • schedule_telegram_message --安排在特定时间发送电报消息(支持ISO日期时间或相对时间,如“10分钟内”)
  • schedule_function_call --安排任何已注册的函数在指定时间运行一次
  • schedule_recurring_job --使用cron表达式或间隔安排重复作业(例如,“每5分钟”、“0 9**1-5”)
  • list_scheduled_jobs --列出所有当前计划的作业及其详细信息
  • cancel_scheduled_job --按ID取消计划作业
  • get_available_functions --列出所有可用于日程安排的功能
  • get_job_execution_log --查看计划作业的执行历史和结果

持久性工具

  • update_persistent_info --在持久存储中添加或更新键值对
  • get_persistent_info --检索所有持久数据或特定键的值
  • delete_persistent_info_key --从持久存储中删除密钥

控制工具

  • type_text --使用键盘模拟键入文本
  • press_hotkey --按组合键作为热键(例如Ctrl+Tab)
  • switch_to_window --将焦点切换到具有指定标题的窗口
  • list_open_windows --列出当前打开的所有窗口的标题
  • move_mouse_to --将鼠标光标移动到指定的屏幕坐标
  • click_mouse --在指定坐标或当前位置单击鼠标

YouTube工具

  • youtube_download_video --将YouTube视频下载为MP4
  • youtube_download_audio --将YouTube音频下载为MP3
  • youtube_video_info --获取详细的YouTube视频信息

🔧 架构优势

关注点分离

  • config.py:集中配置
  • 持久性.py:数据存储抽象
  • scheduler.py:调度逻辑隔离
  • 工具/:按功能组织的工具

可维护性

  • 通过创建新模块添加新工具
  • 明确组件之间的依赖关系
  • 一致的错误处理和日志记录

可扩展性

  • 模块化设计,易于扩展
  • 共享MCP实例可防止冲突
  • 功能注册表支持动态调度

📊 数据持久层

服务器会自动保持:

  • 计划的作业:服务器重启后仍能存活
  • 执行日志:详细的作业运行历史记录
  • 持久信息:自定义键值存储

创建的文件:

  • scheduled_jobs.json --工作定义
  • job_execution_log.json --执行历史
  • persistent_info.json --自定义数据
  • main.log --应用程序日志
  • error.log --错误日志

🛠️ 发展

添加新工具

  1. 在中创建新模块 tools/
  2. 导入共享MCP实例: from . import mcp
  3. 定义您的工具功能 @mcp.tool() 装饰器
  4. 在中注册该功能 tools/__init__.py 如有需要

添加新的持久性函数

  1. 添加功能 persistence.py
  2. 导入并在工具中使用它们
  3. 遵循现有的错误处理模式

🔍 故障排除

  • 检查登录 main.log 和 error.log
  • 验证中的环境变量 .env
  • 确保安装了所有依赖项
  • 检查文件持久性权限