新闻抓取器MCP服务器(进行中)
一个全面的模型上下文协议(MCP)服务器,用于获取、处理新闻内容,并通过EPUB生成和OPDS支持为KOReader提供服务。
特点/特性
- RSS/Atom订阅源处理智能订阅源解析,支持多种来源
- 全文提取使用Trafilatura(首选)和Readability(备用)进行干净的文章提取
- 基于大型语言模型(LLM)的排名使用可配置的大型语言模型(LLM)提供商实现智能文章排序与摘要生成
- EPUB生成使用EbookLib将文章集合转换为EPUB格式
- OPDS 目录通过OPDS提供EPUB电子书,以便在KOReader及其他兼容阅读器上进行无线访问
- 可配置的偏好设置管理兴趣、来源、凭证和过滤偏好
- 缓存系统智能缓存以减少API调用并提高性能
- 支持多个大型语言模型(LLM)OpenAI、Anthropic以及本地大型语言模型支持(Ollama、LocalAI)
MCP 工具
服务器提供以下MCP工具:
核心工具
news_search_feeds
- 搜索并获取RSS/Atom订阅源 - 参数: topic (可选), sources (可选), limit (默认:10) - 返回:带有元数据的文章
news_fetch_article
- 从文章URL提取全文 - 参数: url (必填) - 返回:提取的文章内容和元数据
news_rank
- 使用启发式方法+大型语言模型(LLM)按主题相关性对文章进行排名 - 参数: items (文章列表), topic (字符串) - 返回:排名前5的文章
news_summarize
- 生成首页摘要(TL;DR) - 参数: collection (文章列表) - 返回:带项目符号的摘要及关键信息
news_build_epub
- 从文章集合创建EPUB文件 - 参数: articles (列表), title (字符串), filename (可选) - 返回:EPUB 文件路径和元数据
news_publish_opds
- 通过OPDS目录发布EPUB文件 - 参数: file_path (字符串) - 返回内容:OPDS URL 和说明
配置工具
news_get_preferences
- 获取当前用户偏好设置 - 返回:当前配置
news_update_preferences
- 更新用户偏好设置 - 参数: preferences 字典 - 返回值:更新后的偏好设置
安装
- 克隆或设置仓库:
cd /path/to/news_fetcher- 使用 uv 安装依赖项:
uv install- 设置您的偏好和凭据:
- 编辑 data/config/preferences.json 根据您的兴趣和偏好 - 编辑 data/config/sources.json 添加/修改RSS源 - 编辑 data/config/credentials.json 为LLM提供商添加API密钥
配置
用户偏好设置(data/config/preferences.json)
{
"interests": ["technology", "science", "world news"],
"sources": [],
"language": "en",
"max_articles_per_feed": 20,
"enable_full_text": true,
"preferred_formats": ["epub", "html"],
"exclude_domains": ["example.com"],
"keywords_boost": ["AI", "technology", "innovation"],
"keywords_filter": ["spam", "advertisement"]
}大型语言模型配置(data/config/credentials.json)
{
"llm": {
"provider": "openai",
"api_key": "your-api-key-here",
"model": "gpt-3.5-turbo",
"base_url": null,
"max_tokens": 1000,
"temperature": 0.7
}
}支持的LLM(大型语言模型)提供商:
- OpenAI(开放人工智能研究所)设置
providerto"openai"添加您的API密钥 - Anthropic(公司名,可译为“安萨里克”或根据官方中文名翻译,此处采用音译)设定/套装
provider到;向;对于;为了;由于"anthropic",添加您的API密钥 - 本地大型语言模型(Local LLM)设置
provider到;向;朝"local",设定base_url到您的本地服务器(例如。,"http://localhost:11434"(适用于Ollama)
用法
运行MCP服务器
python main.py服务器将:
- 启动MCP服务器并注册所有工具
- 在端口8000(可配置)上启动OPDS服务器
- 从(指定位置)加载配置
data/config/
与KOReader配合使用
- 确保OPDS服务器正在运行
- 在KOReader中,前往“文件管理器”→“添加OPDS目录”
- 添加目录URL:
http://localhost:8000/opds - 无线浏览并下载EPUB电子书
示例工作流程
- 搜索文章:
# Via MCP tool
result = news_search_feeds(topic="artificial intelligence", limit=20)- 按相关性对文章进行排序:
top_articles = news_rank(result["articles"], "machine learning developments")- 生成摘要:
summary = news_summarize(top_articles)- 创建EPUB文件:
epub_result = news_build_epub(
articles=top_articles,
title="AI News Digest - Today"
)- 通过OPDS发布:
opds_result = news_publish_opds(epub_result["epub_path"])RSS信息源
该服务器提供了针对各种主题的精选RSS源。您可以:
- 通过以下方式添加来源
data/config/sources.json - 使用MCP工具以编程方式添加源
- 按主题/类别整理资料来源
默认类别
- 技术TechCrunch、Ars Technica、Wired、The Verge
- 科学《自然》、《科学》杂志、《新科学家》
- 人工智能AI新闻,人工智能新闻
- 商业彭博社、华尔街日报、财富杂志
- 将军美国有线电视新闻网(CNN)、英国广播公司(BBC)、路透社、美国国家公共电台(NPR)
做出贡献
- 为仓库创建分支(或:为仓库进行分叉)
- 创建一个特性分支
- 做出你的更改
- 如适用,请添加测试
- 提交一个拉取请求
许可证
这个项目是开源的。详见LICENSE文件。
依赖项
关键依赖项:
- MCP(根据上下文,MCP可以有多种含义,如“最小化成本生产”、“多协议控制器”等,具体翻译需结合语境)模型上下文协议框架
- feedparser(用于解析RSS/Atom订阅源的Python库)RSS/Atom订阅源解析
- “Trafilatura”在中文中可以翻译为“拉丝机”或“拉丝工艺”,具体取决于上下文是指设备还是工艺。如果是指设备,则通常称为“拉丝机”;如果是指加工过程,则称为“拉丝工艺”。网页内容提取
- 可读性-lxml备用内容提取
- ebooklib(电子书库)EPUB生成
- FastAPIOPDS服务器
- 请求:HTTP 客户端
- BeautifulSoup4HTML解析
