Passa al contenuto principale

mcp-gateway

Cosa fa

mcp-gateway espone gli strumenti del trading system ad agenti AI tramite il protocollo MCP (Model Context Protocol). Supporta due modalità di trasporto: stdio (per Claude Desktop / Claude Code) e HTTP (per client MCP remoti o URL connector).

Ruoli e responsabilita

  • punto di ingresso MCP per agenti AI (Claude Desktop, Claude Code, altri client MCP);
  • registry configurabile di tool con supporto allowlist;
  • trasporto stdio: line-delimited JSON su stdin/stdout (Node 18+ readline);
  • trasporto HTTP: endpoint REST protetti da X-Internal-Token;
  • endpoint di debug/introspezione sempre attivi (/mcp/health, /mcp/tools);
  • integrazione con tickerscanner per lo strumento strategies_list.

Porta esposta

  • Porta interna servizio: 3004
  • Esposizione via Traefik (local profile): http://localhost/mcp-gateway/*

Configurazione compose

mcp-gateway:
image: local/mcp-gateway:${MCP_GATEWAY_VERSION:-latest}
restart: unless-stopped
ports:
- "3004:3004"
profiles: ["mcp-gateway"]
environment:
- DATAHUB_URL=http://datahub:3000
- REDIS_URL=redis://redis:6379
- TICKERSCANNER_URL=http://tickerscanner:3013
- MCP_TRANSPORT=stdio
- MCP_ENABLED=true
- INTERNAL_TOKEN=${INTERNAL_TOKEN}
- ENV=${ENV}
- TZ=${TIMEZONE}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3004/status/health"]
interval: 10s
timeout: 5s
retries: 5
start_period: 15s
labels:
- "traefik.enable=true"
- "traefik.http.routers.mcp-gateway.rule=Host(`localhost`) && PathPrefix(`/mcp-gateway`)"
- "traefik.http.middlewares.mcp-gateway-stripprefix.stripPrefix.prefixes=/mcp-gateway"
- "traefik.http.routers.mcp-gateway.middlewares=mcp-gateway-stripprefix,cors-default@docker,auth-forward@docker"

Variabili d'ambiente

Infrastruttura

Variabili obbligatorie gestite da BaseService (comune a tutti i microservizi).

VariabileDefaultDescrizione
DATAHUB_URLhttp://datahub:3000URL del servizio datahub (ex DBMANAGER_URL, ancora accettato come alias).
REDIS_URLURI Redis (es. redis://redis:6379). Obbligatorio per il bus eventi e i canali di stato.
LOG_LEVELinfoLivello di log: trace, debug, info, warning, error.
ENVAmbiente di esecuzione (local, paper, prod). Usato nel prefisso dei canali Redis.
ENABLE_DB_LOGSe true, abilita la scrittura dei log su DB via datahub.
TZTimezone di sistema del container (es. America/New_York).

MCP Gateway

VariabileDefaultDescrizione
MCP_ENABLEDtrueSe false, il sottosistema MCP è disabilitato. Il server REST rimane attivo ma getMcpRegistry() lancia errore.
MCP_TRANSPORTstdioModalità trasporto: stdio (Claude Desktop/Code) oppure http (REST).
MCP_HTTP_PATH/mcpPath di mount del trasporto HTTP (solo se MCP_TRANSPORT=http). Consigliato: usare un path diverso da /mcp per evitare conflitti con il router di debug.
MCP_TOOL_ALLOWLIST(tutti)Lista tool abilitati, separata da virgola (es. ping,strategies_list). Se vuota, tutti i tool registrati sono disponibili.
INTERNAL_TOKENToken richiesto nell'header X-Internal-Token per gli endpoint HTTP transport. Se non impostato, gli endpoint non richiedono autenticazione.

Dipendenze upstream

VariabileDefaultDescrizione
TICKERSCANNER_URLhttp://tickerscanner:3013URL del tickerscanner, usato dallo strumento strategies_list per recuperare le pipe.
attenzione

Se MCP_TRANSPORT=http e MCP_HTTP_PATH non è configurato, il trasporto HTTP si monta sullo stesso prefisso /mcp del router di debug. In questo caso GET /mcp/tools viene gestito dal router di debug (montato per primo). Impostare MCP_HTTP_PATH=/mcp/transport o un path dedicato per evitare ambiguità.

Pagine dedicate