新闻文章抓取服务器

一个基于Python的MCP服务器,用于从GeekNews抓取文章并提供缓存功能以减少服务器负载。

  • by the0807
  • Python
  • 本地部署
  • 18 星标
  • 更新于
在 GitHub 查看 the0807/GeekNews-MCP-Server

使用说明

GeekNews MCP服务器

这个项目 极客新闻获取文章的Model Context Protocol(MCP)服务器。它是用Python实现的,使用Beautiful Soup执行Web抓取。为减少服务器负载,我们提供每天自动解析一次数据并将其存储在缓存中的功能。

功能

“工具”(Tools)

  • get_articles 工具:从GeekNews获取文章的功能

    • 可以指定文章类型(top、new、ask、show)和要返回的文章数量
    • 每个响应都包含标题、URL、点、作者、时间、评论数量和排名信息。
    • 使用缓存的数据减少服务器负载
  • get_weekly_news 工具:从GeekNews获取每周新闻的功能

    • 可以指定特定的每周新闻ID或导入最近的每周新闻
    • 提供每周新闻的标题、编号、ID、内容、URL、项目列表等信息
    • 每个项目都包含标题、URL和排名信息
    • 使用缓存的数据减少服务器负载

缓存功能

  • 每天自动解析一次数据并将其保存在缓存中
  • 如果缓存的数据有效,请使用缓存的数据而不向GeekNews服务器请求
  • 缓存数据有效期为24小时,之后将自动刷新
  • 调度程序定期检查缓存的有效性,必要时更新

使用方法

  • 使用Smithery安装

    🚀 极客新闻mcp服务器

  • 将服务器信息添加到MCP设置文件

    {
    "mcpServers": {
       "geeknews-mcp-server": {
          "command": "npx",
          "args": [
          "-y",
          "@smithery/cli@latest",
          "run",
          "@the0807/geeknews-mcp-server",
          "--key",
          "smithery에서 발급 받은 키"
          ]
       }
    }
    }
    

本地安装方法

  1. 克隆

    git clone https://github.com/the0807/GeekNews-MCP-Server
    cd GeekNews-MCP-Server
    
  2. 用uv设置环境

    uv sync
    
  3. 运行虚拟环境

    uv venv
    source .venv/bin/activate
    
  4. 使用MCP Inspector测试服务器

    uv run mcp
    mcp dev main.py
    
    # 터미널에 나오는 URL(MCP Inspector)로 접속하여 서버 테스트
    

代码结构

  • src/models.py:定义存储文章信息的数据类
  • src/parser.py:解析GeekNews网站的HTML以提取文章信息
  • src/client.py:从GeekNews网站获取数据的HTTP客户端
  • src/config.py:定义设置和常量
  • src/cache.py:提供缓存管理
  • src/scheduler.py:定期数据更新计划程序
  • src/server.py:实施MCP服务器
  • main.py:服务器运行入口

[!注意]

  • 此服务器依赖于GeekNews网站的HTML结构。如果网站结构发生更改,可能需要更新解析逻辑。
  • 缓存数据位于用户的主目录下 .cache/geeknews-mcp 存储在文件夹中。