Skip to main content
Glama
mukul8896

trading-mcp-server

by mukul8896

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TRADING_MODENoTrading mode: 'paper' (default) or 'live'.
TRADING_MCP_HOMENoPath to the trading repo home directory. Defaults to current working directory if not set.
ALLOW_DELIVERY_BUYNoAllow delivery buy orders.
ALLOW_INTRADAY_BUYNoAllow intraday buy orders.
ALLOW_LIVE_TRADINGNoMust be 'true' to enable live trading. Only settable by human in .env.
MAX_OPEN_POSITIONSNoMaximum number of open positions.
ALLOW_DELIVERY_SELLNoAllow delivery sell orders (should be false).
ALLOW_INTRADAY_SELLNoAllow intraday sell orders.
MIN_RISK_REWARD_RATIONoMinimum risk:reward ratio.
MAX_DAILY_LOSS_PERCENTNoMaximum daily loss as percentage.
PAPER_STARTING_CAPITALNoStarting capital for paper trading.
MAX_POSITION_SIZE_PERCENTNoMaximum position size as percentage of portfolio.
MAX_RISK_PER_TRADE_PERCENTNoMaximum risk per trade as percentage.
REQUIRE_MANUAL_APPROVAL_FOR_LIVE_ORDERSNoIf 'true', requires manual approval for live orders.

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_trading_configA

Current trading configuration (secrets redacted). The single source of truth for mode, permissions and risk limits.

get_current_trading_modeA

Effective trading mode. 'live' only when TRADING_MODE=live AND ALLOW_LIVE_TRADING=true.

update_trading_configA

Update runtime-updatable config keys in .env (risk limits, intraday/swing enable flags). Live-trading switches, ALLOW_DELIVERY_SELL and credentials can NOT be changed here — a human must edit .env.

switch_to_paper_modeA

Set TRADING_MODE=paper (always safe).

switch_to_live_modeA

Set TRADING_MODE=live. NOTE: real orders remain impossible until a human also sets ALLOW_LIVE_TRADING=true in .env.

validate_trading_permissionsB

Check config permissions for a prospective order (no market/risk checks). side: BUY|SELL, product_type: INTRADAY|DELIVERY.

fetch_live_priceA

Last traded price for an NSE symbol (requires broker credentials).

fetch_historical_dataB

Historical OHLCV candles. timeframe: ONE_MINUTE|FIVE_MINUTE|FIFTEEN_MINUTE| THIRTY_MINUTE|ONE_HOUR|ONE_DAY. Dates ISO format (optional).

fetch_market_statusC

Whether the market is open, pre-open or closed right now (IST).

fetch_symbol_metadataB

Instrument metadata: token, exchange, lot size, tick size.

fetch_watchlistA

Watchlist symbols: Chartink monthly-uptrend + RSI>50 scan, falling back to a static NIFTY list when the scan is unavailable.

calculate_smaC

Simple moving average (latest value).

calculate_emaC

Exponential moving average (latest value).

calculate_rsiC

Wilder RSI (latest value).

calculate_macdC

MACD line, signal and histogram (latest values).

calculate_bollinger_bandsC

Bollinger bands (latest values).

calculate_atrC

Average True Range — useful for stop-loss placement.

calculate_volume_analysisC

Volume vs its EMA, spike detection, 20-bar average.

detect_support_resistanceC

Support/resistance levels from clustered swing pivots.

detect_trendC

Trend direction from EMA stack + regression slope.

get_indicator_snapshotA

All standard indicators in one call (RSI, EMAs, MACD, Bollinger, ATR, volume, trend, VWAP on intraday timeframes). Prefer this over many single calls.

fetch_latest_newsB

Latest news items for one symbol with per-item sentiment.

fetch_market_newsB

Broad market news. category: all|stock|sectoral|global; sentiment: all|positive|negative|neutral.

analyze_news_sentimentA

Aggregate sentiment counts for a symbol's recent news. The agent should read the texts (fetch_latest_news) for nuance — this is just the tally.

fetch_portfolioA

Portfolio for the EFFECTIVE mode: paper portfolio in paper mode, broker holdings+positions in live mode.

fetch_order_historyB

Order history for the effective mode (paper orders, or broker order book).

calculate_portfolio_exposureC

Per-position exposure vs MAX_POSITION_SIZE_PERCENT (paper portfolio).

calculate_unrealized_pnlB

Paper portfolio P&L. Pass live_prices as {symbol: ltp} (e.g. from fetch_live_price) to include unrealized P&L.

calculate_position_sizeC

