Python MCP server that exposes stock-analysis tools
Local Stock Analyst MCP (Python)
Python MCP server that exposes stock-analysis tools with:
- Finnhub as primary provider
- Alpha Vantage as fallback
- local fallback calculations for RSI and MACD
stdioand Render-compatible HTTP transport support
Tools
get_stock_priceget_quoteget_company_profileget_candlesget_stock_newsget_rsiget_macdget_key_financialsget_portfoliolist_sell_decision_data_requirementsanalyze_portfolio_for_sellget_smaget_emaget_bollinger_bandsget_atrget_adxget_stochasticget_obvget_vwapget_support_resistance_levelsdetect_chart_patternsget_market_indicesgenerate_buy_sell_hold_signal
Requirements
- Python 3.11+
- API key for at least one provider:
FINNHUB_API_KEYALPHAVANTAGE_API_KEY
Setup
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
Run Locally
Stdio Mode (Claude Desktop local MCP)
$env:TRANSPORT_MODE="stdio"
python -m mcp_server
HTTP Mode (Render/local web MCP)
$env:TRANSPORT_MODE="http"
$env:HOST="0.0.0.0"
$env:PORT="8000"
python -m mcp_server
Optional HTTP transport mode:
HTTP_TRANSPORT=sse(default)HTTP_TRANSPORT=streamable
Health endpoint defaults to /health.
Claude Desktop (Windows) Configuration
%APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"local-stock-analyst": {
"command": "python",
"args": ["-m", "mcp_server"],
"cwd": "D:/mcpserverdemo/mcplocalstockliveinpythonrender",
"env": {
"TRANSPORT_MODE": "stdio",
"FINNHUB_API_KEY": "YOUR_FINNHUB_KEY",
"ALPHAVANTAGE_API_KEY": "YOUR_ALPHA_VANTAGE_KEY"
}
}
}
}
Render
Set environment variables:
TRANSPORT_MODE=auto(orhttp)HOST=0.0.0.0PORTprovided by Render- provider API keys
Build command:
pip install -r requirements.txt
Start command:
python -m mcp_server
Tests
python -m pytest -q
Tools (22)
get_stock_priceRetrieves the current stock price for a given symbol.get_quoteFetches detailed quote information for a stock.get_company_profileGets the company profile and business details.get_candlesRetrieves historical candle data for technical analysis.get_stock_newsFetches recent news articles related to a stock.get_rsiCalculates the Relative Strength Index for a stock.get_macdCalculates the Moving Average Convergence Divergence.get_key_financialsRetrieves key financial metrics for a company.get_portfolioRetrieves current portfolio data.analyze_portfolio_for_sellAnalyzes portfolio holdings to identify potential sell signals.get_smaCalculates the Simple Moving Average.get_emaCalculates the Exponential Moving Average.get_bollinger_bandsCalculates Bollinger Bands for a stock.get_atrCalculates the Average True Range.get_adxCalculates the Average Directional Index.get_stochasticCalculates the Stochastic Oscillator.get_obvCalculates the On-Balance Volume.get_vwapCalculates the Volume Weighted Average Price.get_support_resistance_levelsIdentifies support and resistance levels for a stock.detect_chart_patternsDetects common technical chart patterns.get_market_indicesRetrieves data for major market indices.generate_buy_sell_hold_signalGenerates a trading signal based on technical analysis.Environment Variables
FINNHUB_API_KEYAPI key for Finnhub data providerALPHAVANTAGE_API_KEYAPI key for Alpha Vantage data providerTRANSPORT_MODESets transport mode to stdio or httpConfiguration
{
"mcpServers": {
"local-stock-analyst": {
"command": "python",
"args": ["-m", "mcp_server"],
"cwd": "D:/mcpserverdemo/mcplocalstockliveinpythonrender",
"env": {
"TRANSPORT_MODE": "stdio",
"FINNHUB_API_KEY": "YOUR_FINNHUB_KEY",
"ALPHAVANTAGE_API_KEY": "YOUR_ALPHA_VANTAGE_KEY"
}
}
}
}