Upstox MCP Server
Un servidor del Protocolo de Contexto de Modelo (MCP) que se integra con la API de Trading de Upstox, permitiendo que agentes de IA como Claude accedan de forma segura a datos del mercado de valores indio, realicen análisis técnico y consulten información de la cuenta en modo de solo lectura.
Documentación
Upstox MCP Server: Protocolo de Contexto Modelo Global para Mercados de Valores Indios 📈
El Servidor MCP de Upstox de estilo oficial proporciona una integración de Protocolo de Contexto Modelo (MCP) de alto rendimiento para la API de Trading de Upstox. Permite que agentes de IA como Claude Desktop, Cursor IDE y aplicaciones LLM personalizadas accedan de forma segura a datos en tiempo real del mercado de valores indio (NSE, BSE, MCX), realicen análisis técnico avanzado (RSI, MACD, Bandas de Bollinger) y gestionen información de cartera en un modo estrictamente de solo lectura.
Optimizado para trading algorítmico, análisis de mercado e investigación automatizada en Nifty 50, Bank Nifty y miles de valores indios.
📖 Presentado en Modern AI Day: El Puerto USB para la IA: Conectando Claude a Datos de Mercado en Tiempo Real
🌐 Instancia de Demostración en Vivo: https://mcp-server-upstox.onrender.com/mcp
🛠️ Stack Técnico
- Framework: FastMCP (SDK de Python para MCP)
- Motor de API: FastAPI y Uvicorn
- Ciencia de Datos: Pandas, NumPy
- Análisis Técnico: Pandas-TA
- Integración de Cliente: Httpx, SDK de Python de Upstox
- Despliegue: Docker, Render
⚡ Inicio Rápido (BYOK Remoto)
Conecta Claude Desktop a tu instancia remota en segundos usando soporte Trae Tu Propia Clave (BYOK):
{
"mcpServers": {
"Upstox-Remote": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp-server-upstox.onrender.com/mcp",
"--header", "X-Upstox-API-Key:YOUR_API_KEY",
"--header", "X-Upstox-API-Secret:YOUR_API_SECRET",
"--header", "X-Upstox-Access-Token:YOUR_ACCESS_TOKEN"
]
}
}
}
🚀 Características
📊 Datos de Mercado
- Cotizaciones en vivo -
market_get_live_quote - Búsqueda de Instrumentos -
market_search_instruments - Datos históricos -
market_get_historical_data(Rangos personalizados) - Velas intradía -
market_get_intraday_candles
📈 Análisis Técnico
- Indicadores Granulares - Herramientas individuales para RSI, MACD, ADX, Bandas de Bollinger, etc.
- Niveles de Fibonacci -
analysis_calculate_fibonacci_levels - Patrones de Velas -
analysis_analyze_candlestick_patterns - Contexto Inteligente -
analysis_get_technical_analysis(Super Herramienta)
👤 Gestión de Cuenta (Solo Lectura)
- Detalles de Margen -
account_get_user_margin - Libro de Órdenes -
account_get_order_book - Historial de Operaciones -
account_get_trade_history - Cartera - Listas de tenencias y posiciones
🤖 Nativo MCP
- Diseño Primero-IA - Construido específicamente para agentes de IA
- Arquitectura Basada en Herramientas - Lenguaje natural a llamadas de API
- Soporte Multi-Usuario - Arquitectura segura "Trae Tu Propia Clave" (BYOK)
- Interfaz Conversacional - No se necesita conocimiento complejo de API
⚠️ Aviso de Seguridad
Este servidor MCP es ESTRICTAMENTE DE SOLO LECTURA
❌ Sin colocación de órdenes
❌ Sin modificación de órdenes
❌ Sin transferencias de fondos
❌ Sin acciones de tradingLos endpoints de trading están intencionalmente excluidos para tu seguridad.
📦 Instalación
Requisitos Previos
- Python 3.10 o superior
- Cuenta de Trading de Upstox
- Credenciales de API de Upstox
1️⃣ Clonar Repositorio
git clone https://github.com/ravikant1918/mcp-server-upstox.git
cd mcp-server-upstox
2️⃣ Crear Entorno Virtual (Recomendado)
python -m venv venv
# On macOS/Linux
source venv/bin/activate
# On Windows
venv\Scripts\activate
3️⃣ Instalar Dependencias
pip install -e .
4️⃣ Verificar Instalación
upstox-mcp --version
🔐 Configuración
Obtención de Credenciales de API de Upstox
-
Inicia sesión en la Consola de Desarrollador de Upstox
- Visita: https://api.upstox.com/
- Inicia sesión con tu cuenta de Upstox
-
Crea una Aplicación
- Ve a "Mis Aplicaciones"
- Haz clic en "Crear Aplicación"
- Completa los detalles:
- Nombre de la Aplicación: "Servidor MCP"
- URL de Redirección:
http://localhost:8000/callback - Selecciona permisos de solo lectura
-
Obtén las Claves de API
- Anota tu
API KeyyAPI Secret
- Anota tu
-
Genera el Token de Acceso
- Sigue el flujo OAuth de Upstox
- O usa la herramienta de generación de tokens de Upstox
- El token es válido por 24 horas (requiere renovación diaria)
Configuración del Entorno
Crea un archivo .env en la raíz del proyecto:
# Required
UPSTOX_ACCESS_TOKEN=your_access_token_here
# Optional (for token auto-refresh)
UPSTOX_API_KEY=your_api_key
UPSTOX_API_SECRET=your_api_secret
Mejores Prácticas de Seguridad:
- Nunca subas el archivo
.enval control de versiones - Agrega
.enva.gitignore - Rota los tokens regularmente
- Usa solo alcances de API de solo lectura
▶️ Ejecutando el Servidor
Opción A — IO Estándar (para Claude Desktop)
Modo predeterminado para uso local con agentes de IA:
upstox-mcp
# or
upstox-mcp --transport stdio
Opción B — Modo HTTP (para Cursor o Acceso Remoto)
Recomendado para agentes de IA basados en web:
upstox-mcp --transport http
# Server will start on http://localhost:8000
Puerto personalizado:
upstox-mcp --transport http --port 8080
Opción C — Despliegue con Docker
Usando Docker Compose (Recomendado)
# Build and run
docker-compose up -d
# View logs
docker-compose logs -f
# Stop
docker-compose down
Usando CLI de Docker
# Build image
docker build -t upstox-mcp .
# Run container
docker run -d \
-p 8000:8000 \
--env-file .env \
--name upstox-mcp \
upstox-mcp
# View logs
docker logs -f upstox-mcp
# Stop container
docker stop upstox-mcp
El servidor estará disponible en: http://localhost:8000/mcp
🔌 Configuración del Cliente MCP
Claude Desktop
Ubicación de Configuración:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Configuración:
{
"mcpServers": {
"Upstox": {
"command": "/absolute/path/to/venv/bin/upstox-mcp",
"args": ["--transport", "stdio"],
"env": {
"UPSTOX_ACCESS_TOKEN": "YOUR_ACCESS_TOKEN"
}
}
}
}
Encontrando la ruta absoluta:
# On macOS/Linux
which upstox-mcp
# On Windows (PowerShell)
(Get-Command upstox-mcp).Path
Cursor IDE
- Abre la Configuración de Cursor
- Ve a Características → MCP
- Agrega un nuevo servidor:
- Nombre: Upstox
- Tipo: HTTP
- URL:
http://localhost:8000/mcp
MCP Remoto (vía mcp-remote) — Soporte BYOK
Para ejecutar el servidor de forma remota o en un entorno multi-usuario (por ejemplo, Render), puedes pasar tus credenciales mediante encabezados. Esto se conoce como Trae Tu Propia Clave (BYOK).
{
"mcpServers": {
"Upstox-Remote": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp-server-upstox.onrender.com/mcp",
"--header", "X-Upstox-API-Key:YOUR_API_KEY",
"--header", "X-Upstox-API-Secret:YOUR_API_SECRET",
"--header", "X-Upstox-Access-Token:YOUR_ACCESS_TOKEN"
]
}
}
}
[!TIP] Esto permite que múltiples usuarios usen la misma instancia del servidor de forma segura sin compartir credenciales en el lado del servidor.
🧠 Ejemplos de Prompts (Para Agentes de IA)
Consultas de Datos de Mercado
"What's the current price of RELIANCE?"
"Show me OHLC data for INFY"
"Get live quote for TATAMOTORS on NSE"
"What's the volume on SBIN today?"
Análisis Técnico
"Run technical analysis on BHARTIARTL"
"Show RSI and MACD for HDFCBANK"
"Is TCS in a bullish or bearish trend?"
"Find support and resistance levels for WIPRO"
"Analyze ICICIBANK with EMA-20 and EMA-50"
Análisis Intradía
"Show me 5-minute candles for RELIANCE"
"Get 1-minute chart data for INFY"
"Display 15-minute intraday data for SBIN"
Información de Cuenta
"Show my Upstox account summary"
"What's my available margin?"
"List all my holdings"
"Show my current positions and P&L"
"What's my total portfolio value?"
"How much profit/loss do I have in TRIDENT?"
Análisis Complejo
"Analyze all my holdings technically and rank them by strength"
"Compare HDFC Bank vs ICICI Bank - which is better?"
"Find oversold stocks in my watchlist (RSI < 30)"
"Which of my holdings are above their 50-day EMA?"
"Show me stocks breaking resistance levels today"
🧰 Herramientas MCP Disponibles
| Categoría | Nombre de la Herramienta | Descripción |
|---|---|---|
| Mercado | market_get_live_quote | Último Precio Operado, OHLC, Volumen |
| Mercado | market_search_instruments | Buscar símbolos de trading |
| Mercado | market_get_instrument_details | Metadatos detallados del instrumento |
| Mercado | market_get_historical_data | Datos de velas históricas personalizados |
| Mercado | market_get_intraday_candles | Gráficos intradía en tiempo real |
| Análisis | analysis_calculate_rsi | Análisis de momentum (RSI) |
| Análisis | analysis_calculate_macd | Tendencia y momentum (MACD) |
| Análisis | analysis_calculate_adx | Fuerza de tendencia (ADX) |
| Análisis | analysis_calculate_moving_averages | Análisis de tendencia (SMA/EMA) |
| Análisis | analysis_calculate_bollinger_bands | Estudio de volatilidad |
| Análisis | analysis_calculate_support_resistance | Niveles basados en pivotes |
| Análisis | analysis_calculate_volatility_metrics | Evaluación de riesgo (ATR) |
| Análisis | analysis_calculate_stochastic | Oscilador de momentum |
| Análisis | analysis_calculate_williams_r | Momentum %R |
| Análisis | analysis_calculate_fibonacci_levels | Niveles de retroceso |
| Análisis | analysis_analyze_candlestick_patterns | Detección de patrones |
| Análisis | analysis_get_technical_analysis | Informe holístico multi-indicador |
| Cuenta | account_get_summary | Instantánea de cartera |
| Cuenta | account_get_user_margin | Fondos disponibles |
| Cuenta | account_get_holdings_list | Tenencias de acciones |
| Cuenta | account_get_positions_list | Posiciones activas |
| Cuenta | account_get_order_book | Órdenes diarias |
| Cuenta | account_get_trade_history | Ejecuciones diarias |
[!NOTE] Todas las herramientas devuelven una respuesta JSON estandarizada:
{ "success": true, "data": ..., "error": null, "metadata": ... }.
Detalles de Herramientas
get_live_quote
{
"symbol": "RELIANCE", # Stock symbol
"exchange": "NSE_EQ" # NSE_EQ or BSE_EQ (default: NSE_EQ)
}
get_intraday_candles
{
"symbol": "INFY",
"interval": "5minute", # 1minute, 3minute, 5minute, 10minute, 15minute, 30minute
"exchange": "NSE_EQ"
}
get_technical_analysis
{
"symbol": "SBIN",
"interval": "1day", # 1minute, 5minute, 15minute, 30minute, 1day, 1week
"indicators": [ # Array of indicators
"RSI", # Relative Strength Index
"MACD", # Moving Average Convergence Divergence
"EMA_20", # Exponential Moving Average (20 period)
"EMA_50",
"SMA_200", # Simple Moving Average (200 period)
"BBANDS", # Bollinger Bands
"VWAP", # Volume Weighted Average Price
"ATR" # Average True Range
],
"exchange": "NSE_EQ"
}
Indicadores Soportados:
- RSI - Oscilador de momentum (período predeterminado de 14)
- MACD - Indicador de seguimiento de tendencia
- EMA_x - Media Móvil Exponencial (por ejemplo, EMA_20, EMA_50, EMA_200)
- SMA_x - Media Móvil Simple (por ejemplo, SMA_50, SMA_200)
- BBANDS - Bandas de Bollinger (volatilidad)
- VWAP - Precio Promedio Ponderado por Volumen
- ATR - Rango Verdadero Promedio (volatilidad)
Devuelve:
- Datos de precios
- Indicadores calculados
- Patrones de velas detectados
- Contexto de tendencia (Alcista/Bajista/Lateral)
- Niveles de soporte y resistencia
🏗️ Arquitectura
┌─────────────────┐
│ AI Agent │ (Claude Desktop, Cursor, etc.)
│ (Claude/GPT) │
└────────┬────────┘
│
│ MCP Protocol
│
┌────────▼────────┐
│ FastMCP │ (MCP Server Framework)
│ Server │
└────────┬────────┘
│
│ Python Functions
│
┌────────▼────────┐
│ Upstox API │ (Read-Only Access)
│ Client │
└────────┬────────┘
│
│ HTTPS
│
┌────────▼────────┐
│ Upstox │ (Live Market Data)
│ Backend │
└─────────────────┘
📊 Stack Técnico
- Framework: FastMCP (Protocolo de Contexto Modelo)
- Cliente de API: SDK de Python de Upstox
- Análisis Técnico: pandas-ta
- Servidor Web: Uvicorn (para modo HTTP)
- Contenedorización: Docker, Docker Compose
🔧 Solución de Problemas
Problemas Comunes
1. Error de "Token inválido"
Problema: El token de acceso expiró (los tokens son válidos por 24 horas)
Solución:
# Generate new token from Upstox
# Update .env file with new token
# Restart the MCP server
2. "Comando no encontrado: upstox-mcp"
Problema: El paquete no está instalado o no está en el PATH
Solución:
# Activate virtual environment
source venv/bin/activate # macOS/Linux
venv\Scripts\activate # Windows
# Reinstall package
pip install -e .
3. Claude Desktop No Detecta el Servidor
Problema: Problema con la ruta o el formato del archivo de configuración
Solución:
- Verifica la ubicación del archivo de configuración
- Revisa la sintaxis JSON (usa un validador de JSON)
- Asegura la ruta absoluta al ejecutable
- Reinicia Claude Desktop
4. "No se devolvieron datos" para Velas Intradía
Problema: Mercado cerrado o sin actividad de trading reciente
Solución:
- Verifica si el mercado está abierto (9:15 AM - 3:30 PM IST, Lun-Vie)
- Prueba con un intervalo diferente
- Verifica que el símbolo sea correcto
5. Límite de Velocidad
Problema: Demasiadas llamadas de API en poco tiempo
Solución:
- Agrega demoras entre solicitudes
- Implementa caché (mejora futura)
- Usa consultas por lotes cuando sea posible
🚧 Limitaciones
- Expiración de Token: Los tokens de acceso expiran cada 24 horas y requieren renovación manual
- Solo Lectura: No se pueden colocar operaciones (por diseño, por seguridad)
- Límites de Velocidad de API: Sujeto a los límites de velocidad de la API de Upstox
- Horario de Mercado: Los datos en vivo solo están disponibles durante el horario de trading
- Datos Históricos: Limitado por las políticas de retención de datos de la API de Upstox
🗺️ Hoja de Ruta
Versión 1.1 (Completada)
- Capa de caché para mejor rendimiento
- Detección básica de patrones de velas
Versión 2.0 (Completada) 🚀
- Indicadores Técnicos Granulares: 10+ nuevas herramientas especializadas de AT
- Herramientas con Espacios de Nombres: Agrupación lógica (
market_,analysis_,account_) - Datos Históricos: Recuperación con marcos de tiempo personalizados
- Búsqueda de Instrumentos: Encontrar símbolos por nombre
- Esquema de Respuesta Seguro para JSON: Serialización robusta para todos los agentes
- Seguimiento de Órdenes y Operaciones: Acceso en tiempo real a la actividad diaria
Versión 2.1 (Completada) 🚀
- Soporte BYOK: Pasar credenciales mediante encabezados HTTP
- Soporte Multi-Usuario: Arquitectura segura para despliegues compartidos
- Instrucciones Dinámicas: Página de inicio interactiva con guías de configuración
Versión 3.0 (Planificada)
- Mecanismo automático de renovación de tokens
- Integración de base de datos para seguimiento histórico a largo plazo
- Analíticas de rendimiento de cartera
- Sistema de alertas
- Predicciones de aprendizaje automático
Versión 3.0 (Visión)
- Predicciones de aprendizaje automático
- Constructor de estrategias
- Características de trading social
- Integración con aplicaciones móviles
🤝 Contribuciones
¡Las contribuciones son bienvenidas! Por favor, sigue estos pasos:
- Haz un fork del repositorio
- Crea una rama de características (
git checkout -b feature/AmazingFeature) - Haz commit de tus cambios (
git commit -m 'Add some AmazingFeature') - Haz push a la rama (
git push origin feature/AmazingFeature) - Abre una Solicitud de Extracción
Configuración de Desarrollo
# Clone your fork
git clone https://github.com/ravikant1918/mcp-server-upstox.git
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black .
flake8 .
🗺️ Hoja de Ruta
Q1 2026: Fundación y Análisis Principal (Actual)
- Implementación inicial de MCP para Upstox
- Herramientas integrales de indicadores técnicos
- Soporte Trae Tu Propia Clave (BYOK) para despliegues remotos
- Generador dinámico de configuración JSON
Q2 2026: Información Avanzada
- Herramientas de análisis de mercado por sector
- Análisis de Cadena de Opciones (cálculo de Griegas)
- Seguimiento de acciones corporativas (Dividendos, Divisiones)
- Análisis de correlación multi-instrumento
Q3 2026: Expansión del Ecosistema
- Envoltorio integrado del motor de backtesting
- Soporte de webhooks para alertas en tiempo real
- Soporte nativo para más clientes MCP (por ejemplo, Goose, Windsurf)
📄 Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENCIA para más detalles.
🙌 Créditos y Agradecimientos
- FastMCP - Framework del servidor MCP
- Upstox - API de trading y datos de mercado
- pandas-ta - Indicadores de análisis técnico
- Anthropic - Claude AI y protocolo MCP
📬 Aviso Legal
IMPORTANTE: Este proyecto no está afiliado, respaldado ni patrocinado por Upstox.
Descargo de responsabilidad sobre operaciones bursátiles:
- Operar en bolsa implica un riesgo sustancial de pérdida
- Esta herramienta es solo para fines informativos y educativos
- No es asesoramiento financiero: consulte a un asesor financiero autorizado
- El rendimiento pasado no garantiza resultados futuros
- Los desarrolladores no son responsables de ninguna pérdida en operaciones
- Siempre haga su propia investigación antes de tomar decisiones de inversión
Uso de la API:
- Asegúrese de cumplir con los términos de servicio de la API de Upstox
- Respete los límites de velocidad de la API
- Úsela de manera responsable y ética
📞 Soporte
Documentación
Obtener ayuda
- Problemas: Problemas de GitHub
- Discusiones: Discusiones de GitHub
- Correo electrónico: developerrk1918@gmail.com
Comunidad
- Dale una estrella ⭐ a este repositorio si te resulta útil
- Compártelo con otros operadores
- Reporta errores y sugiere funciones
- Contribuye con código o documentación
🎯 Resumen de inicio rápido
# 1. Clone and install
git clone https://github.com/ravikant1918/mcp-server-upstox.git
cd mcp-server-upstox
pip install -e .
# 2. Configure
echo "UPSTOX_ACCESS_TOKEN=your_token" > .env
# 3. Run
upstox-mcp
# 4. Use with Claude
# Add to Claude Desktop config, restart, and start chatting!
Hecho con ❤️ para operadores indios
¡Felices operaciones! 📈🚀