FeedKit

io.github.ArkNill由 GitHub 账号 ArkNill 发布v0.1.0更新于 Oct 24, 2026

RSS/Atom feed collection with 417 curated feeds. Python MCP server.

概览

AI 生成的概览

让助手搜索精选 RSS/Atom 源目录、订阅源、把文章采集到本地 SQLite 库,并进行全文检索。

可以做什么
FeedKit 通过 stdio 提供九个 MCP 工具。助手可以按关键词、分类或语言搜索内置的 444 个精选源目录,无需订阅即可抓取任意 RSS/Atom 地址的条目,并订阅或取消订阅源。它还能并行采集订阅源的新文章、列出订阅及其抓取与错误计数,并用 SQLite FTS5 做全文检索或获取最新采集的文章。
适用场景
适合需要持续跟踪新闻、研究或博客 RSS 来源的场景,而不是一次性网页搜索,例如跟踪 arXiv 论文、技术博客或财经与新闻源。也适合需要把文章存到本地并反复检索的工作流。
运行要求
作为本地 stdio 进程运行;安装 PyPI 包 feedkit 的 mcp 附加组件并启动 feedkit-mcp。需要 Python 3.11 或更高版本。未声明账号、API 密钥或环境变量。抓取源需要网络访问;数据保存在用户主目录下的本地 SQLite 数据库。
安装前请注意
该服务器会写入本地 SQLite 数据库,并可新增或移除订阅及其已采集文章,取消订阅会删除已存数据。它会代表用户抓取外部源地址,从而访问第三方站点。不要求任何凭据,但源内容来自外部来源。

安装

在 SourceWeft 中

  1. 打开 控制台中的 FeedKit,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

FeedKit

[PyPI] [Python] [License] [Tests]

한국어 문서 · llms.txt

RSS/Atom feed collection with 444 curated, verified feeds. CLI + Python API + MCP server.

Quick Start

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

Install

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

Requirements: Python 3.11+

How It Works

mermaid
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 Reference

Catalog Commands

feedkit search [QUERY]

Search the built-in catalog of 444 curated feeds.

bash
feedkit search aws                    # search by title or domainfeedkit search --category science     # filter by categoryfeedkit search --language ko          # filter by languagefeedkit search -c finance -l en -n 50 # combine filtersfeedkit search -j                     # JSON output (for piping)
OptionShortDefaultDescription
--category-cFilter by category
--language-lFilter by language code (en, ko, ja, zh)
--limit-n20Max results
--json-output-jOutput as JSON
feedkit categories

List all available catalog categories.

$ feedkit categories  academia  finance  pets  science  society  technology
feedkit stats

Show catalog and local subscription statistics.

$ feedkit statsCatalog: 444 feeds  academia: 13  finance: 89  pets: 27  science: 128  society: 119  technology: 68
Local: 68 subscriptions, 1,247 articles

Subscription Commands

feedkit subscribe <URL>

Subscribe to a single feed.

bash
feedkit subscribe https://blog.cloudflare.com/rss/feedkit subscribe https://example.com/rss -c tech -t "My Feed"
OptionShortDescription
--category-cCategory label
--title-tDisplay title override
feedkit subscribe-catalog -c <CATEGORY>

Subscribe to all feeds in a catalog category at once.

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

Remove a feed subscription and its collected articles.

feedkit list

List all current subscriptions with fetch counts and error counts.

Collection Commands

feedkit collect

Fetch new articles from all subscribed feeds (async parallel).

bash
feedkit collect                    # collect allfeedkit collect -c technology      # collect only tech feedsfeedkit collect -n 50              # max 50 concurrent requests
OptionShortDefaultDescription
--category-cOnly collect from this category
--concurrency-n20Max concurrent HTTP requests

Output:

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

Show most recently collected articles.

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

Full-text search (SQLite FTS5) across all collected articles.

bash
feedkit find "kubernetes deployment"feedkit find "large language model" -n 50

OPML Commands

