项目简介
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构建。
- 克隆仓库:
git clone https://github.com/SiddanthEmani/daily-ai-times.git cd daily-ai-times - 安装Python依赖 (后端处理部分):
pip install -r src/backend/requirements.txt - 安装Node.js依赖 (MCP服务器部分):
npm install # 在项目根目录运行 - 配置环境变量:
创建或修改项目根目录下的 '.env' 文件,填入GitHub和AI服务API密钥:
确保 'GITHUB_TOKEN' 具有对仓库执行 'workflow_dispatch' 和 'contents' 读写权限,以便触发工作流和修改配置。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 # 可选,用于音频生成
服务器配置
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": "要验证的特定新闻源 (可选,不提供则验证所有)" } } } ] }
基本使用方法
-
启动MCP服务器: 在项目根目录下运行以下命令启动服务器。服务器将通过标准I/O与MCP客户端通信。
npm run mcp-server服务器启动后,您会在终端看到日志输出,表明服务器已准备好接收MCP客户端的请求。
-
通过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与计算