--- 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 管理界面