📈 MCP Trading Quantitative Analysis Server
Sistema de análisis de trading cuantitativo implementado como servidor MCP (Model Context Protocol) que permite a Claude acceder y analizar datos financieros, calcular indicadores técnicos, evaluar sentiment de noticias y generar señales de trading para acciones y forex.
✨ Características Principales
- 12 herramientas MCP organizadas en 4 categorías funcionales
- Análisis técnico con 28+ indicadores técnicos (RSI, MACD, Bollinger Bands, etc.)
- Análisis de sentiment usando FinBERT para noticias financieras
- Señales de trading técnicas, fundamentales e híbridas con scores de confianza
- Datos en tiempo real mediante Alpha Vantage API
- Arquitectura modular y extensible para fácil integración de nuevas fuentes
🏗️ Arquitectura
El sistema está organizado en capas modulares:
- Servidor MCP: Implementación del protocolo MCP con 12 herramientas
- Datos de Mercado: Cliente Alpha Vantage para precios y datos históricos
- Indicadores Técnicos: Cálculo automatizado con pandas-ta
- Análisis NLP: FinBERT para sentiment analysis de noticias financieras
- Generador de Señales: Combina análisis técnico y fundamental
- Configuración: Variables de entorno con python-dotenv
🚀 Instalación
Requisitos
- Python 3.12+
- API Key de Alpha Vantage (gratis: https://www.alphavantage.co/support/#api-key)
- API Key de NewsData.io (gratis: https://newsdata.io/)
Pasos
- Clonar el repositorio
cd /ruta/a/pry_mcp_trading
- Crear entorno virtual
python3 -m venv .venv
source .venv/bin/activate # Linux/Mac
# o
.venv\Scripts\activate # Windows
- Instalar dependencias
pip install -r requirements.txt
- Configurar API keys
cp .env.example .env
nano .env
Agregar tus claves:
ALPHA_VANTAGE_API_KEY=tu_api_key_aqui
NEWSDATA_API_KEY=tu_api_key_aqui
- Probar conexión
python test_connection.py
Configurar Claude
Para Claude Desktop
Editar archivo de configuración según tu sistema operativo:
Linux:
nano ~/.config/Claude/claude_desktop_config.json
macOS:
nano ~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows:
notepad %APPDATA%\Claude\claude_desktop_config.json
Agregar configuración (reemplazar con tu ruta real):
{
"mcpServers": {
"trading-quantitative": {
"command": "/ruta/completa/a/pry_mcp_trading/.venv/bin/python",
"args": [
"/ruta/completa/a/pry_mcp_trading/server.py"
],
"env": {
"PYTHONPATH": "/ruta/completa/a/pry_mcp_trading"
}
}
}
}
Para Claude Code (VSCode)
El archivo .mcp.json ya está configurado en la raíz del proyecto.
Asegúrate de tener en .claude/settings.local.json:
{
"enableAllProjectMcpServers": true
}
Recarga VSCode: Ctrl+Shift+P → "Developer: Reload Window"
Verificación
Pregunta a Claude:
¿Qué herramientas MCP tienes disponibles?
Deberías ver las 12 herramientas de trading listadas.
🛠️ Tecnologías
| Componente | Tecnología | Versión |
|---|---|---|
| Protocol | MCP SDK | 1.0.0+ |
| Data API | Alpha Vantage | API v2 |
| News API | NewsData.io | API v1 |
| Análisis Técnico | pandas-ta | Latest |
| NLP Sentiment | FinBERT (transformers) | 4.57+ |
| ML Framework | PyTorch | 2.0+ |
| Data Processing | pandas, numpy | Latest |
📂 Estructura del Proyecto
pry_mcp_trading/
├── server.py # Servidor MCP principal
├── requirements.txt # Dependencias Python
├── .env.example # Plantilla de configuración
├── .mcp.json # Config MCP para Claude Code
├── setup.sh # Script de instalación
├── test_connection.py # Tests de conexión APIs
├── README.md # Esta documentación
├── .gitignore # Archivos ignorados
└── src/ # Código fuente
├── config.py # Configuración centralizada
├── market_data/ # Módulo de datos (3 tools)
│ ├── __init__.py
│ └── client.py # Cliente Alpha Vantage
├── indicators/ # Módulo indicadores (4 tools)
│ ├── __init__.py
│ └── calculator.py # Cálculo de indicadores
├── news_analysis/ # Módulo noticias (2 tools)
│ ├── __init__.py
│ ├── news_client.py # Cliente NewsData.io
│ └── sentiment_analyzer.py # FinBERT sentiment
└── signals/ # Módulo señales (3 tools)
├── __init__.py
└── signal_generator.py # Generador de señales
🔧 Herramientas MCP Disponibles
📊 Grupo 1: Datos de Mercado (3)
get_current_price
Obtiene precio actual de acciones o forex.
Ejemplo: "¿Cuál es el precio actual de AAPL?"
get_historical_data
Datos históricos OHLCV con múltiples intervalos (1min a monthly).
Ejemplo: "Muéstrame los datos históricos de TSLA de los últimos 3 meses"
get_quote_info
Información completa: precio, fundamentales, empresa.
Ejemplo: "Dame información completa sobre Microsoft (MSFT)"
📈 Grupo 2: Indicadores Técnicos (4)
calculate_trend_indicators
8 indicadores: SMA, EMA, MACD, ADX, AROON, PSAR, SUPERTREND, DEMA
Ejemplo: "Calcula el MACD y EMA(20) para AAPL"
calculate_momentum_indicators
8 indicadores: RSI, STOCHASTIC, CCI, WILLR, ROC, MFI, TSI, MOMENTUM
Ejemplo: "¿Cuál es el RSI actual de GOOGL?"
calculate_volatility_indicators
6 indicadores: BBANDS, ATR, KELTNER, STDDEV, DONCHIAN, ULCER
Ejemplo: "Calcula las Bandas de Bollinger para AMZN"
calculate_volume_indicators
6 indicadores: OBV, VWAP, AD, CMF, VO, PVT
Ejemplo: "Analiza el volumen de META con OBV y VWAP"
📰 Grupo 3: Análisis de Noticias (2)
get_financial_news
Obtiene últimas noticias financieras del activo.
Ejemplo: "Muéstrame las últimas noticias sobre Tesla"
analyze_news_sentiment
Analiza sentiment con FinBERT (positive/negative/neutral + score).
Ejemplo: "Analiza el sentiment de las noticias sobre Apple"
🎯 Grupo 4: Señales de Trading (3)
generate_technical_signal
Señales basadas en indicadores técnicos (simple o compuestas).
Ejemplo: "Dame una señal técnica para NVDA usando RSI"
generate_fundamental_signal
Señales basadas en sentiment de noticias con FinBERT.
Ejemplo: "¿Qué dicen las noticias sobre AMD? Dame una señal"
generate_hybrid_signal
Combina análisis técnico + fundamental con pesos configurables.
Ejemplo: "Genera una señal híbrida para Bitcoin"
📖 Ejemplos de Uso
Análisis Básico
Usuario: "¿Cuál es el precio actual de Apple?"
Claude: [Llama get_current_price("AAPL")]
El precio actual de Apple es $270.37
- Cambio: -$1.03 (-0.38%)
- Volumen: 86,167,123
- Máximo: $277.32 | Mínimo: $269.16
Análisis Técnico Completo
Usuario: "Analiza AAPL técnicamente"
Claude: [Ejecuta múltiples herramientas]
📊 ANÁLISIS TÉCNICO DE APPLE (AAPL)
Momentum:
• RSI(14): 69.05 - NEUTRAL (cerca de sobrecompra)
• Estocástico: 87.72 - SOBRECOMPRADO
Tendencia:
• Precio: $270.37
• SMA(50): $248.25 - Precio 8.9% arriba ✓
• EMA(20): $260.41 - Precio 3.8% arriba ✓
🎯 SEÑAL: HOLD con sesgo alcista
Análisis de Sentiment
Usuario: "Analiza el sentiment de noticias de Apple"
Claude: [Llama analyze_news_sentiment("AAPL")]
📰 SENTIMENT ANALYSIS - APPLE
Score: +0.25 (positivo moderado)
Confianza: 89.7%
Distribución:
- 6 noticias positivas (60%)
- 3 noticias negativas (30%)
- 1 noticia neutral (10%)
Interpretación: Sentiment mayormente positivo
Señal de Trading Completa
Usuario: "Dame una recomendación de trading para AAPL"
Claude: [Genera señal híbrida]
🎯 SEÑAL DE TRADING - APPLE (AAPL)
RECOMENDACIÓN: HOLD (sesgo alcista)
Confianza: 72%
Análisis Técnico (60%):
✓ Tendencia alcista (SMA/EMA)
⚠️ Estocástico sobrecomprado
Análisis Fundamental (40%):
✓ Sentiment positivo (+0.25)
Plan sugerido:
- Entrada: Esperar pullback a $260-265
- Stop Loss: $255
- Target: $280-285
🔑 Características Técnicas
Procesamiento de Datos
- Caché inteligente para optimizar requests a APIs
- Manejo de errores robusto con reintentos automáticos
- Validación de datos con pandas para limpieza automática
Análisis de Sentiment
- FinBERT especializado en textos financieros
- Modelo pre-entrenado de Hugging Face (ProsusAI/finbert)
- Análisis por artículo con agregación ponderada
- Descarga automática del modelo en primera ejecución
Generación de Señales
- Estrategias simples: RSI, MACD, SMA Cross, Bollinger Bands
- Estrategias compuestas: Múltiples indicadores con pesos
- Confluence scoring: Combina señales para mayor confianza
- Pesos configurables: Ajusta balance técnico/fundamental
⚠️ Limitaciones
Técnicas
- Alpha Vantage gratis: 25 requests/día, 5 requests/minuto
- NewsData.io gratis: 200 noticias/día
- Delay de datos: Hasta 15 minutos en plan gratuito
- FinBERT: Requiere 2GB RAM + 2GB disco para modelo
Funcionales
- Solo acciones globales y forex (no opciones/futuros)
- Sentiment analysis en inglés únicamente
- Solo análisis y señales (no ejecuta trades)
- Indicadores calculados sobre datos históricos disponibles
🐛 Troubleshooting
El servidor no se conecta
# Verificar rutas absolutas en configuración
pwd # Copiar esta ruta
# Verificar dependencias
source .venv/bin/activate
pip list | grep -E "mcp|pandas|transformers"
# Test de conexión
python test_connection.py
Error de API keys
# Verificar archivo .env existe
ls -la .env
# Verificar contenido
cat .env
# Test individual
python -c "from src.config import Config; print(Config.ALPHA_VANTAGE_API_KEY)"
FinBERT no descarga
# Verificar espacio en disco
df -h
# Descargar manualmente
python -c "from transformers import AutoTokenizer, AutoModelForSequenceClassification; \
AutoTokenizer.from_pretrained('ProsusAI/finbert'); \
AutoModelForSequenceClassification.from_pretrained('ProsusAI/finbert')"
Rate limit exceeded
- Solución temporal: Esperar reset diario (medianoche UTC)
- Solución permanente: Upgrade a plan premium de Alpha Vantage
- Workaround: Implementar caché local con Redis/SQLite
Claude no reconoce servidor (VSCode)
# Verificar .mcp.json
cat .mcp.json
# Verificar settings
cat .claude/settings.local.json
# Recargar VSCode
# Ctrl+Shift+P → "Developer: Reload Window"
🔐 Seguridad
NUNCA subas a Git:
.envcon API keys- Archivos
*.pyco__pycache__/ - Directorio
.venv/
Ya configurado en .gitignore:
.env
.venv/
__pycache__/
*.pyc
Para producción:
- Usa variables de entorno del sistema
- Rota API keys periódicamente
- Monitorea uso de APIs
📝 Desarrollo
Agregar un Nuevo Indicador
- Edita
src/indicators/calculator.py - Agrega método para el nuevo indicador
- Registra en
server.pyen la tool correspondiente - Actualiza documentación
Ejemplo:
def calculate_custom_indicator(self, symbol: str, period: int = 14):
"""Calcula indicador personalizado"""
df = self.market_client.get_historical_data(symbol, ...)
result = df.ta.custom(length=period)
return {
"symbol": symbol,
"value": result.iloc[-1],
"interpretation": "..."
}
Testing Local
# Activar entorno
source .venv/bin/activate
# Test de conexión
python test_connection.py
# Test de herramienta específica
python -c "from src.market_data import AlphaVantageClient; \
print(AlphaVantageClient().get_current_price('AAPL'))"
# Ejecutar servidor manualmente
python server.py
🌐 Recursos
Documentación APIs
Librerías Python
- pandas-ta - Indicadores técnicos
- transformers - Hugging Face
- FinBERT - Sentiment financiero
Trading Education
📋 Comandos Útiles
# Activar/desactivar entorno
source .venv/bin/activate
deactivate
# Gestión de dependencias
pip list
pip install --upgrade -r requirements.txt
# Limpieza
find . -type d -name __pycache__ -exec rm -rf {} +
find . -type f -name "*.pyc" -delete
# Tamaño del proyecto
du -sh .
# Test de APIs
python test_connection.py
👤 Autoría y Desarrollo
Diseño y Arquitectura: Jean Carlo Gómez Ponce
- Conceptualización del sistema
- Decisiones de arquitectura MCP
- Dirección del desarrollo
- Integración de herramientas
Implementación: Código generado con Claude AI (Anthropic) bajo supervisión y especificaciones del autor
Nota sobre el uso de IA: Este proyecto fue desarrollado mediante pair programming con IA. El diseño, la arquitectura y las decisiones técnicas son del autor humano. La implementación del código fue asistida por Claude AI siguiendo las especificaciones proporcionadas.
🙏 Agradecimientos
- Anthropic por Claude AI
- MCP Protocol por el estándar de comunicación
- Alpha Vantage por datos de mercado
- NewsData.io por noticias financieras
- Hugging Face por FinBERT
- Comunidad open source de Python
⚖️ Licencia
Este proyecto es para uso educativo únicamente. No se ofrece ninguna garantía.
⚠️ Disclaimer
IMPORTANTE: Este software es solo para propósitos educativos e informativos. NO constituye asesoría financiera, de inversión, ni recomendación de trading.
El trading y la inversión en mercados financieros conllevan riesgos significativos y pueden resultar en pérdida parcial o total del capital. Los resultados pasados no garantizan rendimientos futuros.
Siempre consulta con un asesor financiero profesional antes de tomar decisiones de inversión. El autor no se hace responsable de las pérdidas o daños que puedan resultar del uso de este software.
Versión: 1.0.0 Última actualización: 2025-11-01 Estado: Producción (Educational Use Only)
⭐ Si este proyecto te fue útil, considera darle una estrella en GitHub
