Upstox MCP Server
A MCP server exposing Upstox market, technical, and account data as MCP tools for AI agents.
README
Upstox MCP Server: Global Model Context Protocol for Indian Equity Markets 📈
<a href="https://glama.ai/mcp/servers/@ravikant1918/mcp-server-upstox"> <img width="380" height="200" src="https://glama.ai/mcp/servers/@ravikant1918/mcp-server-upstox/badge" /> </a>
The Official-style Upstox MCP Server provides a high-performance Model Context Protocol (MCP) integration for the Upstox Trading API. It enables AI agents like Claude Desktop, Cursor IDE, and custom LLM applications to securely access real-time Indian stock market data (NSE, BSE, MCX), perform advanced technical analysis (RSI, MACD, Bollinger Bands), and manage portfolio information in a strictly read-only mode.
Optimized for algorithmic trading, market analysis, and automated research on Nifty 50, Bank Nifty, and thousands of Indian equities.
📖 Featured on Modern AI Day: The USB Port for AI: Connecting Claude to Real-Time Market Data
🌐 Live Demo Instance: https://mcp-server-upstox.onrender.com/mcp
🛠️ Technical Stack
- Framework: FastMCP (MCP Python SDK)
- API Engine: FastAPI & Uvicorn
- Data Science: Pandas, NumPy
- Technical Analysis: Pandas-TA
- Client Integration: Httpx, Upstox Python SDK
- Deployment: Docker, Render
⚡ Quick Start (Remote BYOK)
Connect Claude Desktop to your remote instance in seconds using Bring Your Own Key (BYOK) support:
{
"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"
]
}
}
}
🚀 Features
📊 Market Data
- Live quotes -
market_get_live_quote - Search Instruments -
market_search_instruments - Historical data -
market_get_historical_data(Custom ranges) - Intraday candles -
market_get_intraday_candles
📈 Technical Analysis
- Granular Indicators - Individual tools for RSI, MACD, ADX, Bollinger Bands, etc.
- Fibonacci Levels -
analysis_calculate_fibonacci_levels - Candlestick Patterns -
analysis_analyze_candlestick_patterns - Smart Context -
analysis_get_technical_analysis(Super Tool)
👤 Account Management (Read-Only)
- Margin Details -
account_get_user_margin - Order Book -
account_get_order_book - Trade History -
account_get_trade_history - Portfolio - Holdings and Positions lists
🤖 MCP Native
- AI-First Design - Built specifically for AI agents
- Tool-Based Architecture - Natural language to API calls
- Multi-User Support - Secure "Bring Your Own Key" (BYOK) architecture
- Conversational Interface - No complex API knowledge needed
⚠️ Safety Notice
This MCP server is STRICTLY READ-ONLY
❌ No order placement
❌ No order modification
❌ No fund transfers
❌ No trading actionsTrading endpoints are intentionally excluded for your safety and security.
📦 Installation
Prerequisites
- Python 3.10 or higher
- Upstox Trading Account
- Upstox API credentials
1️⃣ Clone Repository
git clone https://github.com/ravikant1918/mcp-server-upstox.git
cd mcp-server-upstox
2️⃣ Create Virtual Environment (Recommended)
python -m venv venv
# On macOS/Linux
source venv/bin/activate
# On Windows
venv\Scripts\activate
3️⃣ Install Dependencies
pip install -e .
4️⃣ Verify Installation
upstox-mcp --version
🔐 Configuration
Getting Upstox API Credentials
-
Login to Upstox Developer Console
- Visit: https://api.upstox.com/
- Login with your Upstox account
-
Create an App
- Go to "My Apps"
- Click "Create App"
- Fill in details:
- App Name: "MCP Server"
- Redirect URL:
http://localhost:8000/callback - Select read-only permissions
-
Get API Keys
- Note down your
API KeyandAPI Secret
- Note down your
-
Generate Access Token
- Follow Upstox OAuth flow
- Or use Upstox's token generation tool
- Token is valid for 24 hours (needs daily refresh)
Environment Configuration
Create a .env file in the project root:
# 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
Security Best Practices:
- Never commit
.envfile to version control - Add
.envto.gitignore - Rotate tokens regularly
- Use read-only API scopes only
▶️ Running the Server
Option A — Standard IO (for Claude Desktop)
Default mode for local AI agent usage:
upstox-mcp
# or
upstox-mcp --transport stdio
Option B — HTTP Mode (for Cursor or Remote Access)
Recommended for web-based AI agents:
upstox-mcp --transport http
# Server will start on http://localhost:8000
Custom port:
upstox-mcp --transport http --port 8080
Option C — Docker Deployment
Using Docker Compose (Recommended)
# Build and run
docker-compose up -d
# View logs
docker-compose logs -f
# Stop
docker-compose down
Using Docker CLI
# 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
Server will be available at: http://localhost:8000/mcp
🔌 MCP Client Configuration
Claude Desktop
Config Location:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Configuration:
{
"mcpServers": {
"Upstox": {
"command": "/absolute/path/to/venv/bin/upstox-mcp",
"args": ["--transport", "stdio"],
"env": {
"UPSTOX_ACCESS_TOKEN": "YOUR_ACCESS_TOKEN"
}
}
}
}
Finding the absolute path:
# On macOS/Linux
which upstox-mcp
# On Windows (PowerShell)
(Get-Command upstox-mcp).Path
Cursor IDE
- Open Cursor Settings
- Go to Features → MCP
- Add new server:
- Name: Upstox
- Type: HTTP
- URL:
http://localhost:8000/mcp
Remote MCP (via mcp-remote) — BYOK Support
For running the server remotely or in a multi-user environment (e.g., Render), you can pass your credentials via headers. This is known as Bring Your Own Key (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] This allows multiple users to use the same server instance securely without sharing credentials on the server side.
🧠 Example Prompts (For AI Agents)
Market Data Queries
"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?"
Technical Analysis
"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"
Intraday Analysis
"Show me 5-minute candles for RELIANCE"
"Get 1-minute chart data for INFY"
"Display 15-minute intraday data for SBIN"
Account Information
"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?"
Complex Analysis
"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"
🧰 Available MCP Tools
| Category | Tool Name | Description |
|---|---|---|
| Market | market_get_live_quote |
Last Traded Price, OHLC, Volume |
| Market | market_search_instruments |
Search for trading symbols |
| Market | market_get_instrument_details |
Detailed instrument metadata |
| Market | market_get_historical_data |
Custom historical candle data |
| Market | market_get_intraday_candles |
Real-time intraday charts |
| Analysis | analysis_calculate_rsi |
Momentum analysis (RSI) |
| Analysis | analysis_calculate_macd |
Trend & momentum (MACD) |
| Analysis | analysis_calculate_adx |
Trend strength (ADX) |
| Analysis | analysis_calculate_moving_averages |
Trend analysis (SMA/EMA) |
| Analysis | analysis_calculate_bollinger_bands |
Volatility study |
| Analysis | analysis_calculate_support_resistance |
Pivot-based levels |
| Analysis | analysis_calculate_volatility_metrics |
Risk assessment (ATR) |
| Analysis | analysis_calculate_stochastic |
Momentum oscillator |
| Analysis | analysis_calculate_williams_r |
%R Momentum |
| Analysis | analysis_calculate_fibonacci_levels |
Retracement levels |
| Analysis | analysis_analyze_candlestick_patterns |
Pattern detection |
| Analysis | analysis_get_technical_analysis |
Holistic multi-indicator report |
| Account | account_get_summary |
Portfolio snapshot |
| Account | account_get_user_margin |
Available funds |
| Account | account_get_holdings_list |
Equity holdings |
| Account | account_get_positions_list |
Active positions |
| Account | account_get_order_book |
Daily orders |
| Account | account_get_trade_history |
Daily executions |
[!NOTE] All tools return a standardized JSON response:
{ "success": true, "data": ..., "error": null, "metadata": ... }.
Tool Details
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"
}
Supported Indicators:
- RSI - Momentum oscillator (14 period default)
- MACD - Trend-following indicator
- EMA_x - Exponential Moving Average (e.g., EMA_20, EMA_50, EMA_200)
- SMA_x - Simple Moving Average (e.g., SMA_50, SMA_200)
- BBANDS - Bollinger Bands (volatility)
- VWAP - Volume Weighted Average Price
- ATR - Average True Range (volatility)
Returns:
- Price data
- Calculated indicators
- Detected candlestick patterns
- Trend context (Bullish/Bearish/Sideways)
- Support and resistance levels
🏗️ Architecture
┌─────────────────┐
│ 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 │
└─────────────────┘
📊 Technical Stack
- Framework: FastMCP (Model Context Protocol)
- API Client: Upstox Python SDK
- Technical Analysis: pandas-ta
- Web Server: Uvicorn (for HTTP mode)
- Containerization: Docker, Docker Compose
🔧 Troubleshooting
Common Issues
1. "Invalid token" Error
Problem: Access token expired (tokens are valid for 24 hours)
Solution:
# Generate new token from Upstox
# Update .env file with new token
# Restart the MCP server
2. "Command not found: upstox-mcp"
Problem: Package not installed or not in PATH
Solution:
# Activate virtual environment
source venv/bin/activate # macOS/Linux
venv\Scripts\activate # Windows
# Reinstall package
pip install -e .
3. Claude Desktop Not Detecting Server
Problem: Configuration file path or format issue
Solution:
- Verify config file location
- Check JSON syntax (use a JSON validator)
- Ensure absolute path to executable
- Restart Claude Desktop
4. "No data returned" for Intraday Candles
Problem: Market closed or no recent trading activity
Solution:
- Check if market is open (9:15 AM - 3:30 PM IST, Mon-Fri)
- Try a different interval
- Verify symbol is correct
5. Rate Limiting
Problem: Too many API calls in short time
Solution:
- Add delays between requests
- Implement caching (future enhancement)
- Use batch queries when possible
🚧 Limitations
- Token Expiry: Access tokens expire every 24 hours and need manual refresh
- Read-Only: Cannot place trades (by design for safety)
- API Rate Limits: Subject to Upstox API rate limiting
- Market Hours: Live data only available during trading hours
- Historical Data: Limited by Upstox API data retention policies
🗺️ Roadmap
Version 1.1 (Done)
- [x] Caching layer for improved performance
- [x] Basic candlestick pattern detection
Version 2.0 (Done) 🚀
- [x] Granular Technical Indicators: 10+ new specialized TA tools
- [x] Namespaced Tools: Logical grouping (
market_,analysis_,account_) - [x] Historical Data: Custom timeframe retrieval
- [x] Instrument Search: Find symbols by name
- [x] JSON-Safe Response Schema: Robust serialization for all agents
- [x] Order & Trade Tracking: Real-time access to daily activity
Version 2.1 (Done) 🚀
- [x] BYOK Support: Pass credentials via HTTP headers
- [x] Multi-User Support: Secure architecture for shared deployments
- [x] Dynamic Instructions: Interactive landing page with setup guides
Version 3.0 (Planned)
- [ ] Automatic token refresh mechanism
- [ ] Database integration for long-term historical tracking
- [ ] Portfolio performance analytics
- [ ] Alert system
- [ ] Machine learning predictions
Version 3.0 (Vision)
- [ ] Machine learning predictions
- [ ] Strategy builder
- [ ] Social trading features
- [ ] Mobile app integration
🤝 Contributing
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Development Setup
# 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 .
🗺️ Roadmap
Q1 2026: Foundation & Core Analysis (Current)
- [x] Initial MCP implementation for Upstox
- [x] Comprehensive technical indicator tools
- [x] Bring Your Own Key (BYOK) support for remote deployments
- [x] Dynamic JSON configuration generator
Q2 2026: Advanced Insights
- [ ] Sector-wise market analysis tools
- [ ] Option Chain analysis (Greeks calculation)
- [ ] Corporate actions tracking (Dividends, Splits)
- [ ] Multi-instrument correlation analysis
Q3 2026: Ecosystem Expansion
- [ ] Integrated Backtesting engine wrapper
- [ ] Webhook support for real-time alerts
- [ ] Native support for more MCP clients (e.g., Goose, Windsurf)
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙌 Credits & Acknowledgments
- FastMCP - MCP server framework
- Upstox - Trading API and market data
- pandas-ta - Technical analysis indicators
- Anthropic - Claude AI and MCP protocol
📬 Disclaimer
IMPORTANT: This project is not affiliated with, endorsed by, or sponsored by Upstox.
Trading Disclaimer:
- Trading in stocks involves substantial risk of loss
- This tool is for informational and educational purposes only
- Not financial advice - consult a licensed financial advisor
- Past performance does not guarantee future results
- The developers are not responsible for any trading losses
- Always do your own research before making investment decisions
API Usage:
- Ensure compliance with Upstox API terms of service
- Respect API rate limits
- Use responsibly and ethically
📞 Support
Documentation
Get Help
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: developerrk1918@gmail.com
Community
- Star ⭐ this repo if you find it useful
- Share with fellow traders
- Report bugs and suggest features
- Contribute code or documentation
🎯 Quick Start Summary
# 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!
Made with ❤️ for Indian Traders
Happy Trading! 📈🚀
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。