rss-mcp
Provides tools for fetching and managing RSS feeds, allowing users to retrieve articles from configured feeds and filter content.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@rss-mcpfetch the tech feed"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
RSS MCP
An MCP server that provides RSS feed tools for Claude Desktop. Fetches and parses RSS feeds, returning structured article data.
Requirements
Python 3.13+
uv - Install with:
curl -LsSf https://astral.sh/uv/install.sh | sh
Related MCP server: FeedbinMCP
Installation
git clone https://github.com/YOUR_USERNAME/rss-mcp.git
cd rss-mcp
uv syncClaude Desktop Configuration
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"rss-mcp": {
"command": "uv",
"args": ["run", "--directory", "/path/to/rss-mcp", "python", "main.py"]
}
}
}Replace /path/to/rss-mcp with the actual path to your cloned repository.
Configuration
Edit feeds.json to customize feeds and filtering:
{
"feeds": {
"tech": {
"url": "https://hnrss.org/newest",
"description": "Tech news from Hacker News",
"limit": 20
},
"news": {
"url": "https://www.wyff4.com/topstories-rss",
"description": "Local and national news"
}
},
"blocklist": ["crypto", "nft", "sponsored"]
}feeds: Named feeds that become tools (e.g.,
get_tech_feed,get_news_feed)url: RSS feed URL (required)description: Tool description shown in Claude (optional)limit: Max entries to return (optional)
blocklist: Topics to filter out - passed to Claude for semantic filtering (e.g., "animals" filters out dog/cat/wildlife stories)
Note: Restart Claude Desktop after editing feeds.json for changes to take effect.
Available Tools
fetch_rss(url, limit) - Fetch any RSS feed by URL
get_{name}_feed - One tool per configured feed in
feeds.json
Development
# Run the server directly
uv run python main.py
# Debug with MCP inspector
uv run mcp dev main.py
# Lint
uv run ruff check .
# Type check
uv run ty checkLicense
MIT
Available Tools
6 toolsfetch_rssB
Fetch any RSS feed by URL. Returns entries with title, link, and summary. If filter_out_topics is included, exclude entries related to those topics from your response.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the return fields and the filter behavior, but it references a 'filter_out_topics' parameter that does not exist in the schema, which is misleading. There are no annotations to support the safety profile, and the description does not address potential errors or formatting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loaded with the core purpose. However, the second sentence introduces inaccurate parameter information, which undermines its value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no annotations or output schema, the description should explain parameters and edge cases. It fails to describe 'limit', references a non-existent parameter, and lacks alternatives or error handling, leaving an agent with incomplete information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has two parameters (url, limit), but the description only mentions a phantom 'filter_out_topics' parameter and provides no meaning for 'limit' or 'url'. This does not help an agent understand the actual parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches any RSS feed by URL, which is a specific verb+resource. It distinguishes itself from specialized feed tools like get_tech_feed by emphasizing 'any RSS feed'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a general-purpose use case ('any RSS feed') but does not explicitly mention when to use this over siblings. No exclusions or alternatives are named, so guidance is merely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_arstechnica_feedC
Tech news from Ars Technica
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states content ('Tech news from Ars Technica') but does not indicate that the tool performs a read-only operation, returns a feed, or any other behavioral traits. The description is a noun phrase, not a statement of behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely brief and front-loaded, using only four words. It contains no fluff and is easily scannable. However, its brevity borders on under-specification, though it does convey more than a tautology.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no annotations, no output schema, and zero parameters, so the description is the sole source of context. It fails to explicitly state what the tool does (e.g., 'Fetches the latest Ars Technica news feed'), leaving the agent to infer from the name. Given the sibling tools, the description is insufficient for complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, and the baseline for 0 params is 4. The description need not add parameter semantics since there are none; the schema fully covers the empty parameter set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Tech news from Ars Technica' provides a resource (Ars Technica) and content type (tech news), but lacks a clear verb specifying the action. It is not a tautology because it adds context, but it fails to explicitly state that the tool fetches or returns a feed, making it ambiguous compared to sibling tools like fetch_rss or get_tech_feed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives. With sibling tools such as get_tech_feed and get_news_feed, there is no distinction or conditional advice, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_news_feedD
Local and national news
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must disclose behavior, but it provides none. It doesn't indicate whether the tool returns a list, requires network access, or has any side effects. The statement 'Local and national news' is purely descriptive and adds no behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While the description is extremely brief, it omits essential information, making it under-specified rather than concise. It is a short phrase without any structuring or explanatory content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no annotations or output schema, so the description is the only source of context. It fails to explain what the news feed contains, how it is returned, or how it relates to the sibling tools. A simple statement of scope is insufficient for a minimally viable description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is empty and the description need not explain parameter usage. Baseline 4 is appropriate, although the description does not add parameter-specific semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Local and national news' is a vague noun phrase that does not clearly state an action or resource. It fails to specify that the tool retrieves or lists news feeds, and does not differentiate from siblings beyond topic. The name implies a feed, but the description is a tautology of the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. There is no mention of when to use this tool versus the sibling feeds (fetch_rss, get_tech_feed, etc.), nor any context for selecting it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_physics_feedB
Physics and science news from Phys.org
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing tool behavior. It only states the content source and topic, but fails to mention whether the output is a feed, its format, any pagination, or other behavioral traits. This is minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise phrase that directly states the tool's subject and source. Every word contributes value, and it is appropriately front-loaded. No unnecessary information is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple parametless tool, the description is adequate but not complete. It names the source and topic but does not describe the return format, whether it is an RSS feed, or what the output structure looks like. Since there is no output schema, a brief mention of the expected feed content would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline score is 4. The empty input schema aligns with the description, and no parameter semantics are needed. The description correctly implies that the tool takes no input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Physics and science news from Phys.org' clearly identifies the tool as providing news content from a specific source and subject area. Though no explicit verb like 'get' is present, the tool name supplies that context, making the purpose apparent. It distinguishes from siblings by naming Phys.org as the source, though overlap with get_science_feed remains possible.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like get_science_feed or get_tech_feed. The only implied usage is that this tool is for physics-related news from Phys.org, but there are no explicit when-to-use or when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_science_feedC
Science news from Nature
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavioral traits. It only states the content source ('Science news from Nature') and gives no information about return format, pagination, network behavior, or any side effects. This is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded phrase with no redundancy. Every word earns its place, though it is minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter feed tool, the description is too terse. It omits what the returned feed contains (e.g., a list of articles, metadata, format) and any behavioral nuances. The tool name and siblings imply a feed, but the description does not complete the picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description has no parameter burden. The baseline score of 4 applies because there are no parameter semantics to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the specific resource: science news from Nature. This distinguishes it from sibling feeds by both topic and source, though the verb is implied by the tool name rather than stated in the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage context is provided. The description does not state when to choose this feed over the other get_*_feed sibling tools, nor any exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tech_feedC
Tech news from Hacker News
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only states the source ('Hacker News') and does not mention read-only nature, return format, or any side effects. This is essentially no transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and free of fluff, but it is a sentence fragment that lacks a clear action. It is concise but not well-structured as a complete tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and a single vague phrase, the description provides only minimal context. It does not clarify what the feed contains, how it behaves, or how it relates to sibling feeds, making it inadequate for reliable tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to add parameter semantics. Per the rubric, a 0-param tool receives a baseline of 4 since there is nothing to explain.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (tech news from Hacker News) but lacks a specific verb like 'fetches' or 'lists.' It distinguishes from science and physics feeds but not clearly from get_news_feed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. Sibling tools exist but are never mentioned, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.0- First observed
fetch_rss - First observed
get_arstechnica_feed - First observed
get_news_feed - First observed
get_physics_feed - First observed
get_science_feed - First observed
get_tech_feed
TDQS
Scored across 6 tools
There is overlap between tech feeds (get_tech_feed, get_arstechnica_feed) and science feeds (get_science_feed, get_physics_feed), which could cause misselection. fetch_rss is distinct as a generic fetcher, but the specific feeds have blurred boundaries.
Most tools use a get_<descriptor>_feed pattern, but fetch_rss deviates with a different verb and no '_feed' suffix. This is a minor inconsistency in an otherwise predictable naming scheme.
Six tools is well-scoped for an RSS server. The generic fetch_rss plus specific curated feeds provides a balanced set without unnecessary bloat.
fetch_rss can retrieve any RSS feed, providing full coverage. The specific feed tools are convenience wrappers, so there are no obvious gaps in the server's functionality.
Maintenance
Related MCP Connectors
An MCP server that automatically collects feedback on your MCP server.
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
MCP Server for JFrog, providing tools for development and artifact management.
Official MCP server for subfeed.app — the cloud for agents. 15+ tools for AI agents to register, build, and deploy other agents. Zero human required. Start here: subfeed.app/skill.md
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that fetches RSS feeds and shares them with LLMs, allowing AI assistants to access and present the latest news and articles from configured feeds.19-
- FlicenseAqualityDmaintenanceAn MCP server that enables users to interact with their Feedbin RSS account directly through Claude. It provides tools for reading articles, managing read and starred states, and browsing subscribed feeds and tags.15-
- AlicenseAqualityDmaintenanceAn MCP server that enables AI assistants to manage Tiny Tiny RSS feeds, including reading articles, updating statuses, and searching content. It also provides tools for feed management and generating automated daily reports.1514 npm3MIT
- AlicenseBqualityDmaintenanceAn MCP server for RSS feed aggregation and article content extraction, allowing users to subscribe to feeds and extract full article content as Markdown.2117 npm5MIT