MCP for Stock Market Analysis
A production-grade MCP server that provides tools to fetch historical stock data, company information, and technical indicators (SMA, EMA, RSI, MACD, Bollinger Bands) via yfinance, and includes a Flask web dashboard for visual analysis.
README
š MCP for Stock Market Analysis
A production-grade Model Context Protocol (MCP) server for stock market analysis, designed to work with Claude Desktop as the AI client. Includes a local Flask web dashboard for visual analysis.
Architecture
graph TD
subgraph Client Layer
CD[Claude Desktop]
FD[Flask Web Dashboard]
end
subgraph MCP Layer
MS[Python MCP Server]
end
subgraph Tools
FS[fetch_stock]
GC[get_company]
ST[statistics]
end
CD -- stdio --> MS
FD -- HTTP API --> MS
MS --> FS
MS --> GC
MS --> ST
FS -- yfinance --> API[Yahoo Finance API]
GC -- yfinance --> API
Dashboard Screenshots

Features
MCP Tools (used by Claude Desktop)
fetch_stockā Fetch OHLCV price history for any stock symbolget_companyā Company info: sector, market cap, P/E, 52-week range, etc.statisticsā Full technical analysis: SMA, EMA, RSI, MACD, Bollinger Bands, Volatility, Support/Resistance
Web Dashboard
- š Premium dark theme with glassmorphism
- š Interactive price charts (Chart.js)
- š RSI gauge, MACD display, Bollinger Bands visualization
- š Stock search with popular picks
- ā” Real-time data fetching
Quick Start
1. Setup Python Environment
cd "MCP for Stock Market Analysis"
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # Mac/Linux
pip install -r requirements.txt
2. Run the Flask Dashboard
python flask_app/app.py
Open http://localhost:5000 in your browser.
3. Connect to Claude Desktop
Add the following to your Claude Desktop config file:
Windows: %APPDATA%\Claude\claude_desktop_config.json
Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"stock-market-analysis": {
"command": "C:\\path\\to\\your\\project\\venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\your\\project\\mcp_server\\server.py"]
}
}
}
Important: You must replace
C:\path\to\your\project\with the actual absolute path to where you saved this folder on your computer. Make sure to use double backslashes\\in the JSON!
Restart Claude Desktop. You should see the stock market tools available.
4. Use with Claude Desktop
Ask Claude things like:
- "Fetch the stock data for AAPL for the last 3 months"
- "What are the technical indicators for Tesla?"
- "Give me a full analysis of NVDA including RSI, MACD, and Bollinger Bands"
- "Compare the volatility of AAPL vs MSFT"
Claude will automatically use the MCP tools to fetch data and provide analysis.
Project Structure
MCP for Stock Market Analysis/
āāā mcp_server/ # MCP Server (Python)
ā āāā server.py # Main MCP server entry point
ā āāā tools/
ā ā āāā stock_fetcher.py # Tool 1: Stock data fetcher
ā ā āāā statistics_tool.py # Tool 2: Technical indicators
ā āāā database/
ā āāā db.py # SQLite caching layer
ā
āāā flask_app/ # Web Dashboard
ā āāā app.py # Flask application
ā āāā templates/
ā ā āāā index.html # Dashboard HTML
ā āāā static/
ā āāā css/style.css # Premium dark theme
ā āāā js/app.js # Dashboard logic
ā
āāā requirements.txt # Python dependencies
āāā claude_desktop_config.json # Claude Desktop config snippet
āāā .env.example # Environment template
āāā .gitignore
āāā README.md
Technical Indicators
| Indicator | Description | Signal |
|---|---|---|
| SMA (10, 20, 50) | Simple Moving Average | Price above SMA = Bullish |
| EMA (12, 26) | Exponential Moving Average | EMA12 > EMA26 = Bullish |
| RSI (14) | Relative Strength Index | <30 Oversold, >70 Overbought |
| MACD (12, 26, 9) | Moving Average Convergence Divergence | Histogram > 0 = Bullish |
| Bollinger Bands (20, 2Ļ) | Volatility bands | Position in band |
| Volatility | Standard deviation of returns | Annual risk level |
| Support/Resistance | Key price levels | 20-day high/low |
API Endpoints (Flask Dashboard)
| Endpoint | Method | Description |
|---|---|---|
/api/stock/<symbol> |
GET | Fetch OHLCV data |
/api/company/<symbol> |
GET | Company information |
/api/statistics/<symbol> |
GET | Technical indicators |
/api/health |
GET | Health check |
Query parameters: period (1d, 5d, 1mo, 3mo, 6mo, 1y, 5y), interval (1d, 1wk, 1mo)
Tech Stack
- MCP Server: Python,
mcp[cli]SDK - Data: yfinance, pandas, numpy
- Dashboard: Flask, Chart.js, vanilla CSS
- Database: SQLite (auto-created)
- AI Client: Claude Desktop (free tier)
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.