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 📈

GitHub Star License: MIT Python Support MCP Version

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


⚡ 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 trading

Los 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

  1. Inicia sesión en la Consola de Desarrollador de Upstox

  2. 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
  3. Obtén las Claves de API

    • Anota tu API Key y API Secret
  4. 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 .env al control de versiones
  • Agrega .env a .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

  1. Abre la Configuración de Cursor
  2. Ve a CaracterísticasMCP
  3. 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íaNombre de la HerramientaDescripción
Mercadomarket_get_live_quoteÚltimo Precio Operado, OHLC, Volumen
Mercadomarket_search_instrumentsBuscar símbolos de trading
Mercadomarket_get_instrument_detailsMetadatos detallados del instrumento
Mercadomarket_get_historical_dataDatos de velas históricas personalizados
Mercadomarket_get_intraday_candlesGráficos intradía en tiempo real
Análisisanalysis_calculate_rsiAnálisis de momentum (RSI)
Análisisanalysis_calculate_macdTendencia y momentum (MACD)
Análisisanalysis_calculate_adxFuerza de tendencia (ADX)
Análisisanalysis_calculate_moving_averagesAnálisis de tendencia (SMA/EMA)
Análisisanalysis_calculate_bollinger_bandsEstudio de volatilidad
Análisisanalysis_calculate_support_resistanceNiveles basados en pivotes
Análisisanalysis_calculate_volatility_metricsEvaluación de riesgo (ATR)
Análisisanalysis_calculate_stochasticOscilador de momentum
Análisisanalysis_calculate_williams_rMomentum %R
Análisisanalysis_calculate_fibonacci_levelsNiveles de retroceso
Análisisanalysis_analyze_candlestick_patternsDetección de patrones
Análisisanalysis_get_technical_analysisInforme holístico multi-indicador
Cuentaaccount_get_summaryInstantánea de cartera
Cuentaaccount_get_user_marginFondos disponibles
Cuentaaccount_get_holdings_listTenencias de acciones
Cuentaaccount_get_positions_listPosiciones activas
Cuentaaccount_get_order_bookÓrdenes diarias
Cuentaaccount_get_trade_historyEjecuciones 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

  1. Expiración de Token: Los tokens de acceso expiran cada 24 horas y requieren renovación manual
  2. Solo Lectura: No se pueden colocar operaciones (por diseño, por seguridad)
  3. Límites de Velocidad de API: Sujeto a los límites de velocidad de la API de Upstox
  4. Horario de Mercado: Los datos en vivo solo están disponibles durante el horario de trading
  5. 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:

  1. Haz un fork del repositorio
  2. Crea una rama de características (git checkout -b feature/AmazingFeature)
  3. Haz commit de tus cambios (git commit -m 'Add some AmazingFeature')
  4. Haz push a la rama (git push origin feature/AmazingFeature)
  5. 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

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! 📈🚀