message / README.md
hunian
refactor(plugins): 插件短名并统一 MCP tool 为 {plugin}-{tool}
cc826a1
|
Raw
History Blame Contribute Delete
7.46 kB
---
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 管理界面