EODHD MCP Server

Accede a datos globales de mercados financieros a través de más de 70 herramientas: precios de cierre e intradía, fundamentales, ganancias y estados financieros, noticias y sentimiento, screener, indicadores técnicos, macro y más - en acciones, ETFs, forex y cripto.

Documentación

EODHD logo

Servidor MCP de EODHD

Servidor de Protocolo de Contexto de Modelo (MCP) para las APIs de EOD Historical Data.

El servidor actual expone 88 herramientas MCP a través de tres transportes — 85 son de solo lectura; las tres herramientas de informes de Praams activan la generación de informes y el envío de correos electrónicos en el proveedor, por lo que están anotadas como readOnlyHint=False:

  • streamable-http vía server.py en /mcp por defecto
  • sse
  • stdio

También incluye prompts MCP integrados y recursos de documentación.

Cobertura

Conjuntos de datos principales

  • Datos de fin de día, intradía y ticks de EE. UU.
  • Cotizaciones en vivo y cotizaciones extendidas de US Live v2
  • Fundamentos, ganancias y estados financieros
  • Noticias de empresas, sentimiento y pesos de palabras de noticias
  • Screener, búsqueda e indicadores técnicos
  • Acciones corporativas: OPI, divisiones de acciones, dividendos, cambios de símbolos
  • Indicadores macro, eventos económicos, bolsas y listados
  • Herramientas de índices CBOE
  • Letras del Tesoro, rendimientos, rendimientos reales y tasas a largo plazo
  • Riesgo crediticio y soberano: primas de riesgo, calificaciones crediticias, diferenciales de CDS/incumplimiento, rendimientos corporativos CMDI/HQM, agregados del mercado de CDS
  • Sanciones / OFAC: entidades, embarcaciones, programas, fuentes
  • Tasas de interés: tasas de referencia (SOFR, etc.), tasas de política de bancos centrales, diferenciales de estrés de financiamiento

Conjuntos de datos de marketplace y socios

  • Opciones de EE. UU.: contratos, fin de día y subyacentes
  • Praams: puntuación de riesgo, bonos, estados bancarios, informes, screener
  • Investverte ESG: empresas, países y sectores
  • Búsqueda de mercado de TradingHours, detalles de mercado y estado

Comportamiento Actual

  • Todas las herramientas son de solo lectura excepto las tres herramientas de informes de Praams; cada herramienta se registra a través de app/tools/__init__.py.
  • Todas las solicitudes HTTP pasan por el cliente asíncrono compartido en app/api_client.py.
  • Los errores de la API ascendente se conservan como ToolError de MCP con código de estado y detalles ascendentes cuando están disponibles.
  • Los tokens de API se inyectan en las solicitudes de EODHD como parámetros de consulta api_token=....
  • El soporte opcional de reintentos está controlado por EODHD_RETRY_ENABLED o configuraciones por llamada en el código.

Requisitos

  • Python 3.10+
  • Una clave de API de EODHD válida
  • Un cliente compatible con MCP como Claude Desktop, Claude Code, ChatGPT MCP/Connectors o MCP Inspector

Instalación

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

Para herramientas de desarrollo:

pip install -e ".[dev]"

Cree un archivo .env en la raíz del repositorio:

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
# Deployment label added to the outbound User-Agent (e.g. v1 / v2):
EODHD_MCP_EDITION=
# Usage telemetry — both are required, and nothing is emitted unless both are set:
EODHD_MCP_TELEMETRY_URL=
EODHD_MCP_TELEMETRY_KEY=

Ejecutar el Servidor

Punto de entrada recomendado

server.py es el punto de entrada principal mantenido.

Ejecutar HTTP (por defecto):

python server.py

Ejecutar HTTP explícitamente:

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

Ejecutar SSE:

python server.py --sse

Ejecutar stdio:

python server.py --stdio

Anular la clave de API desde la CLI:

python server.py --stdio --apikey YOUR_EODHD_API_KEY

Puntos de entrada de compatibilidad

El repositorio aún incluye puntos de entrada de compatibilidad heredados en entrypoints/:

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

Estos siguen siendo utilizables, pero server.py es la superficie de ejecución principal.

Modelo de Autenticación

Para solicitudes salientes de EODHD, el servidor finalmente envía el token como api_token en la cadena de consulta.

Para solicitudes HTTP entrantes de MCP, el servidor puede resolver el token de EODHD desde:

  • Authorization: Bearer <token>
  • X-API-Key: <token>
  • parámetros de consulta: apikey, api_key o token
  • entorno del servidor de respaldo: EODHD_API_KEY

Muchas herramientas también exponen un argumento explícito api_token para anulación por llamada.

Uso con Claude Desktop

Extensión empaquetada

El manifiesto MCP empaquetado utiliza el punto de entrada stdio en manifest.json.

Ejemplo de checkout de código fuente

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

Uso con ChatGPT MCP / Connectors

Para pruebas HTTP locales, use:

  • URL: http://127.0.0.1:8000/mcp

Si su cliente MCP admite encabezados, puede proporcionar el token de EODHD vía Authorization: Bearer ... o X-API-Key: .... De lo contrario, establezca EODHD_API_KEY en el servidor.

Comandos de Desarrollo

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

Clientes Manuales de Extremo a Extremo

El repositorio incluye clientes MCP manuales en tests/manual/.

Inicie el servidor principal en una terminal:

python server.py

Luego ejecute el cliente manual HTTP:

python tests/manual/test_client_http.py --endpoint http://127.0.0.1:8000/mcp

Para SSE:

python server.py --sse
python tests/manual/test_client_sse.py --endpoint http://127.0.0.1:8000/sse

Para stdio:

python tests/manual/test_client_stdio.py --cmd "python server.py --stdio --apikey YOUR_EODHD_API_KEY"

Los catálogos de pruebas manuales se cargan desde tests/manual/all_tests.py por defecto.

Docker

Ejecutar con Docker Compose:

docker compose up --build

El servicio de compose inicia python server.py y mapea ${MCP_PORT_OUT} a ${MCP_PORT}.

Estructura del Proyecto

  • server.py — punto de entrada principal y selección de transporte
  • app/api_client.py — cliente HTTP asíncrono compartido, inyección de autenticación, limitación de velocidad, lógica de reintentos
  • app/response_formatter.py — formato de recursos MCP y generación de errores de API
  • app/input_formatter.py — saneamiento de entrada y coerción de fechas
  • app/tools/ — implementaciones de herramientas MCP
  • app/prompts/ — prompts MCP integrados
  • app/resources/ — recursos MCP integrados y documentos de referencia
  • tests/auto/ — pruebas automatizadas
  • tests/manual/ — clientes MCP manuales de extremo a extremo

Notas

  • Algunos endpoints de marketplace requieren acceso específico de suscripción de EODHD.
  • Una clave de API válida aún puede recibir errores de permisos ascendentes para herramientas o listas de seguimiento no incluidas en el plan de la cuenta.
  • El servidor ahora conserva esas razones ascendentes en errores de herramientas visibles para el agente en lugar de enmascararlas detrás de fallos genéricos.

Política de Privacidad

Este conector es operado por EOD Historical Data (Unicorn Data Services). Envía los parámetros que usted proporciona (por ejemplo, tickers, rangos de fechas y su clave de API) a las APIs de EODHD para cumplir cada solicitud, y devuelve las respuestas a su cliente MCP. No recopila ni almacena contenido de conversación más allá de lo necesario para atender una solicitud.

Política de privacidad completa: https://eodhd.com/financial-apis/privacy-policy