热更新服务器

基于FastMCP框架的热更新服务器示例,支持动态加载和更新实用功能而无需重启服务器。

  • by whitejoce
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 whitejoce/hot-update-MCP-Server

使用说明

MCP热更新服务器演示

中文文档 | DeepWiki for this Repository

这是一个基于FastMCP框架的热更新服务器示例,允许在不重新启动服务器的情况下动态加载和更新实用程序功能。

特性

  • 支持实用功能的动态加载
  • 通过JSON配置文件管理工具
  • 实时热更新功能
  • 详细的错误处理和记录

关键码

exec(tool_code, globals(), local_namespace)
if inspect.isfunction(obj) and obj.__name__ in local_namespace:
     if found_func is not None:
          # Handle potential duplicate function definition if needed
          pass # Or log a warning, raise an error, etc.
     found_func = obj
if found_func:
     # Add the tool to MCP using the database name
     mcp.tool(
          name=tool_name, description=tool_description
     )(found_func)
     print(f"Successfully registered tool '{tool_name}'")

🚀 快速开始

1.️⃣ 环境设置

确保你有 Python 3.7+ 安装。然后,安装所需的库:

$ pip install fastmcp
  • fastmcp:MCP的Python实现库。

2.️⃣ 运行MCP服务器

$ python server.py
  • 这 tools.json 文件格式如下:
[
     {
          "name": "Tool Name",
          "description": "Tool Description",
          "code": "def function_name(params):\n    # Function implementation\n    return result"
     }
]

安全说明

⚠️ 重要安全警告:

  • 当前实施使用 exec() 执行从JSON文件读取的代码
  • 生产环境需要额外的安全措施:
    • 代码签名验证
    • 沙盒环境限制
    • 代码审查机制
    • 访问控制

发展建议

  1. 在开发环境中测试所有实用程序功能
  2. 确保JSON文件格式正确
  3. 添加适当的错误处理
  4. 实施代码审查流程
  5. 考虑添加版本控制机制

工作流程

graph TD
     A[Start Server] --> B[Load tools.json]
     B --> C{Parse JSON}
     C -->|Success| D[Iterate Tool List]
     C -->|Failure| E[Output Error Log]
     D --> F[Execute Tool Code]
     F --> G{Code Execution}
     G -->|Success| H[Register to MCP]
     G -->|Failure| I[Output Error Log]
     H --> J[Server Running]
     J --> K[Wait for New Requests]