mcpField
F
FeedKit

FeedKit

本地服务
github.com/QuartzUnit搜索与检索028 周前更新

关于 FeedKit

FeedKit 是用于收集和搜索 RSS/Atom 订阅源的 Python 包,提供精选目录、命令行、Python API、SQLite 存储和 MCP 工具。

主要功能

  1. 01精选订阅源目录
  2. 02订阅订阅源
  3. 03异步收集内容
  4. 04SQLite 文章存储
  5. 05全文搜索文章
  6. 06命令行和 Python API

适用场景

  1. 01按主题或语言查找订阅源
  2. 02收集订阅源中的文章
  3. 03搜索已收集的文章
  4. 04通过 MCP 客户端连接订阅源工作流

MCP 相关

其 stdio MCP 服务提供获取订阅源、搜索目录和文章、管理订阅、收集内容及检索最新文章的工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"arknill-feedkit": {
"command": "uvx",
"args": [
"feedkit"
]
}
}
}
启动命令uvx feedkit

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypifeedkit0.1.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

FeedKit

PyPI Python License Tests

한국어 문서 · llms.txt

RSS/Atom 源收集,包含 444 个精选且经过验证的源。CLI + Python API + MCP 服务。

快速入门

pip install feedkit

feedkit search cloudflare           # search the built-in catalog
feedkit subscribe-catalog -c technology   # subscribe to all 68 tech feeds
feedkit collect                     # fetch all subscriptions (async parallel)
feedkit find "kubernetes"           # full-text search collected articles

安装

pip install feedkit             # core (CLI + Python API)
pip install "feedkit[mcp]"      # + MCP server
pip install "feedkit[all]"      # + MCP + OPML import/export

要求: Python 3.11+

工作原理

flowchart LR
    A["📋 Catalog\n444 curated feeds"] --> B["Subscribe\nselect feeds"]
    B --> C["🔄 Collect\nfetch new entries"]
    C --> D["📦 Store\nSQLite database"]
    D --> E["🔍 Query\nfilter & retrieve"]

CLI 参考

目录命令
feedkit search [QUERY]

搜索内置的 444 个精选源目录。

feedkit search aws                    # search by title or domain
feedkit search --category science     # filter by category
feedkit search --language ko          # filter by language
feedkit search -c finance -l en -n 50 # combine filters
feedkit search -j                     # JSON output (for piping)
选项简写默认值说明
--category-c按类别筛选
--language-l按语言代码筛选(en、ko、ja、zh)
--limit-n20最大结果数
--json-output-j以 JSON 格式输出
feedkit categories

列出所有可用的目录类别。

$ feedkit categories
  academia
  finance
  pets
  science
  society
  technology
feedkit stats

显示目录和本地订阅统计信息。

$ feedkit stats
Catalog: 444 feeds
  academia: 13
  finance: 89
  pets: 27
  science: 128
  society: 119
  technology: 68

Local: 68 subscriptions, 1,247 articles
订阅命令
feedkit subscribe <URL>

订阅单个源。

feedkit subscribe https://blog.cloudflare.com/rss/
feedkit subscribe https://example.com/rss -c tech -t "My Feed"
选项简写说明
--category-c类别标签
--title-t覆盖显示标题
feedkit subscribe-catalog -c <CATEGORY>

一次性订阅目录类别中的所有源。

feedkit subscribe-catalog -c technology   # subscribe to all 68 tech feeds
feedkit subscribe-catalog -c science      # subscribe to all 128 science feeds
feedkit unsubscribe <URL>

移除源订阅及其已收集的文章。

feedkit list

列出所有当前订阅,以及抓取次数和错误次数。

收集命令
feedkit collect

从所有已订阅的源抓取新文章(异步并行)。

feedkit collect                    # collect all
feedkit collect -c technology      # collect only tech feeds
feedkit collect -n 50              # max 50 concurrent requests
选项简写默认值说明
--category-c仅从此类别收集
--concurrency-n20最大并发 HTTP 请求数

输出:

Collecting from 68 feeds...
 67/68 feeds OK, 412 new articles, 8234ms
feedkit latest

显示最近收集的文章。

feedkit latest                # latest 20 articles
feedkit latest -n 50          # latest 50
feedkit latest -c finance     # latest from finance only
feedkit find <QUERY>

在所有已收集的文章中进行全文搜索(SQLite FTS5)。

feedkit find "kubernetes deployment"
feedkit find "large language model" -n 50
OPML 命令
feedkit import-opml <PATH>

从 OPML 文件导入源(Feedly、Inoreader、NetNewsWire 等)。

feedkit import-opml subscriptions.opml
feedkit export-opml <PATH>

将当前订阅导出为 OPML。

feedkit export-opml backup.opml

Python API

from feedkit import search_catalog, fetch_feed, get_catalog_stats, FeedStore
from feedkit.core import collect

# Search the built-in catalog
feeds = search_catalog("cloudflare")
feeds = search_catalog(category="technology", language="en", limit=50)

