Skip to main content

A Model Context Protocol server for an investor agent

Project description

MseeP.ai Security Assessment Badge

Trust Score

investor-agent: A Financial Analysis MCP Server

Overview

The investor-agent is a Model Context Protocol (MCP) server that provides comprehensive financial insights and analysis to Large Language Models. It leverages real-time market data, fundamental and technical analysis to deliver:

  • Market Movers: Top gainers, losers, and most active stocks with support for different market sessions
  • Ticker Analysis: Company overview, news, metrics, analyst recommendations, and upgrades/downgrades
  • Options Data: Filtered options chains with customizable parameters
  • Historical Data: Price trends and earnings history
  • Financial Statements: Income, balance sheet, and cash flow statements
  • Ownership Analysis: Institutional holders and insider trading activity
  • Earnings Calendar: Upcoming earnings announcements with date filtering
  • Market Sentiment: CNN Fear & Greed Index, Crypto Fear & Greed Index, and Google Trends sentiment analysis
  • Technical Analysis: SMA, EMA, RSI, MACD, BBANDS indicators (optional)
  • Intraday Data: 15-minute historical stock bars via Alpaca API (optional)

The server integrates with yfinance for market data and automatically optimizes data volume for better performance.

Architecture & Performance

Robust Caching & Error Handling Strategy:

  1. yfinance[nospam] → Built-in smart caching + rate limiting for Yahoo Finance API
  2. hishel → HTTP response caching for external APIs (CNN, crypto, earnings data)
  3. tenacity → Retry logic with exponential backoff for transient failures

This multi-layered approach ensures reliable data delivery while respecting API rate limits and minimizing redundant requests.

Prerequisites

  • Python: 3.12 or higher
  • Package Manager: uv. Install if needed:
    curl -LsSf https://astral.sh/uv/install.sh | sh
    

Optional Dependencies

Installation

Quick Start

# Core features only
uvx investor-agent

# With technical indicators (requires TA-Lib)
uvx "investor-agent[ta]"

# With Alpaca intraday data (requires Alpaca API keys)
uvx "investor-agent[alpaca]"

# With all optional features
uvx "investor-agent[ta,alpaca]"

Tools

Market Data

  • get_market_movers(category="most-active", count=25, market_session="regular") - Market movers data including top gainers, losers, or most active stocks. Supports different market sessions (regular/pre-market/after-hours) for most-active category. Returns up to 100 stocks with cleaned percentage changes, volume, and market cap data
  • get_ticker_data(ticker, max_news=5, max_recommendations=5, max_upgrades=5) - Comprehensive ticker report with essential field filtering and configurable limits for news, analyst recommendations, and upgrades/downgrades
  • get_options(ticker_symbol, num_options=10, start_date=None, end_date=None, strike_lower=None, strike_upper=None, option_type=None) - Options data with advanced filtering by date range (YYYY-MM-DD), strike price bounds, and option type (C=calls, P=puts)
  • get_price_history(ticker, period="1mo") - Historical OHLCV data with intelligent interval selection: daily intervals for periods ≤1y, monthly intervals for periods ≥2y to optimize data volume
  • get_financial_statements(ticker, statement_types=["income"], frequency="quarterly", max_periods=8) - Financial statements with parallel fetching support. Returns dict with statement type as key
  • get_institutional_holders(ticker, top_n=20) - Major institutional and mutual fund holders data
  • get_earnings_history(ticker, max_entries=8) - Historical earnings data with configurable entry limits
  • get_insider_trades(ticker, max_trades=20) - Recent insider trading activity with configurable trade limits
  • get_nasdaq_earnings_calendar(date=None, limit=100) - Upcoming earnings announcements using Nasdaq API (YYYY-MM-DD format, defaults to today).
  • fetch_intraday_data(stock, window=200) - Fetch 15-minute historical stock bars using Alpaca API. Returns CSV string with timestamp and close price data in EST timezone. Requires investor-agent[alpaca] installation and ALPACA_API_KEY/ALPACA_API_SECRET environment variables.

Market Sentiment

  • get_cnn_fear_greed_index(indicators=None) - CNN Fear & Greed Index with selective indicator filtering. Available indicators: fear_and_greed, fear_and_greed_historical, put_call_options, market_volatility_vix, market_volatility_vix_50, junk_bond_demand, safe_haven_demand
  • get_crypto_fear_greed_index() - Current Crypto Fear & Greed Index with value, classification, and timestamp
  • get_google_trends(keywords, period_days=7) - Google Trends relative search interest for market-related keywords. Requires a list of keywords to track (e.g., ["stock market crash", "bull market", "recession", "inflation"]). Returns relative search interest scores that can be used as sentiment indicators.

Technical Analysis

  • calculate_technical_indicator(ticker, indicator, period="1y", timeperiod=14, fastperiod=12, slowperiod=26, signalperiod=9, nbdev=2, matype=0, num_results=100) - Calculate technical indicators (SMA, EMA, RSI, MACD, BBANDS) with configurable parameters and result limiting. Returns dictionary with price_data and indicator_data as CSV strings. matype values: 0=SMA, 1=EMA, 2=WMA, 3=DEMA, 4=TEMA, 5=TRIMA, 6=KAMA, 7=MAMA, 8=T3. Requires TA-Lib library.

Usage with MCP Clients

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "investor": {
      "command": "uvx",
      "args": ["investor-agent"]
    }
  }
}

Local Testing

For local development and testing, use the included chat.py script:

# Install dev dependencies
uv sync --group dev

# Set up your API key
export OPENAI_API_KEY="your-api-key"  # or ANTHROPIC_API_KEY, GEMINI_API_KEY, etc.

# Optional: Set custom model (defaults to openai:gpt-5-mini)
export MODEL_IDENTIFIER="your-preferred-model"

# Run the chat interface
python chat.py

For available model providers and identifiers, see the pydantic-ai documentation.

Debugging

npx @modelcontextprotocol/inspector uvx investor-agent

License

MIT License. See LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

investor_agent-1.3.3.tar.gz (129.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

investor_agent-1.3.3-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

File details

Details for the file investor_agent-1.3.3.tar.gz.

File metadata

  • Download URL: investor_agent-1.3.3.tar.gz
  • Upload date:
  • Size: 129.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for investor_agent-1.3.3.tar.gz
Algorithm Hash digest
SHA256 0b3e615c697d9ed69f77e2a3c6b90eb080f768f576ed3e998ee3a60769828bcf
MD5 5bb787eb94bd1fd3202e125c88b94dff
BLAKE2b-256 9ee642e53dcc41bdcd81c9ba17c4570aba49b04e472fb9873dc7fcd57631351d

See more details on using hashes here.

File details

Details for the file investor_agent-1.3.3-py3-none-any.whl.

File metadata

  • Download URL: investor_agent-1.3.3-py3-none-any.whl
  • Upload date:
  • Size: 14.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for investor_agent-1.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 01e92315483f393567f9f8e7a5cd0415a9978d7c80efa331a9efdffbca05b8ae
MD5 dc82a0d61a8baa4e5a0491e0d3c8f137
BLAKE2b-256 573eba5cef03fd4bcb013dae4f8ec3d193e664b5e8b638a39e38cf3a83f7a983

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page