Skip to main content
Glama
hmmroger

simply-feed-mcp

by hmmroger

Simply Feed MCP Server

A Model Context Protocol (MCP) server for managing and querying RSS/news feeds. This server enables AI assistants to fetch, search, and retrieve information from RSS feeds in real-time.

MCP Tools

This server provides the following MCP tools:

get-recent-feed-items

Retrieve the most recent items from all configured news/RSS feeds within a specified time window.

  • recencyInMinutes (optional): Look back period in minutes (default: 120)

  • limit (optional): Number of items to return (max: 50, default: 25)

  • skip (optional): Number of items to skip for pagination

get-feed-items

Retrieve items from a specified news/RSS feed, ordered by recency (newest first), with pagination support.

  • feedId (required): The news/RSS feed ID from which to get items

  • limit (optional): Number of items to return (max: 50, default: 25)

  • skip (optional): Number of items to skip for pagination

search-feed-items

Search and retrieve items using natural language queries.

  • query (required): Description of the items to search for

  • feedId (optional): Filter results to a specific feed

  • limit (optional): Number of items to return (max: 50, default: 25)

  • skip (optional): Number of items to skip for pagination

get-item-details

Get full details for a specific feed item.

  • feedId (required): The feed ID containing the item

  • id (required): The specific item ID

list-feeds

Retrieve a list of all configured RSS/news feeds with pagination support.

  • limit (optional): Number of feeds to return (max: 50, default: 10)

  • skip (optional): Number of feeds to skip for pagination

Related MCP server: @missionsquad/mcp-rss

Installation

Prerequisites

  • Node.js 20+

  • npm or yarn

From npm

No installation required! Simply use npx to run the latest version:

Global Installation (Optional)

If you prefer to install globally:

npm install -g simply-feed-mcp

From Source

  1. Clone the repository:

git clone https://github.com/hmmroger/simply-feed-mcp.git
cd simply-feed-mcp
  1. Install dependencies:

npm install
  1. Build the project:

npm run build

Configuration

Feed Configuration

The feed configuration is used by the worker to fetch and update feeds. Create a feeds.json file (or any custom filename) and specify its location using --config_file with your RSS feeds:

[
  {
    "feedUrl": "https://www.technologyreview.com/feed/"
  }
]

Environment Variables

Configure the server using these environment variables:

Variable

Description

Default

MCP/Worker

SIMPLY_FEED_CONFIG_FILE_NAME

Custom feeds config file name

feeds.json

Worker

SIMPLY_FEED_CONFIG_BLOB_NAME

Load config from Azure Blob (format: container/blob)

-

Worker

SIMPLY_FEED_STORAGE_CONNECTION_STRING

Azure Storage connection string

-

Both

SIMPLY_FEED_STORAGE_FILE_FOLDER

Local storage folder for feed data

-

Both

SIMPLY_FEED_LLM_API_KEY

API key for LLM integration

-

Both

SIMPLY_FEED_LLM_BASE_URL

Base URL for LLM API

https://generativelanguage.googleapis.com/v1beta/openai

Both

SIMPLY_FEED_LLM_MODEL

LLM model to use

gemini-2.5-flash-lite

Both

SIMPLY_FEED_ITEMS_RETENTION_DAYS

Days to retain feed items

-

Worker

Usage

NOTE

You must have one instance of simply-feed-mcp running as aworker to fetch and update feeds, otherwise the MCP server will not see any feeds.

Required Environment Variables

SIMPLY_FEED_LLM_API_KEY is required.

Background Worker

Run the background worker to continuously fetch and update feeds:

# Run continuously (default: refresh every 15 minutes)
npx simply-feed-mcp --worker

# Run once and exit
npx simply-feed-mcp --worker --run_once

# Custom refresh interval (in seconds)
npx simply-feed-mcp --worker --refresh_interval 600

# Use custom config file and path
npx simply-feed-mcp --worker --config_file /custom/path/my-feeds.json

# Use Azure Blob config
npx simply-feed-mcp --worker --config_blob_name container/feeds.json

MCP Server

Ensure you specify the same values for environment variables that were used in the worker.

Integration

Claude Desktop

Add to your Claude Desktop MCP configuration:

{
  "mcpServers": {
    "simply-feed-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "simply-feed-mcp"
      ],
      "env": {
        "SIMPLY_FEED_LLM_API_KEY": "<API KEY>"
      }
    }
  }
}

License

MIT License - see LICENSE file for details.

Support

Available Tools

5 tools
get_feed_item_detailsA

