使用说明
OpenWebUI MCP 服务器
MCP服务器系统,集日志记录、情绪分析和自动提醒功能于一体,与OpenWebUI和Ollama集成
描述
这是一个包含三个专用MCP(模型上下文协议)服务器的套件,旨在创建一个具备以下功能的智能助手:
- 📝 记录个人日记并分析情绪状态
- 📊 情绪数据的可视化与分析
- ⏰ 自动提醒和定期状态检查
所有服务器都通过单一入口点(MCPO)运行,并且可以通过Ollama在OpenWebUI中访问。
建筑学
┌─────────────────────────────────────────────────────┐
│ OpenWebUI (порт 3000) │
│ ┌────────────────┐ ┌─────────────────────────┐ │
│ │ Пользователь │ │ Ollama (11434) │ │
│ └────────────────┘ └─────────────────────────┘ │
└────────────────┬────────────────────────────────────┘
│
▼
┌───────────────┐
│ MCPO (8100) │ ← Прокси для всех MCP серверов
└───────┬───────┘
│
┌───────────┼───────────┐
▼ ▼ ▼
┌─────────┐ ┌──────────┐ ┌───────────┐
│ journal │ │analytics │ │ scheduler │
│ (8003) │ │ (8004) │ │ (8005) │
└─────────┘ └──────────┘ └───────────┘
└───────────┬───────────┘
▼
┌──────────────┐
│ PostgreSQL │ ← Единая БД для всех серверов
│ (порт 5432) │
└──────────────┘
MCP 服务器
🧠 日志服务器(端口 8003)
日记与背景 - 存储对话并自动评估情绪
功能:
create_entry(text, mood?, tags?)- 在日记中创建记录extract_assessment(text)- 提取情绪指标(愉悦度、焦虑度、能量度)save_assessment(entry_id, assessment)- 在数据库中保存评分get_context(limit=10)- 获取最新记录以了解上下文
后端: PostgreSQL
📊 analytics_server(端口 8004)
分析与图表 - 数据聚合与可视化
功能:
trends(metric, window)- 指标在一段时间内的动态(天/周/月)weekly_report()- 一周内所有指标的简要报告charts(metrics, from_date, to_date)- 生成图表export_csv(from_date, to_date)- 将数据导出为CSV格式
后端: PostgreSQL/TimescaleDB + Matplotlib/Plotly
⏰ 调度服务器(端口8005)
提醒与仪式 - 自动问题和任务
功能:
add_rule(cron, prompt, description?)- 添加带有时间表的规则list_rules()- 获取所有规则的列表remove_rule(rule_id)- 按ID删除规则trigger_now(rule_id)- 立即启动规则(用于测试)
后端: PostgreSQL + APScheduler
技术栈
- Python 3.11及以上版本 使用 async/await
- FastMCP - 创建MCP服务器的框架
- PostgreSQL 16 - 主数据库用于存储数据
- OpenWebUI - 用于交互的网页界面
- Ollama(注:Ollama是一个用于本地运行大型语言模型的工具,此处直接保留原名,不进行意译) - 本地部署LLM模型
- MCPO(海軍軍官的最高军衔,相当于海军上校) - 用于聚合MCP服务器的代理
- Docker 和 Docker Compose - 集装化
服务器依赖项:
- 日记;期刊;杂志:asyncpg(注:这是一个数据库连接库的名称,直接翻译为中文并无具体意义,通常保留原名)
- **分析(学)**asyncpg, pandas, matplotlib, plotly
- 调度器asyncpg,apscheduler
快速启动
初步要求
- Docker 和 Docker Compose
- Python 3.11+(用于本地开发)
- 紫外线 - Python的现代包管理器
1. 克隆仓库
git clone <repository-url>
cd openwebui-mcp-server
2. 安装依赖项(可选,用于开发)
# Установить все зависимости
uv sync --all-extras
# Или только для конкретных серверов
uv sync --extra journal_server
uv sync --extra analytics_server
uv sync --extra scheduler_server
3. 环境设置
创建一个文件 .env 在项目的根本上:
# PostgreSQL
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgress
POSTGRES_DB=ai_assistant
# Database URLs для каждого сервера
DATABASE_URL=postgresql://postgres:postgress@postgres:5432/ai_assistant
4. 通过 Docker Compose 启动
# Собрать образы
docker-compose build
# Запустить всю инфраструктуру
docker-compose up -d
# Проверить статус контейнеров
docker-compose ps
5. 检查工作性能
# Health checks для MCP серверов
curl http://localhost:8003/health # journal
curl http://localhost:8004/health # analytics
curl http://localhost:8005/health # scheduler
# Проверка MCPO
curl http://localhost:8100/health
# Проверка OpenWebUI
curl http://localhost:3000
6. 服务访问
- OpenWebUIhttp://localhost:3000 翻译为中文是:“本地主机上的3000端口”。不过,通常我们不会直接翻译这个URL地址,而是会根据上下文解释其含义,比如“这是运行在本地计算机上的一个Web服务器的地址,端口号为3000”
- **MCPO(海军军士长)**http://localhost:8100 翻译为中文是:“本地主机上的8100端口”。不过,通常我们不会直接翻译网址,而是根据上下文解释其含义。在这个例子中,网址表示的是在本地计算机上运行的一个服务或应用程序,可以通过8100端口访问
- **Ollama(注:这是一个专有名词,通常指代某个特定的软件、项目或公司名称,在中文中直接保留原名,不做翻译。)**http://localhost:11434 翻译为中文是:“本地主机上的11434端口”。不过,通常我们不会直接翻译网址,而是直接使用这个网址作为指示,或者简单地说明这是一个本地运行的服务器地址,端口为11434。如果非要翻译这个网址的结构,可以理解为“指向本地计算机(localhost)的11434端口的网址”。但具体翻译时,根据上下文,我们可能只需要指出这是一个本地服务器地址,无需详细翻译网址本身
- PostgreSQLlocalhost:5432(本地主机:5432端口)
项目结构
openwebui-mcp-server/
├── app/
│ ├── journal_server/ # Сервер дневника
│ │ ├── main.py # Точка входа
│ │ ├── tools/ # Реализация MCP tools
│ │ ├── resources/ # MCP resources
│ │ └── prompts/ # MCP prompts
│ ├── analytics_server/ # Сервер аналитики
│ │ └── ...
│ ├── scheduler_server/ # Сервер планировщика
│ │ └── ...
│ ├── config.py # Конфигурация
│ ├── healthcheck.py # Health check endpoint
│ └── lifespan.py # Lifecycle management
├── docker-compose.yml # Orchestration
├── Dockerfile # Образ для MCP серверов
├── mcpo.config.json # Конфигурация MCPO
├── pyproject.toml # Зависимости проекта
└── README.md # Этот файл
开发
本地启动独立服务器
# Journal server
uv run -m app.journal_server.main --host 0.0.0.0 --port 8003
# Analytics server
uv run -m app.analytics_server.main --host 0.0.0.0 --port 8004
# Scheduler server
uv run -m app.scheduler_server.main --host 0.0.0.0 --port 8005
查看日志
# Все сервисы
docker-compose logs -f
# Конкретный сервис
docker-compose logs -f mcp-server-journal
docker-compose logs -f openwebui
停止和删除
# Остановить все контейнеры
docker-compose down
# Удалить volumes (ВНИМАНИЕ: удалит все данные!)
docker-compose down -v
路线图
- [ ] 实现journal_server的基本功能
- [ ] 为所有服务器创建数据库架构
- [ ] 实现带有可视化功能的analytics_server
- [ ] 将 scheduler_server 与 APScheduler 集成
- [ ] 添加测试
- [ ] 持续集成/持续交付 (CI/CD) 流水线
- [ ] API文档
许可证
麻省理工学院(MIT)
联系方式
DVZolotarev(或根据具体语境可译为“佐洛塔廖夫DVZ”等,但此处保持原样以体现专有名词性) @dimkablin(注:这是一个用户名或特定标识,直接翻译为中文可能无实际意义,故保留原样)