智能助手服务器套件

一套集成了日记记录、情绪分析和自动提醒功能的智能助手服务器系统,适用于个人情绪管理和日常任务自动化。

  • by dimkablin
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 dimkablin/openwebui-mcp-server

使用说明

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(注:这是一个用户名或特定标识,直接翻译为中文可能无实际意义,故保留原样)