AlphaVantage MCP Server
# AlphaVantage MCP Server
A Model Context Protocol (MCP) server that provides comprehensive market data and fundamental analysis through the AlphaVantage API. Designed for integration with Claude Desktop and other MCP-compatible clients.
## Requirements
- Python 3.10 - 3.12
- [uv](https://docs.astral.sh/uv/) package manager
- AlphaVantage API key ([get one free](https://www.alphavantage.co/support/#api-key))
## Installation
```bash
# Clone the repository
git clone <repo-url>
cd alphavantage_mcp
# Install dependencies
uv sync
```
## Configuration
Set your AlphaVantage API key as an environment variable:
```bash
# macOS/Linux
export ALPHA_VANTAGE_API_KEY=your_key_here
# Windows (Command Prompt)
set ALPHA_VANTAGE_API_KEY=your_key_here
# Windows (PowerShell)
$env:ALPHA_VANTAGE_API_KEY="your_key_here"
```
Or create a `.env` file in the project directory:
```
ALPHA_VANTAGE_API_KEY=your_alphavantage_api_key
```
### Server Configuration (Optional)
| Variable | Description | Default |
|----------|-------------|---------|
| `ALPHAVANTAGE_DEBUG` | Enable debug mode | `false` |
| `ALPHAVANTAGE_PORT` | Server port | `8002` |
| `ALPHAVANTAGE_LOG_LEVEL` | Log level (DEBUG, INFO, WARNING, ERROR) | `INFO` |
## Running the Server
```bash
# Direct execution
uv run alphavantage-mcp-server
# Using launch script (macOS/Linux)
./launch-alphavantage.sh
# Using launch script (Windows)
launch-alphavantage.bat
```
## Usage with Claude Desktop
Add to your Claude Desktop configuration file:
| Platform | Config Location |
|----------|-----------------|
| macOS | `~/Library/Application Support/Claude/claude_desktop_config.json` |
| Windows | `%APPDATA%\Claude\claude_desktop_config.json` |
| Linux | `~/.config/Claude/claude_desktop_config.json` |
**Option 1: Using launch script (recommended)**
```json
{
"mcpServers": {
"alphavantage-data": {
"command": "/path/to/alphavantage_mcp/launch-alphavantage.sh",
"env": {
"ALPHA_VANTAGE_API_KEY": "your_key"
}
}
}
}
```
**Option 2: Using absolute path to uv**
First, find your `uv` path: `which uv`
```json
{
"mcpServers": {
"alphavantage-data": {
"command": "/Users/yourname/.local/bin/uv",
"args": ["run", "alphavantage-mcp-server"],
"cwd": "/path/to/alphavantage_mcp",
"env": {
"ALPHA_VANTAGE_API_KEY": "your_key"
}
}
}
}
```
**Note:** GUI applications like Claude Desktop don't inherit your shell's PATH, so using absolute paths is more reliable than relying on `uv` being in PATH.
On Windows, use backslashes: `"cwd": "C:\\path\\to\\alphavantage_mcp"`
## Available Tools
### Fundamental Data
| Tool | Description | Parameters |
|------|-------------|------------|
| `get_company_overview` | Company fundamentals including PE ratio, market cap, EPS, margins, and more | `symbol` |
| `get_income_statement` | Annual income statement data (last 20 periods) | `symbol` |
| `get_balance_sheet` | Annual balance sheet data (last 20 periods) | `symbol` |
| `get_cash_flow` | Annual cash flow statements (last 20 periods) | `symbol` |
| `get_earnings` | Quarterly or annual earnings data | `symbol`, `period` (quarterly/annual) |
### Market Data
| Tool | Description | Parameters |
|------|-------------|------------|
| `get_daily_prices` | Daily OHLCV data | `symbol`, `outputsize` (compact=100 days, full=20+ years) |
| `get_intraday_prices` | Intraday price data | `symbol`, `timeframe` (TimeFrame enum), `outputsize` |
### News & Sentiment
| Tool | Description | Parameters |
|------|-------------|------------|
| `get_market_news` | Market news with sentiment analysis | `tickers` (list), `topics` (list), `time_from`, `time_to`, `limit` |
### Technical Analysis
| Tool | Description | Parameters |
|------|-------------|------------|
| `get_technical_indicators` | Calculate technical indicators | `symbol`, `indicator` (TechnicalIndicator enum), `timeframe` (TimeFrame enum), `time_period` |
**Supported indicators (TechnicalIndicator enum):**
- `RSI` - Relative Strength Index
- `MACD` - Moving Average Convergence Divergence
- `BOLLINGER_BANDS` - Bollinger Bands
- `SMA` - Simple Moving Average
- `EMA` - Exponential Moving Average
- `STOCHASTIC` - Stochastic Oscillator
- `ADX` - Average Directional Index
- `WILLIAMS_R` - Williams %R
**Supported timeframes (TimeFrame enum):**
- `MINUTE` - 1 minute
- `FIVE_MINUTES` - 5 minutes
- `FIFTEEN_MINUTES` - 15 minutes
- `THIRTY_MINUTES` - 30 minutes
- `HOUR` - 1 hour
- `DAILY` - Daily
- `WEEKLY` - Weekly
- `MONTHLY` - Monthly
## Examples
**Get company fundamentals:**
```
"Get the company overview for AAPL"
```
**Analyze price trends:**
```
"Show me the daily prices for TSLA over the last 100 days"
```
**Technical analysis:**
```
"Calculate the RSI for MSFT with a 14-day period"
```
**Market news:**
```
"Get recent news about NVDA with sentiment analysis"
```
## Development
```bash
# Install with dev dependencies
uv sync --extra dev
# Run the server directly
uv run alphavantage-mcp-server
# Run tests
uv run pytest
# Type checking
uv run mypy .
# Format code
uv run black .
```
## API Rate Limits
The free AlphaVantage API tier allows 25 requests per day. Consider upgrading to a premium plan for higher limits.
## Security Notes
- Never commit API keys to version control
- Use environment variables or secure secret management for API keys
- The server validates all inputs to prevent injection attacks
TDQS
Scored across 9 tools
Each tool has a clearly distinct purpose targeting specific financial data types (balance sheet, cash flow, prices, news, indicators). The descriptions clearly differentiate between financial statements, price data, news, and technical analysis, with no overlapping functionality that would cause confusion.
All tools follow a consistent 'get_[resource]' naming pattern with snake_case throughout. The pattern is predictable and readable, making it easy to understand what each tool retrieves without examining descriptions.
With 9 tools, this server is well-scoped for financial data retrieval. Each tool serves a distinct purpose in the AlphaVantage domain, covering financial statements, price data, news, and technical indicators without being overwhelming or sparse.
The toolset provides comprehensive coverage for financial data retrieval including statements, price data, news, and technical indicators. Minor gaps might include portfolio management or trading operations, but for a data-focused server, it covers the core financial analysis workflows effectively.