Get full item details given the feed ID and feed item ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe feed item ID to get details.
feedIdYesThe feed ID of the item.
timeZoneNoIANA timezone string for formatting dates (e.g. 'America/New_York', 'Europe/London'). Defaults to UTC.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the transparency burden. 'Get' indicates a read-only operation, and 'full item details' suggests a comprehensive response, but it does not disclose behavior on missing items, the exact return structure, or the timezone formatting effect (though the schema mentions timeZone). Basic transparency is present, but richer context would be helpful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that immediately states the action and required inputs. Every word contributes, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a relatively simple detail-retrieval tool with only three parameters and no nested objects. The description, combined with full schema coverage and clear sibling context, is adequate for an agent to understand when and how to invoke it. However, it does not describe the return value structure, though no output schema exists; leaving some ambiguity, but the tool's simplicity limits the need.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with each parameter already documented (id, feedId, timeZone). The description restates the need for feed ID and feed item ID but adds no additional meaning beyond the schema. Baseline of 3 is appropriate since the schema carries the parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves full item details given two specific identifiers (feed ID and feed item ID). This is a specific verb-resource combination that distinguishes it from sibling tools like list_feeds, get_feed_items, and search_feed_items, which focus on listing or searching.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you already have the feed ID and feed item ID and need the full details for a specific item. It does not explicitly mention alternatives or exclusions, but the 'given the feed ID and feed item ID' prerequisite makes the intended context clear, especially against sibling context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_feed_itemsA

Get items from a specific feed by feed ID, ordered newest first (default: 50 items). Use list-feeds to discover available feed IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
skipNoNumber of items to skip for pagination (default: 0).
limitNoNumber of items to return per page (default: 50, max: 100).
feedIdYesThe news/RSS feed ID from which to get items.
timeZoneNoIANA timezone string for formatting dates (e.g. 'America/New_York', 'Europe/London'). Defaults to UTC.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It reveals ordering (newest first) and default limit (50), but omits pagination behavior, error handling, and return format, leaving significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two clear, front-loaded sentences with no wasted words. The first states purpose and default behavior; the second gives a helpful pointer to list-feeds.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool, the description is adequate but missing a return format description since no output schema exists. It also doesn't explain pagination mechanics beyond the schema, leaving gaps in operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover all four parameters at 100% coverage, so the description adds little parameter-specific meaning. Baseline of 3 is appropriate per rubric when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it gets items from a specific feed by feed ID, with ordering. However, it does not explicitly differentiate from get_recent_feed_items or other siblings, so it lacks explicit sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It mentions using list-feeds to discover feed IDs, which is a useful prerequisite. But it does not discuss when to choose this tool over get_recent_feed_items or search_feed_items, leaving usage implied rather than explicitly guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recent_feed_itemsA

Get recent items across all feeds within a time window (default: last 120 minutes, 50 items). Use this to catch up on the latest news without specifying a feed.

ParametersJSON Schema
NameRequiredDescriptionDefault
skipNoNumber of items to skip for pagination (default: 0).
limitNoNumber of items to return per page (default: 50, max: 100).
timeZoneNoIANA timezone string for formatting dates (e.g. 'America/New_York', 'Europe/London'). Defaults to UTC.
recencyInMinutesNoNumber of minutes to look back from now for recent items (default: 120).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden. It discloses the default time window (120 minutes) and item count (50), and clarifies the cross-feed scope. It doesn't explicitly state read-only behavior or ordering, but the 'get' verb makes this an obvious read operation. The information provided is useful and adds context beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences long, front-loaded with the action and purpose. It avoids fluff and every sentence contributes either the core functionality or a usage recommendation. This is exemplary conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with all parameters documented in the schema, the description captures the essential context: cross-feed scope and default time window. It doesn't describe the return format or pagination behavior, but those are common for such tools and can be inferred. Overall it is sufficiently complete for an agent to know when and why to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 4 parameters are fully described in the schema (100% coverage), so the baseline is 3. The description repeats the defaults for recencyInMinutes and limit but adds no deeper meaning about parameter interactions, pagination mechanics, or timezone handling. It provides no additional value beyond the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('recent items across all feeds') and explicitly notes that it works 'without specifying a feed,' which clearly distinguishes it from sibling tools like get_feed_items. It is action-oriented and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear usage context: 'Use this to catch up on the latest news without specifying a feed.' While it doesn't explicitly name alternatives or state when not to use it, the scope statement implies using a feed-specific tool when a particular feed is needed. This is adequate guidance but lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_feedsA

