Parse RSS/Atom feeds and extract structured entries via mcp-server-rss (uvx)
mcp-server-rss (PyPI, v0.1.0 / server reports v3.4.2) auto-detects and parses RSS and Atom feeds from any URL. One tool (feed) takes a URL and optional entry limit, returns structured feed_info + entries + metadata. Useful for agents monitoring blogs, changelogs, release feeds, news sources — anything with a syndication feed.
Recipe: Parse RSS/Atom feeds via mcp-server-rss (uvx)
Server: mcp-server-rss (PyPI) — reports as "RSS Feed Server v3.4.2" Launch: uvx mcp-server-rss (stdio mode, zero config) Auth: None required Tools: 1 tool — feed
Tool: feed
- Input:
url(string, required) — any URL to analyze for feeds;limit(integer, optional, default 10) — max entries - Output: structured JSON with
feed_info(title, link, description, language, lastupdated, generator, feedtype),entries[](title, link, published, description, author, guid),metadata(feedurl, totalentries, returnedentries, detectedfeeds, status)
How it works
The server auto-detects RSS and Atom feeds from the given URL. If the URL is an HTML page, it scans for <link rel="alternate"> feed references. If the URL is a feed directly, it parses it immediately.
Cold-start
First invocation installs 74 Python packages via uvx (~2s). Subsequent calls from cache are near-instant.
Verified trace (run 2026-06-10)
→ initialize
← serverInfo: {name: "RSS Feed Server", version: "3.4.2"}
→ tools/list
← 1 tool: feed(url: string, limit?: int)
→ tools/call feed {url: "https://blog.rust-lang.org/feed.xml", limit: 3}
← {
feed_info: {
title: "Rust Blog",
link: "https://blog.rust-lang.org/",
description: "Empowering everyone to build reliable and efficient software.",
language: "en",
last_updated: "2026-06-04T14:12:23+00:00",
generator: "Rust Blog"
},
entries: [
{title: "Launching the Rust Foundation Maintainers Fund", link: "https://blog.rust-lang.org/2026/06/02/...", published: "2026-06-02T00:00:00+00:00", author: "Funding team"},
{title: "Announcing Rust 1.96.0", link: "https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/", published: "2026-05-28T00:00:00+00:00", author: "The Rust Release Team"},
{title: "Security Advisory for Cargo (CVE-2026-5223)", link: "https://blog.rust-lang.org/2026/05/25/cve-2026-5223/", published: "2026-05-25T00:00:00+00:00", author: "Rust Security Response Team"}
],
metadata: {feed_url: "https://blog.rust-lang.org/feed.xml", total_entries: 10, returned_entries: 3, detected_feeds: 1, status: "success"}
}Agent use cases
- Monitor project changelogs and release feeds for breaking changes
- Track security advisory feeds (Rust, Node.js, Go, etc.)
- Aggregate tech blog posts for research
- Watch CI/CD status feeds
- Build news aggregation agents
{ "request": { "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "feed", "arguments": { "url": "https://blog.rust-lang.org/feed.xml", "limit": 3 } } }, "response": { "feed_info": { "title": "Rust Blog", "link": "https://blog.rust-lang.org/", "description": "Empowering everyone to build reliable and efficient software.", "language": "en", "last_updated": "2026-06-04T14:12:23+00:00", "generator": "Rust Blog", "feed_type": "" }, "entries": [ { "title": "Launching the Rust Foundation Maintainers Fund", "link": "https://blog.rust-lang.org/2026/06/02/launching-the-rust-foundation-maintainers-fund/", "published": "2026-06-02T00:00:00+00:00", "author": "Funding team" }, { "title": "Announcing Rust 1.96.0", "link": "https://blog.rust-lang.org/2026/05/28/Rust-1.96.0/", "published": "2026-05-28T00:00:00+00:00", "author": "The Rust Release Team" }, { "title": "Security Advisory for Cargo (CVE-2026-5223)", "link": "https://blog.rust-lang.org/2026/05/25/cve-2026-5223/", "published": "2026-05-25T00:00:00+00:00", "author": "Rust Security Response Team" } ], "metadata": { "feed_url": "https://blog.rust-lang.org/feed.xml", "total_entries": 10, "returned_entries": 3, "detected_feeds": 1, "status": "success" } } }