mcp-marketstack
If you are the rightful owner of mcp-marketstack 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.
The Marketstack MCP Server is a Model Context Protocol server that provides access to a wide range of financial data through Marketstack API endpoints, facilitating easy integration with MCP-compatible systems.
Marketstack MCP Server
A Model Context Protocol (MCP) server that exposes various Marketstack API endpoints as MCP tools, providing access to financial data including end-of-day, intraday, splits, dividends, tickers, exchanges, currencies, timezones, bonds, and ETF data. This server simplifies integrating Marketstack data into MCP-compatible agents and systems.
Prerequisites
- Node.js (v18 or later recommended)
- npm (comes with Node.js)
- Marketstack 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 a Marketstack API key from https://marketstack.com/.
- Configure the
MARKETSTACK_API_KEY
environment variable via your MCP runner's settings. This is the recommended method for seamless integration with the MCP client. Avoid using.env
files for this purpose when running via an MCP runner.
Building and Running
-
Build the server:
npm run build
This will create a
build
directory with the compiled JavaScript code. -
Run the server:
npm run start
or 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-marketstack
to your actual path and replaceYOUR_API_KEY_HERE
with your actual key):"marketstack": { "transportType": "stdio", "command": "node", "args": [ "/path/to/mcp-marketstack/build/index.js" ], "env": { "MARKETSTACK_API_KEY": "YOUR_API_KEY_HERE" } // ... other optional settings ... }
Available Tools
The server exposes Marketstack API endpoints as distinct MCP tools, categorized by function:
- Market Data
- Reference Data
- Financial Instruments
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
ā āāā marketstackClient.ts # Centralized API client with caching
ā āāā cacheConfig.ts # Cache TTL configurations
ā āāā tools/
ā āāā index.ts # Registers all tool categories
ā āāā marketData/ # Market Data tools
ā ā āāā ...
ā āāā referenceData/ # Reference Data tools
ā ā āāā ...
ā āāā financialInstruments/ # Financial Instruments tools
ā ā āāā ...
ā āāā wrapToolHandler.ts # Wrapper for tool handlers
āāā 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 Marketstack 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 Marketstack 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.