Uses FinBERT model from Hugging Face for sentiment analysis of financial news articles, providing positive/negative/neutral sentiment scores with confidence levels.
Referenced as an educational resource for technical analysis concepts used in the trading signals generation.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Trading Quantitative Analysis Serverget current price and RSI for AAPL"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
📈 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_tradingCrear entorno virtual
python3 -m venv .venv
source .venv/bin/activate # Linux/Mac
# o
.venv\Scripts\activate # WindowsInstalar dependencias
pip install -r requirements.txtConfigurar API keys
cp .env.example .env
nano .envAgregar tus claves:
ALPHA_VANTAGE_API_KEY=tu_api_key_aqui
NEWSDATA_API_KEY=tu_api_key_aquiProbar conexión
python test_connection.pyConfigurar Claude
Para Claude Desktop
Editar archivo de configuración según tu sistema operativo:
Linux:
nano ~/.config/Claude/claude_desktop_config.jsonmacOS:
nano ~/Library/Application\ Support/Claude/claude_desktop_config.jsonWindows:
notepad %APPDATA%\Claude\claude_desktop_config.jsonAgregar 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.16Aná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 alcistaAná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 positivoSeñ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.pyError 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 keysArchivos
*.pyco__pycache__/Directorio
.venv/
Ya configurado en .gitignore:
.env
.venv/
__pycache__/
*.pycPara 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.pyAgrega método para el nuevo indicador
Registra en
server.pyen la tool correspondienteActualiza 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
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.