Quantity so the stop-loss loss equals risk_percent of capital, capped by MAX_POSITION_SIZE_PERCENT.

calculate_stop_lossC

ATR-based stop-loss suggestion from current price.

calculate_target_priceB

Target price for a desired risk:reward given entry and stop.

check_max_daily_lossB

Whether today's realized paper P&L has hit MAX_DAILY_LOSS_PERCENT.

check_portfolio_concentrationC

Concentration check across open paper positions.

validate_trade_against_risk_rulesB

Full pre-trade validation checklist: permissions, market status, risk limits, stop/target presence, risk:reward, position size, daily loss, open positions. Run this BEFORE any paper or live order.

evaluate_intraday_trade_setupB

Multi-timeframe (daily/1h/15m) intraday setup with a mechanical trade plan and confidence score.

evaluate_swing_trade_setupC

Daily-timeframe swing/delivery setup with support/resistance and a mechanical trade plan.

compare_multiple_symbolsB

Side-by-side indicator snapshots for up to 10 symbols.

scan_watchlist_for_swing_opportunitiesC

Evaluate the watchlist for swing setups, ranked by confidence score.

scan_watchlist_for_intraday_opportunitiesA

Evaluate the watchlist for intraday setups, ranked by confidence score. Slow: fetches three timeframes per symbol.

run_strategy_backtestB

Backtest a built-in strategy (ma_crossover | rsi_reversal | macd_trend | breakout_volume) on historical data. Returns trades, win rate, P&L, drawdown.

place_paper_orderA

Place a SIMULATED order in the paper account. If price is omitted the live LTP is used (requires broker credentials). The full validation checklist is enforced here too.

close_paper_positionC

Close an open paper position at the given price (or live LTP).

fetch_paper_tradesC

Closed paper trades, optionally filtered by INTRADAY or DELIVERY.

fetch_paper_portfolioA

Paper account: cash, open positions, realized P&L.

calculate_paper_trading_performanceA

Performance metrics: win rate, P&L, drawdown — overall, per product type, and per strategy. Use this to judge profitability before considering live mode.

generate_paper_trading_reportA

Full paper-trading report (performance + portfolio + recent trades).

reset_paper_accountA

Reset the paper account to starting capital, erasing simulated history. Requires confirm=true.

prepare_orderA

Validate and STAGE an order. Never executes. In live mode returns an approval_token; the human must approve before execution. Delivery sells are blocked and returned as recommendation-only.

validate_order_before_executionC

Re-run the full validation checklist for an order without staging it.

execute_intraday_order_after_validationA

Execute a prepared INTRADAY live order. Only call after the human has explicitly approved the prepared order shown to them.

execute_delivery_buy_after_validationB

Execute a prepared DELIVERY BUY live order. Only call after the human has explicitly approved. Delivery SELL can never be executed through this system.

block_delivery_sell_orderA

Record a delivery-sell RECOMMENDATION. The order is never sent to the broker — delivery sells require manual verification by the user.

list_pending_live_ordersC

Prepared live orders awaiting human approval.

cancel_pending_live_orderC

Cancel a prepared live order before execution.

fetch_broker_fundsA

Available funds/margins from the broker (requires credentials).

fetch_broker_positionsC

Today's positions from the broker.

fetch_broker_holdingsC

Delivery holdings from the broker.

fetch_broker_order_statusC

Status of a broker order by id.

send_telegram_notificationA

Send a free-text message to the configured Telegram chat.

Requires TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID in .env; if either is missing, returns {'sent': False, 'reason': 'telegram_not_configured'} without raising. parse_mode: HTML | Markdown | none. This sends a MESSAGE ONLY and never places an order.

send_trade_alertA

Format an 'ACTION REQUIRED' trade recommendation and send it to Telegram for the human to place manually (used in notify-only mode).

side: BUY | SELL; trade_type: intraday | delivery; mode: paper | live. Sends a RECOMMENDATION ONLY — it does NOT place any order. The returned dict always includes 'preview' (the message text) so the agent can also surface it inline even when Telegram is not configured.

Prompts

Interactive templates invoked by user choice

NameDescription
intraday_trade_analysisDisciplined intraday analysis workflow for one symbol.
swing_trade_analysisSwing/delivery analysis workflow for one symbol.
paper_trading_reviewReview paper-trading performance and judge strategy profitability.

Resources

Contextual data attached and managed by the client

NameDescription
trading_configCurrent trading configuration (secrets redacted).
safety_rulesThe non-negotiable safety rules this server enforces.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mukul8896/trading-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server