| --- |
| 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](https://docs.astral.sh/uv/) 管理依赖: |
|
|
| ```bash |
| # 安装依赖 |
| uv sync |
| |
| # 启动后端服务(开发模式,支持热重载) |
| uv run uvicorn app.main:app --reload --host 0.0.0.0 --port 7860 |
| |
| # 或者直接运行 |
| uv run python -m app.main |
| ``` |
|
|
| 前端开发: |
|
|
| ```bash |
| cd frontend |
| |
| # 安装前端依赖 |
| npm install |
| |
| # 开发模式(带 API 代理) |
| npm run dev |
| |
| # 构建生产版本 |
| npm run build |
| ``` |
|
|
| ### 2. Docker 部署 |
|
|
| 使用项目中的 Dockerfile 构建镜像: |
|
|
| ```bash |
| 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 规范 |
| ```json |
| { |
| "name": "example_plugin", |
| "version": "1.0.0", |
| "description": "插件描述", |
| "author": "作者名称", |
| "enabled": false, |
| "name_i18n": { |
| "zh-CN": "示例插件", |
| "en-US": "Example Plugin" |
| } |
| } |
| ``` |
|
|
| ### main.py 规范 |
| ```python |
| class ExamplePlugin: |
| def on_enable(self): |
| """插件启用时调用""" |
| pass |
| |
| def on_disable(self): |
| """插件禁用时调用""" |
| pass |
| |
| plugin = ExamplePlugin() |
| ``` |
|
|
| ### 前端文件规范 |
| - `frontend/index.tsx` - React 组件,访问路径:`/tool/{plugin_name}` |
|
|
| ### 插件示例 |
| 参考 `plugins/welcome`、`plugins/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`(可选,用于前端开发) |
|
|
| ### 构建生产版本 |
| ```bash |
| 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 管理界面 |