Skip to main content
Glama

Crypto RSS MCP

An MCP server that aggregates real-time cryptocurrency news from multiple RSS feeds, helping AI agents make informed decisions in a fast-paced market.

GitHub License Python Version Status

Features

  • Feed Retrieval: Fetches latest entries from specified RSS feeds, formatting them as Markdown with plain-text summaries.

  • Keyword Filtering: Filters feeds by keyword in descriptions or categories.

  • OPML Support: Import feed list from a local OPML file provided by Chainfeeds.

  • LLM Integration: Includes a prompt for analyzing feed content to summarize key points and identify cryptocurrency market trends.

Related MCP server: coindesk-mcp

Prerequisites

  • Python: Version 3.10.

  • uv: Package and dependency manager for Python projects.

Installation

  1. Clone the Repository:

    git clone https://github.com/kukapay/crypto-rss-mcp.git
    cd crypto-rss-mcp
  2. Install Dependencies: Add the required dependencies using uv:

    uv sync

Usage

Running the Server

Start the FastMCP server in development mode:

uv run mcp dev cli.py

Installing to Claude Desktop

Install the server as a Claude Desktop application:

uv run mcp install cli.py --name "Crypto RSS Reader"

Configuration file as a reference:

{
   "mcpServers": {
       "Crypto RSS Reader": {
           "command": "uv",
           "args": [ "--directory", "/path/to/crypto-rss-mcp", "run", "crypto-rss-mcp" ] 
       }
   }
}

Available Tools

get_crypto_rss_list

Lists available RSS feeds from an OPML file, optionally filtered by keyword.

Parameters:

  • keyword (str, optional): Filter feeds where the keyword appears in the description or category (case-insensitive).

  • opml_file (str, optional): Path to a local OPML file (defaults to "RAW.opml").

Example:

List available cryptocurrency RSS feeds

Output:

Available Cryptocurrency RSS Feeds:

Category: 05. Research/VC
URL: https://b10c.me/feed.xml
Description: 0xB10C's Blog: German Bitcoin freelance developer on 0xB10C's Blog

Category: 03. Media
URL: https://bitcoinmagazine.com/feed
Description: Bitcoin Magazine
...

get_rss_feed

Fetches and formats the latest 10 entries from a specified RSS feed as Markdown.

Parameters:

  • feed_url (str): The URL of the RSS feed to fetch.

Example:

Read this RSS feed: https://blog.0xproject.com/feed

Output:

# Feed: 0x Blog - Medium

## Entry 1
- **Title**: Introducing 0x Protocol v4
- **Link**: [https://blog.0xproject.com/...](https://blog.0xproject.com/...)
- **Published**: Mon, 28 Apr 2025 10:00:00 GMT
- **Summary**: The 0x Protocol v4 brings improved efficiency...

  ### Why This Matters
  This update enhances...
...

Available Prompts

analyze_rss_feed

Creates a prompt for analyzing RSS feed content, summarizing key points and identifying cryptocurrency market trends.

Parameters:

  • url (str): The RSS feed URL to analyze.

Example:

Analyze the content of this RSS feed https://blog.0xproject.com/feed, summarize the key points, and identify any trends in the cryptocurrency market."

License

This project is licensed under the MIT License. See the LICENSE file for details.

Available Tools

2 tools
get_crypto_rss_listA
Retrieve a list of available cryptocurrency RSS feeds from a local or remote OPML file, optionally filtered by keyword.

Parameters:
    keyword (str, optional): Filter feeds where the keyword appears in the description or category (case-insensitive).
    opml_file (str, optional): Path to a local OPML file to read feeds from. If not provided, fetches from the remote OPML URL.

Returns:
    str: A formatted string listing each RSS feed URL, its description, and category, parsed from the OPML file.
ParametersJSON Schema
NameRequiredDescriptionDefault
keywordNo
opml_fileNoRAW.opml

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses key behaviors: fetching from remote or local sources, case-insensitive keyword filtering, and returning a formatted string. However, it lacks details on error handling, rate limits, authentication needs, or what happens if the file is missing, leaving gaps for a tool with mutation-like operations (file reading).

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 appropriately sized and front-loaded: the first sentence states the core purpose, followed by bullet-like sections for parameters and returns. Every sentence adds value without redundancy, making it efficient and well-structured.

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?

Given no annotations, 0% schema coverage, and no output schema, the description does well by explaining parameters and return format. However, for a tool that reads files and fetches remote data, it lacks details on error cases (e.g., invalid file paths) and behavioral constraints, leaving some contextual gaps.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate fully. It adds significant meaning beyond the schema: explains that 'keyword' filters by description/category case-insensitively, and 'opml_file' specifies a local path with a default remote fetch. This provides essential context not in the schema, fully compensating for the coverage gap.

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 action ('Retrieve a list'), resource ('available cryptocurrency RSS feeds'), and source ('from a local or remote OPML file'). It distinguishes from the sibling tool 'get_rss_feed' by specifying cryptocurrency feeds and OPML file parsing, providing specific verb+resource differentiation.

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 for usage: retrieving feeds from OPML files with optional filtering. However, it does not explicitly state when to use this tool versus the sibling 'get_rss_feed' or specify any exclusions or prerequisites, missing explicit alternative guidance.

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

get_rss_feedA
Retrieve the content of the specified RSS feed.

Parameters:
    feed_url (str): The URL of the RSS feed to fetch (e.g., 'https://cointelegraph.com/rss').
    ctx (Context, optional): MCP context for logging or progress reporting.

Returns:
    str: A formatted Markdown string containing the feed title and up to 10 latest entries with titles, links, publication dates, and summaries converted from HTML to plain text.
ParametersJSON Schema
NameRequiredDescriptionDefault
feed_urlYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does reveal that the tool returns up to 10 latest entries with specific formatting (Markdown, HTML-to-plain-text conversion), which is valuable behavioral information. However, it doesn't mention error handling, rate limits, authentication requirements, or network timeout behavior.

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 perfectly structured and concise. It begins with a clear purpose statement, then provides organized sections for Parameters and Returns with specific, useful details. Every sentence earns its place with no wasted words.

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 single-parameter tool with no annotations and no output schema, the description provides substantial context about what the tool does and what it returns. The detailed return format description compensates well for the lack of output schema. The main gap is the lack of sibling tool differentiation.

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

Parameters5/5

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

The description provides excellent parameter semantics beyond the bare schema. While the schema only shows 'feed_url' as a string parameter, the description explains it's 'The URL of the RSS feed to fetch' and provides a concrete example ('https://cointelegraph.com/rss'). This adds significant value given the 0% schema description coverage.

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?

The description clearly states the verb ('Retrieve') and resource ('content of the specified RSS feed'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from its sibling tool 'get_crypto_rss_list', which appears to be a list operation rather than a content retrieval operation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. There's no mention of the sibling tool 'get_crypto_rss_list' or any other context about when this specific feed retrieval is appropriate versus other RSS-related operations.

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

TDQS

A3.8/5.0
Disambiguation5/5

The two tools have clearly distinct purposes: one retrieves a list of available RSS feeds, while the other fetches content from a specific RSS feed. There is no overlap in functionality, and the descriptions make their unique roles explicit.

Naming Consistency5/5

Both tools follow a consistent verb_noun pattern with 'get_' prefixes (get_crypto_rss_list and get_rss_feed). This naming scheme is predictable and aligns well with their actions, making them easy to distinguish and use.

Tool Count2/5

With only two tools, the server feels thin for its domain of cryptocurrency RSS feeds. While the tools cover basic retrieval, the lack of operations like filtering, updating, or managing feeds limits functionality and suggests an incomplete surface for typical RSS workflows.

Completeness2/5

The server is severely incomplete for handling cryptocurrency RSS feeds. It lacks essential operations such as adding, updating, or deleting feeds, as well as advanced features like search, categorization, or subscription management. This minimal set will likely cause agent failures in more complex tasks.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kukapay/crypto-rss-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server