项目简介

Jack 是一个智能媒体库管理代理,旨在通过自然语言聊天界面(如Telegram)帮助用户管理其个人媒体收藏。它利用大型语言模型(LLMs)进行理解和交互,并使用Model Context Protocol (MCP) 架构来集成不同的功能模块,例如下载、文件组织等。Jack 不仅是一个聊天机器人,它还包含多个可独立运行的MCP服务器,这些服务器提供了具体的媒体管理工具和资源。

主要功能点

  • Telegram 聊天交互: 用户可以通过 Telegram 机器人与 Jack 进行自然语言对话,发布媒体管理指令。
  • 智能LLM集成: 支持通过 OpenRouter API 访问多种 LLM(如 Gemini, GPT-4),以理解用户意图并生成智能响应。
  • 模块化 MCP 服务器: 核心功能被拆分为独立的 MCP 服务器,包括:
    • MCP 下载服务器: 负责搜索和下载电影、剧集等内容(通过集成 Jackett 和 qBittorrent)。
    • MCP 组织服务器: 负责管理媒体文件,包括列出目录、列出文件、移动文件以及清理下载目录。
    • MCP 命令执行服务器 (开发中): 用于执行系统级命令行操作。
  • Docker 部署友好: 提供完整的 Docker Compose 配置,方便用户一键部署所有必需的媒体服务,包括 Plex (媒体服务器)、qBittorrent (BT下载客户端)、Jackett (BT索引器代理) 和 FileBrowser (文件浏览器)。

安装步骤

本项目的安装主要通过 Docker Compose 进行。

  1. 克隆仓库:

    git clone https://github.com/Dethon/Agent.git
    cd Agent
  2. 配置环境变量: 进入 'DockerCompose' 目录,并复制 '.env.example' 文件为 '.env'。

    cd DockerCompose
    cp .env.example .env

    然后编辑 '.env' 文件,配置以下必要的环境变量:

    • 'OPENROUTER__APIKEY': 您的 OpenRouter API 密钥,用于访问 LLM。
    • 'TELEGRAM__BOTTOKEN': 您的 Telegram 机器人令牌。
    • 'TELEGRAM__ALLOWEDUSERNAMES__0': 允许与机器人交互的 Telegram 用户名(请替换为您的用户名)。
    • 'JACKETT__APIKEY': 您的 Jackett API 密钥。
    • 'QBITTORRENT__USERNAME': qBittorrent 的管理用户名,默认为 'admin'。
    • 'QBITTORRENT__PASSWORD': qBittorrent 的管理密码。
    • 'PUID', 'PGID': 用于 Docker 容器的文件权限设置,通常为您的用户ID和组ID。
  3. 运行 Docker Compose 堆栈: 在 'DockerCompose' 目录下执行以下命令,启动所有服务:

    docker compose up -d

    这将启动 Jack AI 代理、MCP 服务器以及 Plex, qBittorrent, Jackett 和 FileBrowser 等所有相关服务。

服务器配置

本项目包含多个MCP服务器 ('mcp-download' 和 'mcp-organize'),它们通过 HTTP 传输协议提供服务。 对于 MCP 客户端,您可以按如下方式配置以连接到这些服务器:

  • MCP 下载服务器配置示例: 在 Docker Compose 环境中,'mcp-download' 服务将在内部网络中以 'mcp-download' 作为主机名运行,其对外映射的端口是 '6001'。 MCP 客户端需要配置服务器的启动命令和参数来连接。例如,如果 MCP 客户端运行在与 Docker Compose 栈相同的主机上:

    {
      "name": "MCP Download Server",
      "description": "提供媒体内容的搜索、下载、状态查询和清理功能。",
      "command": "docker compose",
      "args": [
        "-f", "DockerCompose/docker-compose.yaml",
        "up",
        "mcp-download",
        "--detach"
      ],
      "endpoint": "http://localhost:6001/sse"
    }
    • 'name': 服务器的名称,例如 "MCP Download Server"。
    • 'description': 服务器的功能描述。
    • 'command': 启动 MCP 下载服务器的命令。这里使用 'docker compose' 来启动 'mcp-download' 服务。
    • 'args': 传递给 'command' 的参数。'-f DockerCompose/docker-compose.yaml' 指定 Compose 文件路径,'up mcp-download' 启动 'mcp-download' 服务,'--detach' 在后台运行。
    • 'endpoint': MCP 下载服务器的通信端点。客户端通过 SSE (Server-Sent Events) 协议连接。
  • MCP 组织服务器配置示例: 在 Docker Compose 环境中,'mcp-organize' 服务将在内部网络中以 'mcp-organize' 作为主机名运行,其对外映射的端口是 '6002'。 MCP 客户端需要配置服务器的启动命令和参数来连接。例如,如果 MCP 客户端运行在与 Docker Compose 栈相同的主机上:

    {
      "name": "MCP Organize Server",
      "description": "提供媒体文件的列出、移动和下载目录清理功能。",
      "command": "docker compose",
      "args": [
        "-f", "DockerCompose/docker-compose.yaml",
        "up",
        "mcp-organize",
        "--detach"
      ],
      "endpoint": "http://localhost:6002/sse"
    }
    • 'name': 服务器的名称,例如 "MCP Organize Server"。
    • 'description': 服务器的功能描述。
    • 'command': 启动 MCP 组织服务器的命令。这里使用 'docker compose' 来启动 'mcp-organize' 服务。
    • 'args': 传递给 'command' 的参数。'-f DockerCompose/docker-compose.yaml' 指定 Compose 文件路径,'up mcp-organize' 启动 'mcp-organize' 服务,'--detach' 在后台运行。
    • 'endpoint': MCP 组织服务器的通信端点。客户端通过 SSE (Server-Sent Events) 协议连接。

基本使用方法

  1. 启动 Telegram 聊天: 在 Telegram 中与您的机器人开始一个群组聊天,并确保启用了话题 (threads) 功能。
  2. 发送命令: 与机器人的对话应以斜杠 '/' 开头,例如:
    • '/download movie title':命令机器人搜索并下载指定电影。
    • '/status':查询当前下载任务的状态。
    • '/organize media':命令机器人组织已下载的媒体文件到媒体库中。

信息

分类

生产力应用