message / README.md
hunian
refactor(plugins): 插件短名并统一 MCP tool 为 {plugin}-{tool}
cc826a1
|
Raw
History Blame Contribute Delete
7.46 kB
metadata
title: Message Function Center
emoji: 🚀
colorFrom: blue
colorTo: indigo
sdk: docker
sdk_version: '3.11'
app_file: app/main.py
pinned: false

Message Function Center

一个基于 FastAPI 的插件化功能中心框架,采用 React SPA 前端,支持插件管理、MCP 服务和动态路由注册。

功能说明

1. 插件管理系统

  • 提供插件安装、启用/禁用、卸载等功能
  • 支持 ZIP 文件和 Git 仓库安装插件
  • 插件状态管理与生命周期控制
  • 插件依赖自动安装
  • 动态 API 路由注册

2. React SPA 前端

  • 首页 (/) - 显示插件统计和快捷链接
  • 插件管理 (/plugins) - 管理已安装插件,支持启用/禁用/卸载/安装
  • 框架管理 (/admin) - 框架配置信息
  • 工具页面 (/tool/{plugin_name}) - 插件工具界面
  • 响应式设计,支持移动端和桌面端
  • 中英文国际化支持

3. MCP 服务

  • 基于 Model Context Protocol 的工具服务
  • 自动注册插件 MCP 工具
  • 支持 Streamable HTTP 会话

4. API 接口

  • GET /api/plugins/ - 获取插件列表
  • GET /api/plugins/stats - 获取插件统计信息
  • GET /api/plugins/{plugin_name} - 获取特定插件信息
  • POST /api/plugins/install/zip - 通过 ZIP 文件安装插件
  • POST /api/plugins/install/git - 通过 Git 仓库安装插件
  • POST /api/plugins/install/directory - 通过目录安装插件
  • POST /api/plugins/{plugin_name}/enable - 启用插件
  • POST /api/plugins/{plugin_name}/disable - 禁用插件
  • DELETE /api/plugins/{plugin_name} - 卸载插件
  • GET /api/health - 健康检查
  • GET /api/version - 获取版本信息

使用方法

1. 本地开发

使用 uv 管理依赖:

# 安装依赖
uv sync

# 启动后端服务(开发模式,支持热重载)
uv run uvicorn app.main:app --reload --host 0.0.0.0 --port 7860

# 或者直接运行
uv run python -m app.main

前端开发:

cd frontend

# 安装前端依赖
npm install

# 开发模式(带 API 代理)
npm run dev

# 构建生产版本
npm run build

2. Docker 部署

使用项目中的 Dockerfile 构建镜像:

docker build -t message-function-center .
docker run -p 7860:7860 message-function-center

3. 访问服务

  • 首页:访问 http://localhost:7860/
  • 插件管理:访问 http://localhost:7860/plugins
  • 管理员页面:访问 http://localhost:7860/admin
  • API 文档:访问 http://localhost:7860/docs(FastAPI 自动生成)
  • MCP 服务:访问 http://localhost:7860/mcp

插件开发

插件结构

每个插件应包含以下文件:

  • plugin.json - 插件元数据(必需)
  • main.py - 插件主类(必需)
  • api.py - API 路由(可选)
  • requirements.txt - 插件依赖(可选)
  • frontend/index.tsx - React 前端组件(可选)

plugin.json 规范

{
    "name": "example_plugin",
    "version": "1.0.0",
    "description": "插件描述",
    "author": "作者名称",
    "enabled": false,
    "name_i18n": {
        "zh-CN": "示例插件",
        "en-US": "Example Plugin"
    }
}

main.py 规范

class ExamplePlugin:
    def on_enable(self):
        """插件启用时调用"""
        pass

    def on_disable(self):
        """插件禁用时调用"""
        pass

plugin = ExamplePlugin()

前端文件规范

  • frontend/index.tsx - React 组件,访问路径:/tool/{plugin_name}

插件示例

参考 plugins/welcomeplugins/image 等目录中的示例插件。

技术栈

后端

  • FastAPI - 现代 Python Web 框架
  • Uvicorn - ASGI 服务器
  • MCP - Model Context Protocol
  • Python 3.11 - 编程语言

前端

  • React 18 - UI 框架
  • TypeScript - 类型安全
  • Vite - 构建工具
  • React Router - 路由管理
  • Zustand - 状态管理
  • React Query - 数据获取
  • shadcn/ui - UI 组件库
  • Tailwind CSS - 样式
  • i18next - 国际化

项目结构

.
├── app/                          # 主应用目录
│   ├── main.py                   # FastAPI应用入口
│   ├── api/                      # API路由
│   │   ├── routes.py            # 主路由配置
│   │   └── plugins.py           # 插件API
│   ├── config/                   # 配置管理
│   │   └── settings.py          # 应用配置
│   ├── frontend/                 # 前端静态资源
│   │   └── static/
│   │       └── css/             # 样式文件
│   ├── plugins/                  # 插件系统
│   │   ├── manager.py           # 插件管理器
│   │   ├── loader.py            # 插件加载器
│   │   └── models.py            # 数据模型
│   └── mcp/                      # MCP 服务
│       ├── server.py            # MCP 服务器
│       └── plugin_registry.py   # 插件工具注册
├── frontend/                     # React SPA 前端
│   ├── src/
│   │   ├── app/                 # 应用入口
│   │   ├── pages/               # 页面组件
│   │   ├── components/          # UI 组件
│   │   ├── hooks/               # React Hooks
│   │   ├── api/                 # API 客户端
│   │   ├── stores/              # Zustand 状态
│   │   ├── i18n/                # 国际化
│   │   └── types/               # TypeScript 类型
│   ├── package.json
│   └── vite.config.ts
├── plugins/                      # 已安装插件目录
│   ├── welcome/
│   ├── image/
│   └── ...
├── dist/frontend/                # 前端构建产物
├── pyproject.toml                # Python 项目配置
├── uv.lock                       # uv 依赖锁定
├── Dockerfile                    # Docker 构建文件
└── README.md

配置说明

环境变量

  • USE_SPA - 使用 SPA 模式 (true/false,默认 true)
  • MFC_DEBUG - 调试模式 (true/false)

端口配置

  • 服务监听端口:7860
  • 前端开发服务器端口:5173

开发说明

本地开发流程

  1. 安装后端依赖:uv sync
  2. 安装前端依赖:cd frontend && npm install
  3. 启动后端服务:uv run uvicorn app.main:app --reload
  4. 启动前端开发服务器:cd frontend && npm run dev(可选,用于前端开发)

构建生产版本

cd frontend && npm run build

注意事项

  1. 插件安全:插件运行在主应用进程中,需要注意安全性
  2. 依赖管理:使用 uv 管理 Python 依赖,npm 管理前端依赖
  3. 性能:插件可能影响主应用性能,请谨慎开发
  4. 兼容性:插件 API 可能随版本变化,请关注更新日志

更新日志

v0.3.0

  • 前端迁移至 React SPA 架构
  • 使用 uv 管理 Python 依赖
  • 新增 MCP 服务支持
  • 国际化支持(中英文)
  • 优化前端构建流程

v0.2.1

  • 修复反馈记录加载错误(空文件处理)
  • 修复 favicon.ico 404 错误
  • 更新 Pydantic v2 兼容性

v0.2.0

  • 新增首页功能,展示已启用插件
  • 新增用户反馈系统
  • 优化页面样式

v0.1.0

  • 实现插件管理系统
  • 支持插件安装、启用/禁用、卸载
  • 提供 Web 管理界面