Skip to main content
Glama
NonmaskableInt

AlphaVantage MCP Server

README.md
# 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

A3.5/5.0

Scored across 9 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues