README
🚀 项目介绍 - GeekNews MCP 服务器
此项目是一个基于 Model Context Protocol (MCP) 的服务器,它使用 Python 实现,借助 BeautifulSoup 从 GeekNews 抓取文章。为减轻服务器负载,该项目支持每天自动解析数据并将其存储到缓存中。
🚀 快速开始
你可以通过以下两种方式使用本项目:
- 通过 Smithery 安装:点击 🚀 geeknews-mcp-server 进行安装。
- 在 MCP 设置文件中添加服务器信息:
{
"mcp_settings": {
"servers": {
"geeknews_mcp_server": {
"url": "http://localhost:5000",
"api_key": "your_api_key"
}
}
}
}
本地安装指南
如果你想在本地运行该项目,可按以下步骤操作:
- 克隆仓库:
git clone https://github.com/yourusername/geeknews-mcp-server.git
cd geeknews-mcp-server
- 环境配置:安装所需依赖项。
pip install -r requirements.txt
- 运行服务器:
python server.py
✨ 主要特性
工具展示
|
|
|
|:-------------------------:|:-------------------------:|
|
|
|
工具功能
get_articles工具:具备从 GeekNews 获取文章的能力。- 支持指定文章类型(top、new、ask、show)以及返回的文章数量。
- 每个响应会包含标题、URL、点数、作者、时间、评论数、排名等信息。
- 利用缓存数据,有效减少服务器负载。
get_weekly_news工具:可从 GeekNews 获取周报。- 能指定特定的周报 ID 或获取最新的周报。
- 提供周报的标题、编号、ID、内容、URL、项目列表等详细信息。
- 每个项目包含标题、URL、排名等信息。
- 同样使用缓存数据以降低服务器负载。
缓存功能
- 每天自动解析一次数据并存储到缓存中。
- 在缓存数据的有效期(24 小时)内,直接使用缓存数据,避免向 GeekNews 服务器发起请求。
- 定时器会定期检查缓存的有效性,并在必要时进行更新。
🔧 技术细节
代码结构
server.py:作为服务器的主程序,负责处理请求和响应。crawler.py:爬虫模块,专门用于从 GeekNews 抓取数据。cache_manager.py:缓存管理模块,负责缓存数据的读取、写入和更新操作。tools:包含各种辅助工具函数的目录。
注意事项
⚠️ 重要提示
项目依赖于 GeekNews 的 HTML 结构,若其结构发生变化,可能需要调整爬虫逻辑。
💡 使用建议
缓存数据存储在用户主目录下的
.cache/geeknews-mcp文件夹中。
Scan to join WeChat group