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/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
开发说明
本地开发流程
- 安装后端依赖:
uv sync - 安装前端依赖:
cd frontend && npm install - 启动后端服务:
uv run uvicorn app.main:app --reload - 启动前端开发服务器:
cd frontend && npm run dev(可选,用于前端开发)
构建生产版本
cd frontend && npm run build
注意事项
- 插件安全:插件运行在主应用进程中,需要注意安全性
- 依赖管理:使用 uv 管理 Python 依赖,npm 管理前端依赖
- 性能:插件可能影响主应用性能,请谨慎开发
- 兼容性:插件 API 可能随版本变化,请关注更新日志
更新日志
v0.3.0
- 前端迁移至 React SPA 架构
- 使用 uv 管理 Python 依赖
- 新增 MCP 服务支持
- 国际化支持(中英文)
- 优化前端构建流程
v0.2.1
- 修复反馈记录加载错误(空文件处理)
- 修复 favicon.ico 404 错误
- 更新 Pydantic v2 兼容性
v0.2.0
- 新增首页功能,展示已启用插件
- 新增用户反馈系统
- 优化页面样式
v0.1.0
- 实现插件管理系统
- 支持插件安装、启用/禁用、卸载
- 提供 Web 管理界面