List all available RSS/news feeds with their names, IDs, and latest publish times (default: 50 feeds). Call this first to discover feed IDs needed by other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
skipNoNumber of feeds to skip for pagination (default: 0).
limitNoNumber of feeds to return per page (default: 50, max: 100).
timeZoneNoIANA timezone string for formatting dates (e.g. 'America/New_York', 'Europe/London'). Defaults to UTC.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavioral traits. It discloses the default page size (50 feeds) and the purpose (feed discovery), but does not explicitly state that this is a read-only operation or mention any other side effects. For a simple list operation, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first states the purpose and output, the second gives usage guidance. Every sentence earns its place, with no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is complete for a straightforward list tool with three optional parameters. It covers the primary use case (discovering feed IDs), output fields, and a default. No output schema exists, but the description provides enough information for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all three parameters (skip, limit, timeZone) having descriptions. The tool description adds minimal parameter-related detail beyond the schema, mentioning the default limit of 50. The baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action and resource: 'List all available RSS/news feeds' and specifies the return fields (names, IDs, latest publish times). This distinguishes it from sibling tools that operate on feed items, not feeds themselves.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage guidance: 'Call this first to discover feed IDs needed by other tools.' This tells the agent when to use the tool, though it does not explicitly mention alternatives or exclusions. Given the sibling tools are item-focused, the context is sufficiently clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_feed_itemsA

Search feed items by query across all feeds, or filter to a specific feed with feedId (default: 50 items). Use this to find items about a specific topic.

ParametersJSON Schema
NameRequiredDescriptionDefault
skipNoNumber of items to skip for pagination (default: 0).
limitNoNumber of items to return per page (default: 50, max: 100).
queryYesDescription of the news/RSS feed items to search for.
feedIdNoOptional feed ID to filter search results to a specific feed.
timeZoneNoIANA timezone string for formatting dates (e.g. 'America/New_York', 'Europe/London'). Defaults to UTC.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It adds the default 50-item behavior and the ability to filter across all feeds or a specific feed. However, it does not disclose pagination behavior, search semantics (e.g., exact vs. fuzzy), or return format, leaving some ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action, and both sentences earn their place. No fluff or repetition of schema details except the useful default limit context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with 5 parameters and no output schema, the description covers the main purpose and key behavioral detail (default 50). It does not elaborate on pagination or return structure, but the schema fills in parameter details, making it sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by clarifying that feedId is a filter (optional) and the query applies across all feeds by default, supplementing the parameter descriptions. This helps the agent correctly use feedId and understand scope.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: searching feed items by query, with an optional feedId filter. The verb 'search' and resource 'feed items' are specific, and the distinction from sibling list/retrieval tools is evident because it emphasizes query-based search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool ('find items about a specific topic') and mentions the feedId filter option. It does not explicitly name alternative tools for different cases, but the usage context is sufficiently implied.

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.

  1. 5 tool updatesv0.0.9
    • First observedget_feed_item_details
    • First observedget_feed_items
    • First observedget_recent_feed_items
    • First observedlist_feeds
    • First observedsearch_feed_items

TDQS

A4.1/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct action: list feeds, get items from a specific feed, get item details, get recent items across all feeds, and search items. Even though get_feed_items and search_feed_items can both focus on a feed, their purposes (list all vs. topic search) are clearly differentiated, and descriptions prevent confusion.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern: list_feeds, get_feed_items, get_feed_item_details, get_recent_feed_items, search_feed_items. The verbs (list, get, search) and nouns are used uniformly and predictably.

Tool Count5/5

With 5 tools, the server is well-scoped for a feed reader. Each tool covers a core read operation (listing feeds, retrieving items, getting details, recent items, searching), and none feel redundant or missing for the stated purpose.

Completeness4/5

The tool set provides solid read coverage: list feeds, get items by feed, get item details, get recent across all feeds, and search across all or per feed. A minor gap is the lack of per-feed time-based filtering (e.g., items since a timestamp for a specific feed), but agents can work around this using get_feed_items or get_recent_feed_items.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    MCP server for fetching, parsing, and managing RSS feeds. Features Fetch and parse RSS/Atom feeds In-memory caching with TTL Batch fetching of multiple feeds Monitor feeds for new items Search content across multiple feeds Extract and format feed content
    6
    30
    12
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables searching across multiple RSS feed sources simultaneously, with support for extensible feed sources and both STDIO and HTTP modes.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Secure MCP server for RSS/Atom feed reading with SQLite backend. Enables feed management, entry search, and OPML import/export.
    17
    AGPL 3.0