项目简介

Daily AI Times MCP服务器是基于Model Context Protocol (MCP) 构建的后端服务,旨在为大型语言模型(LLM)客户端提供标准化接口,以访问最新的AI相关新闻、进行趋势分析和管理新闻来源。它将复杂的新闻收集、AI处理和数据管理逻辑封装为LLM可调用的工具,并通过JSON-RPC协议进行通信。

主要功能点

  • 新闻内容聚合: 收集并聚合来自多个来源的AI和技术新闻文章。
  • 智能筛选与分类: 利用多代理AI系统对文章进行评分、共识过滤和深度分析,自动分类为头条、文章和研究论文。
  • 趋势分析: 提供新闻主题、来源、关键词和领域趋势的洞察。
  • 新闻源管理: 允许动态添加、更新和验证新闻RSS/API源,实现灵活的内容扩展。
  • 报告生成: 可按需生成新闻摘要报告,支持Markdown、JSON和HTML格式。
  • GitHub Actions集成: 工具能够触发GitHub Actions工作流,实现新闻收集和处理流程的自动化。

安装步骤

本MCP服务器使用Node.js和Python构建。

  1. 克隆仓库:
    git clone https://github.com/SiddanthEmani/daily-ai-times.git
    cd daily-ai-times
  2. 安装Python依赖 (后端处理部分):
    pip install -r src/backend/requirements.txt
  3. 安装Node.js依赖 (MCP服务器部分):
    npm install # 在项目根目录运行
  4. 配置环境变量: 创建或修改项目根目录下的 '.env' 文件,填入GitHub和AI服务API密钥:
    GITHUB_OWNER=SiddanthEmani
    GITHUB_TOKEN=YOUR_GITHUB_PERSONAL_ACCESS_TOKEN # 需要对仓库拥有 repo 权限
    GROQ_API_KEY=YOUR_GROQ_API_KEY
    GEMINI_API_KEY=YOUR_GEMINI_API_KEY # 可选,用于音频生成
    确保 'GITHUB_TOKEN' 具有对仓库执行 'workflow_dispatch' 和 'contents' 读写权限,以便触发工作流和修改配置。

服务器配置

MCP客户端需要以下信息来连接和使用此服务器:

