新闻研究代理

新闻研究代理是一个MCP服务器,用于从配置的新闻源爬取头条新闻并存储到PostgreSQL数据库,支持生成GPU加速的嵌入向量,适用于多代理工作流集成。

  • by Adrasteon
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Adrasteon/mcp-news-agents

使用说明

新闻研究代理

这个MCP服务器(新闻研究代理)会从配置的来源中抓取热门新闻文章,并将它们存储在生产环境中 justnews PostgreSQL 18 集群。它完全符合 MCP SDK 标准,并通过 FastMCP 暴露其工具。

特点/特性

  • 使用crawl4ai来获取当前的热门新闻文章。
  • 使用规范URL和来源元数据对输出进行规范化,并持久化存储 public.articles 并且 public.article_source_map。
  • 可选地生成由GPU支持的嵌入(pgvector),并采用受保护的内存分配。
  • 为摄取吞吐量、故障和延迟发出Prometheus指标。
  • 设计用于集成到多代理工作流中,并通过FastMCP暴露接口。

设置(Conda/MCP SDK)

  1. 创建并激活conda环境:

    conda env update -f environment.yml --prune
    conda activate news-research-agent-env
    
  2. 提供数据库凭据:

    export JUSTNEWS_DB_PASSWORD="<production-password>"
    

    或者,运行 ./setup_env.sh 生成一个可重用的环境文件,并且 在启动前对其进行初始化。

  3. 运行代理:

    python main.py
    
  4. 在您的MCP客户端(例如VS Code)中将此代理注册为stdio MCP服务器。


MCP SDK 最佳实践

  • 用途 FastMCP 和 app.tool() 用于工具注册。
  • 工具模式通过函数签名和文档字符串来定义(不使用ToolInput/ToolOutput)。
  • 为了确保可靠性和可重复性,所有依赖项(MCP 除外)均通过提供的 Conda 环境进行安装。

配置

代理从以下来源加载配置值(按优先级从高到低排列):

  1. 环境变量。
  2. config.json (可选,同一目录)。
  3. 数据类的默认值。

关键环境变量:

变量 描述 默认值
JUSTNEWS_DB_PASSWORD 需要密码以进行 justnews_user 角色。使用 ./setup_env.sh 安全地生成/存储。 无(必填)
JUSTNEWS_DB_HOST 数据库主机。 localhost
JUSTNEWS_DB_PORT 数据库端口。 5432
JUSTNEWS_DB_NAME 数据库名称。 justnews
JUSTNEWS_DB_USER 数据库用户。 justnews_user
NEWS_SOURCE_BATCH_SIZE 每批获取的数据源数量。 5
NEWS_CRAWL_PARALLELISM 并发爬取任务。 1
NEWS_CRAWL_TIMEOUT_SECONDS 每次抓取的超时时间(秒)。 120
NEWS_MAX_SOURCE_FAILURES 在中止前可容忍的最大故障数。 5
NEWS_EMBEDDING_ENABLED 切换嵌入更新。 true
NEWS_EMBEDDING_MODEL 句子变换器模型ID。 sentence-transformers/all-mpnet-base-v2
NEWS_EMBEDDING_BATCH 嵌入批次大小。 8
NEWS_EMBEDDING_GPU_FRACTION GPU内存使用上限。 0.65
NEWS_LOG_LEVEL 日志详细程度 (DEBUG, INFO等)。 INFO

看 agent_config.py 用于全面的默认值设置和类型验证。

管道概述

  1. 从(某处)获取一批候选源 public.sources.
  2. 通过(遵循配置的并行度和超时设置)异步抓取每个来源 crawl4ai。
  3. 规范化文章内容,确保规范URL、来源元数据以及进行重复检测 public.articles.
  4. 持久化新文章和来源行(public.article_source_map) 具有瞬时故障自动恢复功能。
  5. 可选地在GPU上生成向量嵌入,同时遵守配置的内存上限,并将文章标记为已分析。
  6. 在整个数据摄入过程中发射Prometheus指标,以实现可观测性。

操作手册(或运行手册)

  • 强制凭证设置 JUSTNEWS_DB_PASSWORD 在启动之前。其他连接覆盖设置可以通过环境变量或其他方式提供 config.json。
  • **GPU嵌入(或GPU嵌入表示)**安装 torch 并且 sentence-transformers (见 requirements.txt) 以启用嵌入功能。如果没有它们,智能体将优雅地退化。
  • 健康终点指标: /health 回报;收益 ok; /shutdown 触发优雅退出。
  • 指标Prometheus 导出的 :9601 (可配置于 main.py)。 关键计数器: research_articles_stored_total, research_sources_failed_total, research_embedding_failures_total。
  • 故障处理一旦摄入即中止 NEWS_MAX_SOURCE_FAILURES 已超出;请检查日志以查找违规的源URL。
  • 参考文档本地参考材料应存放在下方 ./reference/ (被 Git 忽略)。

延长;扩展

  • 调整 PostgreSQL 连接字符串 main.py 按需。
  • 为高级研究工作流添加更多工具或逻辑。
  • 扩展 agent_config.py 使用新的配置值类型并对其进行引用 main.py。
  • 对于自定义GPU模型,请覆盖(或重写) NEWS_EMBEDDING_MODEL 并相应地调整批量大小/内存比例。

许可证

麻省理工学院(MIT)