EODHD MCP Server

by eodhistoricaldata

Not rated
GitHub

About

Access global financial market data through 70+ tools: end-of-day & intraday prices, fundamentals, earnings & financial statements, news & sentiment, screeners, technical indicators, macro and more - across stocks, ETFs, forex and crypto.

Details

Author
eodhistoricaldata
Categories
Database, Other, Finance

Setup

Install EODHD MCP Server in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/eodhistoricaldata/EODHD-MCP-Server

Follow the installation instructions in the repository README, then restart your MCP client.

Model Context Protocol (MCP) server forEOD Historical DataAPIs.

The current server exposes88 MCP toolsacross three transports — 85 are read-only; the three Praams report tools trigger provider-side report generation and email delivery, so they are annotatedreadOnlyHint=False:

- streamable-httpviaserver.pyon/mcpby default
- sse
- stdio

It also ships bundled MCP prompts and documentation resources.

- End-of-day, intraday, and US tick data
- Live quotes and US Live v2 extended quotes
- Fundamentals, earnings, and financial statements
- Company news, sentiment, and news word weights
- Screeners, search, and technical indicators
- Corporate actions: IPOs, splits, dividends, symbol changes
- Macro indicators, economic events, exchanges, and listings
- CBOE index tools
- Treasury bill, yield, real yield, and long-term rates
- Credit & sovereign risk: risk premiums, credit ratings, CDS/default spreads, corporate CMDI/HQM yields, CDS-market aggregates
- Sanctions / OFAC: entities, vessels, programs, sources
- Interest rates: reference rates (SOFR etc.), central-bank policy rates, funding-stress spreads

- US options: contracts, EOD, and underlyings
- Praams: risk scoring, bonds, bank statements, reports, screeners
- Investverte ESG: companies, countries, and sectors
- TradingHours market lookup, market details, and status

- All tools are read-only except the three Praams report tools; every tool registers throughapp/tools/__init__.py.
- All HTTP requests go through the shared async client inapp/api_client.py.
- Upstream API errors are preserved as MCPToolErrors with status code and upstream details where available.
- API tokens are injected into EODHD requests asapi_token=...query parameters.
- Optional retry support is controlled byEODHD_RETRY_ENABLEDor per-call settings in code.

- Python3.10+
- A valid EODHD API key
- An MCP-compatible client such as Claude Desktop, Claude Code, ChatGPT MCP/Connectors, or MCP Inspector

git clone https://github.com/EodHistoricalData/EODHD-MCP-Server.git cd EODHD-MCP-Server pip install -r requirements.txt

Create a.envfile at the repository root:

EODHD_API_KEY=YOUR_EODHD_API_KEY MCP_HOST=127.0.0.1 MCP_PORT=8000 MCP_PATH=/mcp LOG_LEVEL=INFO # Optional: EODHD_RETRY_ENABLED=false

server.pyis the main maintained entrypoint.

python server.py --http --host 127.0.0.1 --port 8000 --path /mcp
python server.py --stdio --apikey YOUR_EODHD_API_KEY

The repo still includes legacy compatibility entrypoints inentrypoints/:

python -m entrypoints.server_http python -m entrypoints.server_sse python -m entrypoints.server_stdio --apikey YOUR_EODHD_API_KEY

These are still usable, butserver.pyis the primary runtime surface.

For outgoing EODHD requests, the server ultimately sends the token asapi_tokenin the query string.

For incoming HTTP MCP requests, the server can resolve the EODHD token from:

- Authorization: Bearer <token>
- X-API-Key: <token>
- query params:apikey,api_key, ortoken
- fallback server environment:EODHD_API_KEY

Many tools also expose an explicitapi_tokenargument for per-call override.

The packaged MCP manifest uses the stdio entrypoint inmanifest.json.

{ "mcpServers": { "eodhd-mcp": { "command": "python3", "args": [ "/absolute/path/to/EODHD-MCP-Server/server.py", "--stdio" ], "env": { "EODHD_API_KEY": "YOUR_EODHD_API_KEY" } } } }

If your MCP client supports headers, you can provide the EODHD token viaAuthorization: Bearer ...orX-API-Key: .... Otherwise, setEODHD_API_KEYon the server.

pytest tests/auto/ -v --tb=short pytest tests/auto/ -v --cov=app --cov-report=term-missing ruff check app/ server.py ruff format --check app/ server.py mypy app/ server.py --ignore-missing-imports --explicit-package-bases bandit -r app/ -ll -ii -x app/resources/ semgrep scan --config p/python --config p/owasp-top-ten --config p/secrets --config p/jwt --error app/ python server.py python server.py --stdio

The repository includes manual MCP clients intests/manual/.

python tests/manual/test_client_http.py --endpoint http://127.0.0.1:8000/mcp
python server.py --sse python tests/manual/test_client_sse.py --endpoint http://127.0.0.1:8000/sse
python tests/manual/test_client_stdio.py --cmd "python server.py --stdio --apikey YOUR_EODHD_API_KEY"

Manual test catalogs are loaded fromtests/manual/all_tests.pyby default.

The compose service startspython server.pyand maps${MCP_PORT_OUT}to${MCP_PORT}.

- server.py— main entrypoint and transport selection
- app/api_client.py— shared async HTTP client, auth injection, rate limiting, retry logic
- app/response_formatter.py— MCP resource formatting and API error raising
- app/input_formatter.py— input sanitization and date coercion
- app/tools/— MCP tool implementations
- app/prompts/— bundled MCP prompts
- app/resources/— bundled MCP resources and reference docs
- tests/auto/— automated tests
- tests/manual/— manual end-to-end MCP clients

- Some marketplace endpoints require specific EODHD subscription access.
- A valid API key can still receive upstream permission errors for tools or watchlists not included in the account plan.
- The server now preserves those upstream reasons in agent-visible tool errors instead of masking them behind generic failures.

This connector is operated by EOD Historical Data (Unicorn Data Services). It sends the parameters you provide (for example tickers, date ranges, and your API key) to the EODHD APIs to fulfil each request, and returns the responses to your MCP client. It does not collect or store conversation content beyond what is required to serve a request.

Full privacy policy:https://eodhd.com/financial-apis/privacy-policy

Free keyless gapper scanner — the Warrior Trading "5 pillars" low-float momentum screen. Finds cheap small-cap stocks gapping up hard on high relative volume with a news catalyst; auto-picks premarket (4:00–9:30 ET) or after-hours (16:00–20:00 ET) tape. No API key required.

US market snapshot, stock fundamentals, prices, statements, news and analyst views

Hosted MCP server for Chinese A-share and ETF market data, including prices, fundamentals, capital flows, financial statements, real-time quotes, and news.

Fetches the latest cryptocurrency news and converts article content from HTML to Markdown.

Real-time news with bias scoring across 5,000+ sources and 15+ dimensions, balanced news synthesis, live market data with AI analysis, ML options pricing, and semantic meme search.

The first financial intelligence MCP server. Live AI-scored trading signals from Reddit, SEC filings, FDA approvals, Congressional trades, and 15+ sources. 7 tools, 2 resources, hosted remotely, free, no API key required.

Token Metrics integration for fetching real-time crypto market data, trading signals, price predictions, and advanced analytics.

Provides A-share stock market data, including basic info, historical K-lines, financial indicators, and macroeconomic data using Baostock.

AudioAlpha turns 100+ daily finance and crypto podcasts into structured intelligence — α-sentiment scores, narrative signals, asset mentions, transcripts, and market snapshots with 40+ custom metrics. Built for AI-driven research and trading workflows.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.