项目简介

Euphoria项目旨在构建具有“人情味”的AI角色,能够适应语调、使用工具、拥有记忆并支持网页交付。其中,MCP工具服务是其核心后端组件,为这些AI角色提供多样化的外部功能和上下文信息,使其能够执行网页搜索、分析趋势、管理日记等任务。这些工具通过标准化的JSON-RPC协议进行通信,确保了与MCP兼容的LLM客户端的无缝集成。

主要功能点

  • 网页搜索: 通过DuckDuckGo即时答案API,获取最新的网页信息和相关资源,支持引用和信息摘要。
  • 趋势分析: 利用Google Trends数据,追踪特定关键词或主题在不同地区和时间范围内的流行度变化,帮助理解热点。
  • 情感分析: 对文本片段进行轻量级情感分析,识别对话中的积极、消极或中性情绪,并突出显示情感关键词。
  • 数字日记 (Journal): 允许用户保存个人反思条目,记录心情和标签,并支持检索近期日记以回顾上下文或提供日记写作提示。
  • 维基百科查询: 提供快速访问维基百科的摘要信息,并支持搜索页面标题和相关片段,用于获取背景知识。
  • 图片搜索 (Unsplash): 根据查询词、方向和颜色偏好,从Unsplash获取高质量的图片,以匹配用户的氛围和情绪。
  • 音乐推荐 (Spotify): 基于用户的心情或活动(如“专注”、“健身”)推荐Spotify播放列表和歌曲,需配置Spotify API密钥。
  • 励志名言 (ZenQuotes): 从ZenQuotes服务获取每日肯定语或批量励志名言,支持按关键词筛选,为用户提供积极情绪支持。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/ProjectEuphoria/Euphoria.git
  2. 进入项目目录:
    cd Euphoria
  3. 安装项目依赖:
    npm install
  4. 配置环境变量: 在项目根目录创建 '.env' 文件,并根据需要填写以下必要的API密钥:
    # Unsplash 图片搜索工具所需
    UNSPLASH_ACCESS_KEY=your_unsplash_access_key_here
    
    # Spotify 音乐推荐工具所需
    SPOTIFY_CLIENT_ID=your_spotify_client_id_here
    SPOTIFY_CLIENT_SECRET=your_spotify_client_secret_here
    
    # 日记功能默认路径,可选
    JOURNAL_ROOT=./data/journal 
    
    # 其他工具(如网页搜索、趋势分析、情感分析、维基百科、名言警句)无需额外API Key
  5. 构建 MCP 服务器文件: 由于MCP服务器是TypeScript文件,需要先编译。此项目没有独立的MCP服务器构建脚本,但通常 'npm run build' 命令会编译所有TS文件到 'dist' 目录。请确保在运行MCP服务器前执行构建。
    npm run build

服务器配置(供MCP客户端使用)

MCP客户端可以通过标准输入/输出 (Stdio) 传输协议与这些MCP工具服务器通信。以下是 MCP 客户端配置的JSON格式示例,用于启动和连接项目中的任一 MCP 服务器。MCP客户端应将以下JSON配置作为其服务器列表的一部分。

请注意: 'command' 字段中的路径 'dist/mcp/servers/' 假定您已经运行了 'npm run build' 命令,并且TypeScript文件已编译为JavaScript文件并放置在该目录下。

  • Web 搜索 MCP 服务器 ('genz-web-search'):
    {
      "name": "genz-web-search",
      "command": "node",
      "args": ["dist/mcp/servers/webSearch.server.js"],
      "description": "提供轻量级网页搜索功能,通过DuckDuckGo即时答案API获取信息。",
      "protocol": "stdio"
    }
  • 趋势分析 MCP 服务器 ('web-trends'):
    {
      "name": "web-trends",
      "command": "node",
      "args": ["dist/mcp/servers/trends.server.js"],
      "description": "提供Google Trends数据,用于分析话题热度和趋势。",
      "protocol": "stdio"
    }
  • 情感分析 MCP 服务器 ('emotion-analyzer'):
    {
      "name": "emotion-analyzer",
      "command": "node",
      "args": ["dist/mcp/servers/emotion.server.js"],
      "description": "执行文本情感分析,识别积极、消极或中性情绪。",
      "protocol": "stdio"
    }
  • 日记反思 MCP 服务器 ('journal-reflections'):
    {
      "name": "journal-reflections",
      "command": "node",
      "args": ["dist/mcp/servers/journal.server.js"],
      "description": "存储和检索用户的日记反思条目,并提供日记提示。",
      "protocol": "stdio"
    }
  • 维基百科 MCP 服务器 ('wikipedia-bridge'):
    {
      "name": "wikipedia-bridge",
      "command": "node",
      "args": ["dist/mcp/servers/wikipedia.server.js"],
      "description": "快速访问维基百科的摘要和主题提取,以获取背景知识。",
      "protocol": "stdio"
    }
  • Unsplash 图片搜索 MCP 服务器 ('unsplash-curator'):
    {
      "name": "unsplash-curator",
      "command": "node",
      "args": ["dist/mcp/servers/unsplash.server.js"],
      "description": "根据用户的情绪和氛围,获取平静、美观的Unsplash图像。",
      "protocol": "stdio"
    }
  • Spotify 音乐推荐 MCP 服务器 ('spotify-mood-curator'):
    {
      "name": "spotify-mood-curator",
      "command": "node",
      "args": ["dist/mcp/servers/spotify.server.js"],
      "description": "为用户提供与心情相符的Spotify播放列表和歌曲推荐。",
      "protocol": "stdio"
    }
  • 名言警句 MCP 服务器 ('quotes-feeder'):
    {
      "name": "quotes-feeder",
      "command": "node",
      "args": ["dist/mcp/servers/quotes.server.js"],
      "description": "从ZenQuotes获取积极肯定和励志名言。",
      "protocol": "stdio"
    }

基本使用方法

这些MCP服务器设计为由MCP兼容的LLM客户端在后台调用。一旦MCP客户端根据上述配置启动并连接到这些服务器,它将能够通过标准JSON-RPC请求(例如 'ListTools' 或 'CallTool')发现并利用这些工具的功能。

  • 发现工具: 客户端可以发送 'ListTools' 请求来获取服务器提供的所有工具列表及其详细的输入参数 Schema。
  • 调用工具: 当LLM需要执行特定任务时(例如,用户提问“今天的头条新闻是什么?”),它会识别出最合适的工具(如 'web_search'),然后通过 'CallTool' 请求将必要的参数发送给MCP服务器。
  • 接收结果: MCP服务器执行工具逻辑后,会将结果以JSON-RPC响应的形式返回给LLM客户端,LLM可以进一步处理这些信息以生成回复或采取其他行动。

例如,当LLM需要获取实时信息时,它会调用'web_search'工具;当用户要求记录想法时,它会调用'add_reflection_entry'工具。这些MCP服务器作为LLM的外部功能层,极大地扩展了其能力范围。

信息

分类

AI与计算