{
  "server_name": "daily-ai-times-mcp",
  "command": "node",
  "args": [
    "src/services/mcp-server/server.js"
  ],
  "description": "Daily AI Times MCP服务器提供AI新闻聚合、趋势分析和新闻源管理工具。",
  "tools": [
    {
      "name": "trigger_news_collection",
      "description": "触发GitHub Action以收集最新AI新闻",
      "parameters": {
        "sources": { "type": "array", "description": "要收集的特定新闻源列表 (可选)" },
        "force_refresh": { "type": "boolean", "description": "强制刷新,即使数据较新 (可选)" }
      }
    },
    {
      "name": "get_latest_news",
      "description": "获取最新的AI新闻文章",
      "parameters": {
        "category": { "type": "string", "enum": ["all", "Research", "Industry", "Open Source", "Startups", "Government", "Media"], "description": "按新闻类别过滤 (可选)" },
        "limit": { "type": "integer", "description": "返回文章数量限制 (1-50)", "default": 10 },
        "min_score": { "type": "number", "description": "最低相关性分数 (0-100)", "default": 0 }
      }
    },
    {
      "name": "search_news",
      "description": "搜索已收集的新闻文章",
      "parameters": {
        "query": { "type": "string", "description": "搜索查询词" },
        "date_from": { "type": "string", "description": "开始日期 (YYYY-MM-DD)", "format": "date" },
        "date_to": { "type": "string", "description": "结束日期 (YYYY-MM-DD)", "format": "date" }
      },
      "required": ["query"]
    },
    {
      "name": "analyze_trends",
      "description": "分析AI新闻主题趋势",
      "parameters": {
        "days": { "type": "integer", "enum": [7, 30, 90], "description": "分析天数", "default": 7 },
        "top_n": { "type": "integer", "description": "返回热门条目数量", "default": 10 }
      }
    },
    {
      "name": "add_news_source",
      "description": "添加新的RSS/API新闻源",
      "parameters": {
        "name": { "type": "string", "description": "新闻源的唯一标识符" },
        "url": { "type": "string", "description": "RSS订阅或API的URL" },
        "type": { "type": "string", "enum": ["rss", "api"], "description": "源类型", "default": "rss" },
        "category": { "type": "string", "enum": ["Research", "Industry", "Open Source", "Startups", "Government", "Media", "Other"], "description": "新闻源类别", "default": "Other" },
        "priority": { "type": "integer", "description": "新闻源优先级 (1=最高, 10=最低)", "default": 5 },
        "tags": { "type": "array", "description": "新闻源标签" },
        "reliability": { "type": "number", "description": "可靠性评分 (0-1)", "default": 0.8 },
        "updateFrequency": { "type": "string", "enum": ["hourly", "daily", "weekly"], "description": "更新频率", "default": "daily" },
        "language": { "type": "string", "description": "新闻源主要语言", "default": "en" },
        "description": { "type": "string", "description": "新闻源的人类可读描述" }
      },
      "required": ["name", "url"]
    },
    {
      "name": "generate_summary_report",
      "description": "生成最新AI新闻的摘要报告",
      "parameters": {
        "format": { "type": "string", "enum": ["markdown", "json", "html"], "description": "报告格式", "default": "markdown" },
        "include_trends": { "type": "boolean", "description": "是否包含趋势分析", "default": true }
      }
    },
    {
      "name": "get_sources_config",
      "description": "获取当前新闻源配置",
      "parameters": {
        "category": { "type": "string", "enum": ["Research", "Industry", "Open Source", "Startups", "Government", "Media"], "description": "按类别过滤 (可选)" },
        "enabled_only": { "type": "boolean", "description": "只返回已启用新闻源", "default": true }
      }
    },
    {
      "name": "update_source_config",
      "description": "更新现有新闻源的配置",
      "parameters": {
        "name": { "type": "string", "description": "要更新的新闻源名称" },
        "enabled": { "type": "boolean", "description": "启用/禁用新闻源" },
        "priority": { "type": "integer", "description": "更新新闻源优先级 (1-10)" },
        "reliability": { "type": "number", "description": "更新可靠性评分 (0-1)" }
      },
      "required": ["name"]
    },
    {
      "name": "validate_sources",
      "description": "验证所有配置的新闻源的可访问性和格式",
      "parameters": {
        "sources": { "type": "array", "description": "要验证的特定新闻源 (可选,不提供则验证所有)" }
      }
    }
  ]
}

基本使用方法

  1. 启动MCP服务器: 在项目根目录下运行以下命令启动服务器。服务器将通过标准I/O与MCP客户端通信。

    npm run mcp-server

    服务器启动后,您会在终端看到日志输出,表明服务器已准备好接收MCP客户端的请求。

  2. 通过MCP客户端调用工具: 您可以使用任何支持Model Context Protocol的LLM客户端来连接此服务器,并通过JSON-RPC调用其定义的工具。例如,调用 'get_latest_news' 工具来获取最新文章:

    • 请求示例 (JSON-RPC):

      {
          "jsonrpc": "2.0",
          "id": 1,
          "method": "call_tool",
          "params": {
              "name": "get_latest_news",
              "arguments": {
                  "category": "Research",
                  "limit": 5
              }
          }
      }
    • 响应示例 (JSON-RPC): 服务器将返回一个包含最新研究文章列表的JSON响应。

    • 其他工具调用: 类似地,您可以调用 'trigger_news_collection' 来启动新闻收集流程,或 'analyze_trends' 来获取AI新闻趋势。

注意事项

  • 确保您的GitHub Personal Access Token具有足够的权限('repo' 权限通常涵盖工作流调度和内容读写)。
  • MCP服务器的Python后端('src/backend')主要通过GitHub Actions触发运行,负责实际的新闻收集和AI处理。MCP服务器(Node.js部分)则充当API网关,将LLM的请求转换为对GitHub API和预生成数据的操作。
  • MCP服务器自身不缓存数据,而是通过读取GitHub Pages上由GitHub Actions生成的'latest.json'来提供最新新闻。
  • 'add_news_source' 和 'update_source_config' 工具会创建Pull Request到GitHub仓库,需要手动合并才能使更改生效。

信息

分类

AI与计算