# Fetch a single feed (async)
entries = await fetch_feed("https://blog.cloudflare.com/rss/")
for entry in entries:
    print(entry.title, entry.url, entry.published)

# Subscribe and collect
store = FeedStore()                              # SQLite at ~/.feedkit/feedkit.db
store.subscribe("https://blog.cloudflare.com/rss/", category="tech")
result = await collect(store, concurrency=20)    # async parallel fetch
print(f"{result.new_articles} new, {result.feeds_ok}/{result.feeds_total} OK")

# Search collected articles (FTS5)
articles = store.search("kubernetes", count=10)

# Latest articles
articles = store.get_latest(count=20, category="tech")

# Feed health
health = store.get_health()                      # fetch/error counts per feed

# Catalog stats
stats = get_catalog_stats()                      # {total_feeds, categories, languages}

store.close()
主要类
类说明
FeedStore基于 SQLite 的订阅和文章存储(~/.feedkit/feedkit.db)
FeedEntry从已抓取源获取的单条内容(标题、URL、摘要、发布时间、作者)
CollectResult批量收集结果(feeds_ok、feeds_error、new_articles、duration_ms)
CatalogFeed内置目录中的条目(URL、标题、类别、子类别、语言、域名)

MCP 服务

pip install "feedkit[mcp]"
feedkit-mcp                    # starts stdio MCP server
配置

Claude Code(~/.claude/settings.json):

{
  "mcpServers": {
    "feedkit": {
      "command": "feedkit-mcp"
    }
  }
}
工具参考
#工具参数描述
1fetch_single_feedurl, count=10从任意 RSS/Atom URL 获取条目(无需订阅)
2search_feed_catalogquery, category, language, count=20搜索内置的 444 个订阅源目录
3catalog_stats获取目录统计信息(总数、按类别和语言统计)
4subscribe_feedurl, title, category订阅订阅源,以便持续收集
5unsubscribe_feedurl移除订阅
6list_subscriptions列出所有订阅及其状态
7collect_feedscategory从所有订阅中收集新文章
8search_articlesquery, count=10对已收集的文章进行全文搜索
9get_latest_articlescategory, count=20获取最近收集的文章
MCP 工作流示例
User: "What are the latest AI papers on arXiv?"

1. search_feed_catalog(query="arxiv", category="science")
   → finds arXiv cs.AI, cs.LG, cs.CL feeds

2. subscribe_feed(url="https://rss.arxiv.org/rss/cs.AI")

3. collect_feeds(category="science")
   → fetches new entries

4. get_latest_articles(category="science", count=10)
   → returns latest papers

内置目录

涵盖 6 个类别的 444 个已验证订阅源。所有订阅源均经过审核,已移除硬性付费墙(Bloomberg、FT、WSJ)和失效 URL。

类别订阅源子类别代表性来源
technology68ai_ml, developer, it_news, security, startup, ...AWS、Cloudflare、Stripe、Netflix、HN、Go Blog、Rust Blog
science128journal, preprint, news, governmentNature、Science、arXiv、bioRxiv、medRxiv、NASA、PLOS
society119news_us, news_ko, news_uk, news_intl, factcheck, ...BBC、NPR、NYT、NHK、JTBC、PolitiFact、Snopes
finance89markets, central_bank, regulatory, cryptoFed、BOE、BOJ、SEC、CNBC、CoinDesk、Yahoo Finance
pets27veterinary, community, blog, healthAKC、PetMD、ASPCA、dvm360、r/dogs、r/cats
academia13ai_ml, research, institutionGoogle AI、DeepMind、Stanford HAI、Hugging Face

**语言:**英语(381)、韩语(47)、日语(14)、中文(2)

完整订阅源列表:CATALOG.md

为什么选择 FeedKit?

awesome-rss-feeds (2.1K★)engineering-blogs (37.5K★)FeedKit
类型Markdown 列表Markdown 列表Python 包
订阅源~500~600444
范围综合仅技术博客技术 + 科学 + 金融 + 新闻 + 事实核查
最近更新2021(已过时)2022(已过时)持续更新(每日收集)
已验证可用否否是(已收集 778K+ 篇文章)
法律审核否否是(已移除付费墙/服务条款限制较多的订阅源)
CLI否否是(12 个命令)
程序化 API否否是(异步 Python)
MCP 服务否否是(9 个工具)
OPML否否是(导入/导出)
FTS 搜索否否是(SQLite FTS5)

免责声明

此软件包分发的是公开可用的 RSS 订阅源 URL目录,而非订阅源内容本身。RSS 是一种内容联合分发标准——发布 RSS 订阅源,即明确邀请读者订阅。FeedKit 代表用户获取订阅源,不会存储或再分发受版权保护的内容。

目录已移除硬性付费墙后的订阅源(Bloomberg、FT、WSJ、Barron's),以及服务条款限制较多的订阅源。

使用案例

  • newswatch — RSS 新闻监控流水线(feedkit → markgrab → embgrep → diffgrab)

许可证

MIT


属于 QuartzUnit 生态系统 — 用于数据收集、提取、搜索和 AI Agent 安全的可组合 Python 库。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。