feedkit import-opml <PATH>

Import feeds from an OPML file (Feedly, Inoreader, NetNewsWire, etc.).

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

Export current subscriptions to OPML.

bash
feedkit export-opml backup.opml

Python API

python
from feedkit import search_catalog, fetch_feed, get_catalog_stats, FeedStorefrom feedkit.core import collect
# Search the built-in catalogfeeds = 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 collectstore = FeedStore()                              # SQLite at ~/.feedkit/feedkit.dbstore.subscribe("https://blog.cloudflare.com/rss/", category="tech")result = await collect(store, concurrency=20)    # async parallel fetchprint(f"{result.new_articles} new, {result.feeds_ok}/{result.feeds_total} OK")
# Search collected articles (FTS5)articles = store.search("kubernetes", count=10)
# Latest articlesarticles = store.get_latest(count=20, category="tech")
# Feed healthhealth = store.get_health()                      # fetch/error counts per feed
# Catalog statsstats = get_catalog_stats()                      # {total_feeds, categories, languages}
store.close()

Key Classes

ClassDescription
FeedStoreSQLite-backed subscription + article store (~/.feedkit/feedkit.db)
FeedEntrySingle entry from a fetched feed (title, url, summary, published, author)
CollectResultBulk collection result (feeds_ok, feeds_error, new_articles, duration_ms)
CatalogFeedEntry from the built-in catalog (url, title, category, subcategory, language, domain)

MCP Server

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

Configuration

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

json
{  "mcpServers": {    "feedkit": {      "command": "feedkit-mcp"    }  }}

Tools Reference

#ToolParametersDescription
1fetch_single_feedurl, count=10Fetch entries from any RSS/Atom URL (no subscription needed)
2search_feed_catalogquery, category, language, count=20Search the built-in 444-feed catalog
3catalog_statsGet catalog statistics (total, by category, by language)
4subscribe_feedurl, title, categorySubscribe to a feed for ongoing collection
5unsubscribe_feedurlRemove a subscription
6list_subscriptionsList all subscriptions with status
7collect_feedscategoryCollect new articles from all subscriptions
8search_articlesquery, count=10Full-text search across collected articles
9get_latest_articlescategory, count=20Get most recently collected articles

MCP Workflow Example

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

Built-in Catalog

444 verified feeds across 6 categories. All audited — hard paywalls (Bloomberg, FT, WSJ) and broken URLs removed.

CategoryFeedsSubcategoriesHighlights
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

Languages: English (381), Korean (47), Japanese (14), Chinese (2)

Full feed list: CATALOG.md

Why FeedKit?

awesome-rss-feeds (2.1K★)engineering-blogs (37.5K★)FeedKit
TypeMarkdown listMarkdown listPython package
Feeds~500~600444
ScopeGeneralTech blogs onlyTech + Science + Finance + News + Factcheck
Last update2021 (stale)2022 (stale)Active (daily collection)
Verified workingNoNoYes (778K+ articles collected)
Legal auditNoNoYes (paywall/ToS feeds removed)
CLINoNoYes (12 commands)
Programmatic APINoNoYes (async Python)
MCP serverNoNoYes (9 tools)
OPMLNoNoYes (import/export)
FTS searchNoNoYes (SQLite FTS5)

Disclaimer

This package distributes a catalog of publicly available RSS feed URLs, not the feed content itself. RSS is a syndication standard — publishing an RSS feed is an explicit invitation for readers to subscribe. FeedKit fetches feeds on the user's behalf and does not store or redistribute copyrighted content.

Feeds behind hard paywalls (Bloomberg, FT, WSJ, Barron's) and feeds with aggressive terms of service have been removed from the catalog.

Used in

  • newswatch — RSS news monitoring pipeline (feedkit → markgrab → embgrep → diffgrab)

License

MIT


Part of the QuartzUnit ecosystem — composable Python libraries for data collection, extraction, search, and AI agent safety.

来源:README.md,提交 e33e47e

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.0最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分