matteoantoci/mcp-alphavantage
If you are the rightful owner of mcp-alphavantage and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
Alpha Vantage MCP Server provides access to financial data through MCP tools, simplifying integration with MCP-compatible systems.
Alpha Vantage MCP Server
A Model Context Protocol (MCP) server that exposes various Alpha Vantage API endpoints as MCP tools, providing access to financial data including core stocks, options, intelligence, fundamental data, and technical indicators. This server simplifies integrating Alpha Vantage data into MCP-compatible agents and systems.
Prerequisites
- Node.js (v18 or later recommended)
- npm (comes with Node.js)
- Alpha Vantage API key
- (Optional) MCP-compatible client or runner (e.g., VSCode extension, CLI)
Setup
-
Clone the repository or ensure you are in the project directory.
-
Install dependencies:
npm install -
Configuration:
- Obtain an Alpha Vantage API key from https://www.alphavantage.co/.
- Configure the
ALPHAVANTAGE_API_KEYenvironment variable via your MCP runner's settings. This is the recommended method for seamless integration with the MCP client. Avoid using.envfiles for this purpose when running via an MCP runner.
Building and Running
-
Build the server:
npm run buildThis will create a
builddirectory with the compiled JavaScript code. -
Run the server:
npm run startor directly:
node build/index.js -
Via MCP runner: Configure your MCP client to run the server using stdio transport. Example MCP settings entry (adjust
/path/to/mcp-alphavantageto your actual path and replaceYOUR_API_KEY_HEREwith your actual key):"alphavantage": { "transportType": "stdio", "command": "node", "args": [ "/path/to/mcp-alphavantage/build/index.js" ], "env": { "ALPHAVANTAGE_API_KEY": "YOUR_API_KEY_HERE" } // ... other optional settings ... }
Available Tools
The server exposes Alpha Vantage API endpoints as distinct MCP tools, categorized by function:
- Core Stocks
- Options Data
- Alpha Intelligence
- Fundamental Data
- Technical Indicators
- Forex
- Cryptocurrencies
- Commodities
- Economic Indicators
Detailed input schemas and descriptions for each tool are automatically discoverable by MCP agents connecting to the server via introspection.
Project Structure
The project follows a modular structure:
.
โโโ src/
โ โโโ index.ts # Server entry point
โ โโโ tools/
โ โโโ index.ts # Registers all tool categories
โ โโโ fundamentals/ # Fundamental Data tools
โ โ โโโ ...
โ โโโ indicators/ # Technical Indicators tools
โ โ โโโ ...
โ โโโ intelligence/ # Alpha Intelligence tools
โ โ โโโ ...
โ โโโ options/ # Options Data tools
โ โ โโโ ...
โ โโโ stocks/ # Core Stocks tools
โ โ โโโ ...
โ โโโ forex/ # Forex tools
โ โ โโโ ...
โ โโโ crypto/ # Cryptocurrency tools
โ โ โโโ ...
โ โโโ commodities/ # Commodities tools
โ โ โโโ ...
โ โโโ economic/ # Economic Indicators tools
โ โโโ ...
โโโ memory-bank/ # Project documentation
โ โโโ ...
โโโ package.json # Project dependencies and scripts
โโโ tsconfig.json # TypeScript configuration
โโโ eslint.config.js # ESLint configuration
โโโ .prettierrc # Prettier configuration
โโโ LICENSE # Project license
โโโ README.md # This file
Caching
The server implements an in-memory Least Recently Used (LRU) cache for tool responses. This helps reduce redundant calls to the Alpha Vantage API, improving performance and adhering to rate limits.
- Mechanism: The cache stores responses based on the tool name and input parameters.
- Configurable TTLs: Each tool has a configurable Time To Live (TTL) for its cached data, defined in
src/cacheConfig.ts. This allows for different caching durations based on the update frequency of the data provided by each Alpha Vantage endpoint.
Licensing
This project is licensed under the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See the LICENSE file for details.
Contributing
Contributions are welcome! Please follow the standard fork-and-pull request workflow.
Support
For issues or questions, please open an issue on the GitHub repository.