Skip to main content
Glama
jvenkatasandeep

Finance News RSS MCP Server

Finance News RSS MCP Server

A Model Context Protocol (MCP) server that provides real-time finance news from major RSS feeds. Built with FastMCP to demonstrate MCP basics.

What This MCP Does

This MCP server gives Claude access to finance news from major sources including:

  • Bloomberg

  • Wall Street Journal (WSJ)

  • CNBC

  • Seeking Alpha

  • MarketWatch

  • Financial Times

The server provides two tools:

  1. get_latest_finance_news - Fetch the latest news from all sources or a specific source

  2. search_finance_news - Search across all feeds for articles matching a keyword

Related MCP server: News Aggregator MCP Server

Installation

Install dependencies using uv:

uv sync

How to Run

Start the MCP server:

uv run python main.py

Or configure it in your Claude Desktop app by adding to your MCP settings:

{
  "mcpServers": {
    "finance-news": {
      "command": "uv",
      "args": ["--directory", "/path/to/example", "run", "python", "main.py"]
    }
  }
}

Important Notes:

  • Replace /path/to/example with the actual path to your project directory

  • If you get a "spawn uv ENOENT" error, use the full path to uv:

    • Find it with: which uv

    • Common locations: ~/.local/bin/uv or ~/.cargo/bin/uv

    • Update command to the full path, e.g., "/Users/yourname/.local/bin/uv"

Example Questions to Ask Claude

Once connected, you can ask Claude questions like:

  • "What are the latest finance news headlines?"

  • "Get me the top 5 news articles from Bloomberg"

  • "Search for news about 'inflation' in finance feeds"

  • "What's the latest news from CNBC?"

  • "Find articles about 'Federal Reserve' or 'interest rates'"

  • "Show me recent Yahoo Finance headlines"

Available Tools

get_latest_finance_news

Fetch the latest finance news articles.

Parameters:

  • limit (int, default=10): Maximum number of articles to return

  • source (str, default="all"): News source to fetch from

    • Options: "all", "bloomberg", "wsj", "cnbc", "seekingalpha", "marketwatch", "ft"

Example:

get_latest_finance_news(limit=5, source="wsj")

search_finance_news

Search for articles matching a keyword across all feeds.

Parameters:

  • query (str, required): Search keyword to find in titles or descriptions

  • limit (int, default=10): Maximum number of matching articles to return

Example:

search_finance_news(query="bitcoin", limit=5)

Implementation Details

  • No caching: Fetches RSS feeds on-demand for real-time updates

  • Error handling: Gracefully skips feeds that fail to load

  • Simple & clean: Single-file implementation, perfect portfolio piece

  • Dependencies: fastmcp, feedparser, httpx

Project Structure

example/
├── main.py             # MCP server implementation
├── pyproject.toml      # Project dependencies
├── uv.lock             # Dependency lock file
└── README.md           # This file

How It Works

The server uses:

  • FastMCP to create the MCP server and register tools

  • httpx to fetch RSS feed URLs

  • feedparser to parse RSS/Atom feeds into structured data

Each tool fetches feeds in real-time, parses them, and returns structured article data including title, link, published date, description, and source name.

License

MIT

Available Tools

2 tools
get_latest_finance_newsA

Get the latest finance news from RSS feeds.

Args: limit: Maximum number of articles to return (default: 10) source: News source to fetch from. Options: "all", "bloomberg", "wsj", "cnbc", "seekingalpha", "marketwatch", "ft" (default: "all")

Returns: List of articles with title, link, published_date, description, and source_name

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sourceNoall

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of explaining behavior. It states that the tool fetches from RSS feeds and returns a list of articles, implying a read-only operation. However, it does not explicitly confirm read-only status or disclose potential side effects, error conditions, or rate limits.

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 well-structured docstring with a one-line summary, Args section, and Returns section. It is concise, with every sentence adding value, and lists source options compactly.

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 covers the tool's purpose, parameters, and return format, which is sufficient for a simple RSS-fetching tool with no required parameters. It lacks a brief note on error handling or source availability, but otherwise is complete enough given the low complexity.

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 fully explains both parameters: 'limit' (maximum number of articles) and 'source' (with a list of allowed values like bloomberg, wsj, cnbc). This adds significant meaning beyond the schema, which only specifies type and default.

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 'Get the latest finance news from RSS feeds,' which is a specific verb ('Get') and resource ('latest finance news from RSS feeds'). This distinguishes it from the sibling tool 'search_finance_news' by emphasizing 'latest' rather than search.

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 the sibling 'search_finance_news.' It does not mention any alternatives, exclusions, or conditions for use, leaving the agent without explicit context for tool selection.

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

search_finance_newsA

Search finance news across all RSS feeds by keyword.

Args: query: Search keyword to find in article titles or descriptions limit: Maximum number of matching articles to return (default: 10)

Returns: List of matching articles with title, link, published_date, description, and source_name

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/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 carry the behavioral burden. It clearly states it searches titles and descriptions, respects a limit, and returns a list of articles with specified fields. However, it does not disclose ordering, error handling, or rate limits, leaving some typical search behavior undocumented.

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 concise and well-structured, with a one-sentence summary followed by clearly separated Args and Returns sections. Every line is informative, especially because the schema lacks descriptions, making the parameter explanations essential.

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 the tool's simplicity (2 parameters, output schema exists), the description covers the essential aspects: what it searches, how to control the result size, and what the returned entries contain. It does not repeat output schema details excessively, though it could mention ordering or other edge cases for full completeness.

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 input schema has 0% description coverage, but the tool description fully compensates by explaining the query parameter (keyword to find in titles/descriptions) and the limit parameter (maximum articles, default 10). This adds meaningful semantics beyond the bare schema types.

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 action ('Search finance news') and a clear resource ('across all RSS feeds') with a keyword parameter. This clearly distinguishes it from the sibling get_latest_finance_news, which implies fetching without a keyword filter.

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?

The description implies usage when you need to search by keyword rather than just getting the latest news, but it does not explicitly mention the sibling tool or provide when-to-use/when-not-to-use guidance. The 'Args' section clarifies inputs but lacks direct comparison to alternatives.

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. 2 tool updatesv0.1.0
    • First observedget_latest_finance_news
    • First observedsearch_finance_news

TDQS

A4.1/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one fetches the latest articles (optionally filtered by source), while the other searches by keyword. There is no overlap in functionality that would cause confusion.

Naming Consistency5/5

Both tools follow the same verb_noun pattern: get_latest_finance_news and search_finance_news. The names are descriptive and consistent.

Tool Count4/5

With only two tools, the server feels minimal but well-scoped for its purpose of fetching and searching finance news. It is slightly thin, but each tool serves a distinct and necessary function.

Completeness4/5

The server covers the core operations for a news RSS reader: retrieving latest news (with source filtering) and searching. Minor gaps exist, such as lack of pagination or category filtering, but agents can accomplish typical tasks without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides comprehensive financial market data and news through the Finnhub API. Enables real-time stock quotes, company profiles, financial metrics, analyst recommendations, and market news access.
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Fetches news from trusted global sources using NewsAPI and RSS feeds, enabling search, headline retrieval, and source listing.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to search and retrieve real-time financial news from Finnhub via natural language queries.
    7 npm
    6
    Apache 2.0