GeekNews MCP Server 是一个基于 Model Context Protocol(MCP)的服务器,旨在从 GeekNews 网站获取文章和每周新闻。该项目使用 Python 实现,并利用 BeautifulSoup 进行网页抓取。为了减少服务器负载,它提供了每天自动解析数据并缓存的功能。
主要能力
- get_articles 工具:从 GeekNews 获取文章。可以指定文章类型(top、new、ask、show)和要返回的文章数量。每个响应包含标题、URL、点数、作者、时间、评论数和排名信息。使用缓存数据以减少服务器负载。
- get_weekly_news 工具:从 GeekNews 获取每周新闻。可以指定特定的每周新闻 ID 或获取最新的每周新闻。提供每周新闻的标题、编号、ID、内容、URL 和项目列表等信息。每个项目包含标题、URL 和排名信息。同样使用缓存数据以减少服务器负载。
- 缓存机制:每天自动解析数据并缓存。如果缓存数据有效,则不会向 GeekNews 服务器发送请求,而是使用缓存数据。缓存数据有效期为 24 小时,之后自动更新。调度器会定期检查缓存有效性并在需要时更新。
使用方式
通过 Smithery 安装: 在 MCP 配置文件中添加服务器信息:
{
"mcpServers": {
"geeknews-mcp-server": {
"command": "npx",
"args": [
"-y",
"@smithery/cli@latest",
"run",
"@the0807/geeknews-mcp-server",
"--key",
"smithery에서 발급 받은 키"
]
}
}
}
通过 Git Clone 安装:
git clone https://github.com/the0807/GeekNews-MCP-Server
cd GeekNews-MCP-Server
uv sync
uv venv
source .venv/bin/activate
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 获取文章或每周新闻的 MCP 客户端,例如 AI 助手或自动化工具。它可以帮助用户快速获取新闻摘要,而无需直接访问网站。
限制
- 该服务器依赖于 GeekNews 网站的 HTML 结构。如果网站结构发生变化,可能需要更新解析逻辑。
- 缓存数据存储在用户主目录下的
.cache/geeknews-mcp文件夹中。 - 目前暂未提供其他功能或平台支持的信息。