@qubaomingg/stock-mcp
# Alpha Vantage Stock MCP Server
This is a Model Context Protocol (MCP) server that provides stock market data from Alpha Vantage API. It allows Claude and other MCP clients to access real-time and historical stock data.
## Features
- Get intraday stock data with customizable intervals
- Get daily stock data
- Generate stock alerts based on price movements
- Access stock data as resources
## Prerequisites
- Node.js 16 or higher
- An Alpha Vantage API key (get one for free at [Alpha Vantage](https://www.alphavantage.co/support/#api-key))
## Installation
1. Clone this repository
2. Install dependencies:
```
npm install
```
3. Create a `.env` file in the root directory and add your Alpha Vantage API key:
```
ALPHA_VANTAGE_API_KEY=your_api_key_here
```
## Building and Running
Build the TypeScript code:
```
npm run build
```
Run the server:
```
npm start
```
For development with auto-reloading:
```
npm run dev
```
Test the API client:
```
npm test
```
## Using with Claude for Desktop
To use this MCP server with Claude for Desktop:
1. Open Claude for Desktop
2. Go to Settings > Developer > Edit Config
3. Add the following to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"alpha-vantage": {
"command": "node",
"args": ["/absolute/path/to/dist/index.js"],
"env": {
"ALPHA_VANTAGE_API_KEY": "YOUR_API_KEY"
}
}
}
}
```
Replace `/absolute/path/to/dist/index.js` with the absolute path to the built index.js file.
4. Restart Claude for Desktop
## Available Tools
### get-stock-data
Gets intraday stock data for a specific symbol.
Parameters:
- `symbol` (required): Stock symbol (e.g., IBM, AAPL)
- `interval` (optional): Time interval between data points (1min, 5min, 15min, 30min, 60min). Default: 5min
- `outputsize` (optional): Amount of data to return (compact: latest 100 data points, full: up to 20 years of data). Default: compact
### get-daily-stock-data
Gets daily stock data for a specific symbol.
Parameters:
- `symbol` (required): Stock symbol (e.g., IBM, AAPL)
- `outputsize` (optional): Amount of data to return (compact: latest 100 data points, full: up to 20 years of data). Default: compact
### get-stock-alerts
Analyzes stock data to generate alerts based on price movements.
Parameters:
- `symbol` (required): Stock symbol (e.g., IBM, AAPL)
- `threshold` (optional): Percentage threshold for price movement alerts. Default: 5
## Available Resources
### stock-data
Access stock data directly as a resource.
URI Template: `stock://{symbol}/{interval}`
Parameters:
- `symbol`: Stock symbol (e.g., IBM, AAPL)
- `interval`: Time interval (daily, 1min, 5min, 15min, 30min, 60min). Default: daily
Example usage in Claude:
- "Can you analyze this stock data: stock://AAPL/daily"
- "What do you think about this data: stock://MSFT/5min"
## License
ISC TDQS
Scored across 3 tools
The tools are highly ambiguous and overlapping. 'get-daily-stock-data' and 'get-stock-data' appear to serve nearly identical purposes, with no description to clarify their differences. 'get-stock-alerts' might be distinct but lacks context, making the overall set confusing and prone to misselection.
The naming is perfectly consistent, using a kebab-case pattern with a 'get-' prefix followed by a noun phrase. All three tools follow this exact convention, making them predictable and easy to parse.
With only 3 tools, the set feels thin and under-scoped for a stock data server. It lacks essential operations like search, update, or delete, and the limited coverage suggests it may not support comprehensive agent workflows in this domain.
The tool surface is severely incomplete for a stock data domain. It only provides 'get' operations with no ability to set, modify, or manage data (e.g., no create, update, delete, or search tools). This will cause significant agent failures in handling stock-related tasks.