Skip to main content
Glama
bxxd

mcp-yfinance-ux

by bxxd

mcp-yfinance-ux

For AI agents: Market data in Bloomberg Terminal format. Not raw JSON - I give you formatted tables you can read directly. Navigate like BBG: markets()sector('technology')ticker('AAPL')ticker_options('AAPL'). Smart defaults (auto-detects market hours), progressive disclosure (summary → detail).

For humans: Dense, scannable screens. Factor exposures, momentum, options positioning - all formatted like a professional terminal.

Technical: Local stdio server, powered by yfinance. All queries user-initiated (no automation - this is a research tool, not production infrastructure).

Example Output

Our differentiator: BBG Lite formatted, agent-friendly screens

MARKETS | Sun 2025-10-26 12:42 EDT

US EQUITIES                   PRICE     CHANGE       1M         1Y
S&P 500                      6791.69    +0.79%     +2.2%     +16.9%
Nasdaq                      23204.87    +1.15%     +3.2%     +25.3%
Dow                         47207.12    +1.01%     +2.1%     +12.1%
Russell 2000                 2513.47    +1.24%     +3.3%     +13.8%

SECTORS          TICKER      PRICE     CHANGE       1M         1Y
Technology       XLK          293.58    +1.23%     +5.3%     +28.3%
Financials       XLF           53.11    +0.84%     -1.4%     +15.6%
Healthcare       XLV          146.03    -0.05%     +7.8%      +0.0%
Energy           XLE           88.07    -1.01%     -4.3%      +1.4%
[... all 11 GICS sectors]

COMMODITIES                   PRICE     CHANGE       1M         1Y
Gold                         4137.80    +0.05%     +9.6%     +51.0%
Oil WTI                        61.50    +0.10%     -6.4%     -14.3%

Data as of 2025-10-26 12:42 EDT | Source: yfinance

Dense, scannable, professional. Not raw JSON - formatted for humans, AI benefits automatically.

Related MCP server: TickerAPI

Features

Bloomberg Terminal-style navigation screens for market data:

  • markets() - Complete factor landscape (US equities, global, sectors, styles, commodities, volatility)

  • sector(name) - Sector drill-down with top holdings and factor exposures

  • ticker(symbol) - Individual security analysis with full factor decomposition

  • Batch comparison - Side-by-side stock analysis with key factors

  • Calendar integration - Earnings dates, dividend schedules

  • BBG Lite formatting - Dense, scannable, professional output

Library Architecture

mcp-yfinance-ux includes a reusable library for reliable yfinance data fetching.

lib/yfinance_fetcher.py

ONE SOURCE OF TRUTH for yfinance fetching logic:

  • Individual yf.Ticker().history() calls with ThreadPoolExecutor (RELIABLE)

  • NOT yf.download() batch API (UNRELIABLE - timeouts, fails entire batch)

Used by:

  1. MCP server - mcp_yfinance_ux/historical.py imports from lib/

  2. Portfolio scripts - Can be copied to portfolio agents for reliable fetching

  3. Any Python code - Pure logic, no MCP dependencies

Key functions:

  • fetch_price_history(symbol, months=12) - Single symbol history

  • fetch_multiple_histories(symbols, months=12) - Parallel multi-symbol fetch

  • fetch_ticker_and_market(symbol, months=12) - Ticker + market data (for factor analysis)

  • fetch_price_at_date(symbol, date) - Price at specific date (narrow window)

Why this pattern works:

  • Individual fetches don't fail as a batch

  • ThreadPoolExecutor provides parallelism without batch API

  • Proven in production use (MCP server serving real users)

Documentation: See lib/README.md for usage examples and deployment workflow.

Important: Usage Limitations

This tool is designed for ad-hoc, user-initiated requests only. Not for automation.

What yfinance Is

yfinance is an unofficial web scraper, not a sanctioned Yahoo Finance API. It mimics browser requests to fetch financial data.

Implications:

  • Can break at any time - Yahoo site changes can break the library entirely

  • No official rate limits - Because it's not an official API

  • Prone to blocking - Automated polling or high-volume requests trigger Yahoo's anti-scraping measures (429 errors, IP bans)

  • No guarantees - Yahoo tightened restrictions significantly around early 2024

Safe Usage (What This Tool Does)

✅ Appropriate use cases:

  • Ad-hoc market checks and analysis

  • One-off stock research

  • Manual thesis development

  • Occasional queries for specific data

All queries are user-initiated and interactive.

Unsafe Usage (Don't Do This)

❌ Never use this for:

  • Cron jobs or scheduled updates

  • Automated monitoring loops

  • Background processes polling for data

  • Production infrastructure

  • Real-time portfolio tracking

If you need automation or production-grade data, use official APIs instead (Alpha Vantage, Polygon.io, IEX Cloud, etc.)

Bottom Line

This MCP server is a research tool for occasional queries, not production infrastructure. Perfect for PMF testing and ad-hoc analysis. Not suitable for automation or continuous monitoring.

Installation

1. Clone and install dependencies

git clone https://github.com/bxxd/idio-mcp-yfinance-ux.git
cd idio-mcp-yfinance-ux
poetry install

2. Configure MCP Client

Note: This is a local stdio MCP server. It runs on your machine and connects to MCP clients via standard I/O (not HTTP/network). All data stays local.

Method 1: Using make -C (recommended)

From your project directory:

claude mcp add idio-yf make -C /absolute/path/to/mcp-yfinance-ux serve

Or manually add to ~/.claude.json under your project's mcpServers:

{
  "projects": {
    "/path/to/your/project": {
      "mcpServers": {
        "idio-yf": {
          "type": "stdio",
          "command": "make",
          "args": ["-C", "/absolute/path/to/mcp-yfinance-ux", "serve"],
          "env": {}
        }
      }
    }
  }
}

Why this approach?

  • Single source of truth (Makefile defines the server command)

  • No need to remember poetry/python invocation details

  • Self-documenting (Makefile is version controlled)

  • Works from any directory (make -C handles working directory)

Method 2: Direct command (alternative)

If you prefer not to use make:

claude mcp add idio-yf poetry run python -m mcp_yfinance_ux.server --cwd /path/to/mcp-yfinance-ux

Or manually:

{
  "projects": {
    "/path/to/your/project": {
      "mcpServers": {
        "idio-yf": {
          "type": "stdio",
          "command": "poetry",
          "args": ["run", "python", "-m", "mcp_yfinance_ux.server"],
          "cwd": "/absolute/path/to/mcp-yfinance-ux",
          "env": {}
        }
      }
    }
  }
}

Note: For claude CLI users, MCP servers are configured per-project in ~/.claude.json. Other MCP clients may have different configuration methods.

Method 3: SSE/HTTP Server (for web-based deployments)

For web interfaces or when you need a persistent HTTP server:

# Start HTTP server (runs in background on port 5001)
make server

# Or specify custom port
PORT=8080 make server

# Check logs
make logs

Configure Claude Code to use SSE transport:

{
  "projects": {
    "/path/to/your/project": {
      "mcpServers": {
        "yfinance-ux": {
          "type": "sse",
          "url": "http://127.0.0.1:5001/sse"
        }
      }
    }
  }
}

When to use SSE:

  • Web-based Claude Code deployments (e.g., browser terminals)

  • Multiple clients sharing one server instance

  • Debugging without restarting Claude Code

When to use stdio:

  • Local CLI usage (standard approach)

  • Single-user development environment

3. Restart MCP Client

After configuration, restart your MCP client to load the server.

How it works:

  • stdio mode: MCP client launches server as subprocess, communicates via stdin/stdout

  • SSE mode: MCP client connects to persistent HTTP server via Server-Sent Events

Usage

Navigation hierarchy like Bloomberg Terminal:

markets() → sector('technology') → ticker('AAPL')

markets() - Market Overview

Complete factor landscape with no parameters:

mcp__idio_yf__markets()

Shows:

  • US EQUITIES - S&P 500, Nasdaq, Dow, Russell 2000 (with Beta, 1M/1Y momentum)

  • GLOBAL - Europe (STOXX 50), Asia (Nikkei), China (Shanghai)

  • SECTORS - All 11 GICS sectors (XLK, XLF, XLV, etc.) with Beta and momentum

  • STYLES - Momentum (MTUM), Value (VTV), Growth (VUG), Quality (QUAL), Size (IWM)

  • COMMODITIES - Gold, Oil, Natural Gas (with Beta and momentum)

  • VOLATILITY & RATES - VIX, 10Y Treasury

Auto-detects market hours (shows futures after hours, indices during market).

sector(name) - Sector Drill-Down

Detailed sector analysis with top holdings:

mcp__idio_yf__sector(name='technology')

Shows:

  • Sector ETF price and momentum (1M, 1Y)

  • Beta to SPX, idiosyncratic volatility

  • Top 10 holdings with symbol, name, weight, and individual betas

Available sectors: technology, financials, healthcare, energy, consumer_disc, consumer_stpl, industrials, utilities, materials, real_estate, communication

ticker(symbol) - Individual Security Analysis

Complete factor decomposition for stocks:

mcp__idio_yf__ticker(symbol='AAPL')

Shows:

  • Factor Exposures - Beta (SPX), idiosyncratic volatility, total volatility

  • Valuation - P/E ratio, forward P/E, dividend yield

  • Calendar - Next earnings date with estimates, ex-dividend date, payment date

  • Momentum & Technicals - 1M/1Y returns, RSI (14D), 50/200-day moving averages

  • 52-Week Range - Visual bar showing current position

Batch Comparison

Side-by-side stock comparison:

mcp__idio_yf__ticker(symbol=['TSLA', 'F', 'GM'])

Table format showing: Symbol, Name, Price, Change%, Beta, Idio Vol, 1Y Momentum, P/E, Dividend Yield, RSI

Output Format

BBG Lite style - Dense, scannable, professional formatting like Bloomberg Terminal.

Example ticker() output:

AAPL US EQUITY                   LAST PRICE  262.24 +9.95  +3.94%
Apple Inc.                               MKT CAP  3891.7B    VOLUME  90.1M

FACTOR EXPOSURES
Beta (SPX)       1.09
Idio Vol         21.7%
Total Vol        32.8%

VALUATION
P/E Ratio         39.85
Forward P/E       31.56
Dividend Yield    0.40%

CALENDAR
Earnings         Oct 30, 2025  (Est $1.77 EPS)
Ex-Dividend      Aug 11, 2025
Div Payment      Aug 14, 2025

MOMENTUM & TECHNICALS
1-Month            +6.8%
1-Year            +11.4%
50-Day MA         241.73
200-Day MA        222.14
RSI (14D)         59.5

52-WEEK RANGE
High              264.38
Low               169.21
Current           262.24  [===================░]  98% of range

Example batch comparison:

TICKER COMPARISON 2025-10-21 08:42 EDT

SYMBOL   NAME                                PRICE     CHG%   BETA   IDIO    MOM1Y      P/E   DIV%    RSI
---------------------------------------------------------------------------------------------------------
AAPL     Apple Inc.                         262.24   +3.94%   1.09  21.7%   +11.4%    39.85  0.40%   59.5
MSFT     Microsoft Corporation              516.79   +0.63%   1.02  17.0%   +24.3%    37.89  0.70%   48.8
GOOGL    Alphabet Inc.                      256.55   +1.28%   1.00  25.5%   +57.1%    27.32  0.33%   66.1

Clean, readable, immediately useful.

Development

Quick Start

Using Makefile (recommended):

make all        # Run lint + test (ALWAYS before committing)
make test       # Run tests
make lint       # Run type checking + linting
make lint-fix   # Auto-fix linting issues
make serve      # Run MCP server (stdio mode)
make help       # Show all commands

Manual testing (no MCP required):

# Test screens via CLI (no MCP restart needed)
./cli markets
./cli sector technology
./cli ticker AAPL
./cli ticker TSLA F GM    # Batch comparison

Documentation

  • DEVELOPER.md - Design philosophy, engineering principles, development process

  • CLAUDE.md - Additional context and development notes

Design Principles

  • Separation of Concerns - Business logic has zero MCP dependencies

  • Single Source of Truth - One true path for every piece of data/logic

  • Human-Readable Output - Format for humans, not machines

  • Keep It Simple - Match manual testing exactly, no overengineering

License

MIT

F
license - not found
-
quality - not tested
-
maintenance - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

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/bxxd/mcp-yfinance-ux'

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