kite-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KITE_API_KEY | Yes | Your Kite Connect API key. | |
| KITE_API_SECRET | No | Your Kite Connect API secret, used by npm run login to create .kite-session.json. | |
| KITE_MCP_ENABLE_TRADING | No | Set to true to enable live order/SIP/position mutation. Default false runs mutating tools in dry-run mode. | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_profileB | Get the logged-in Kite user's profile. |
| get_marginsB | Get available trading margins. Optionally scoped to a segment (equity or commodity). |
| get_holdingsA | Get long-term equity holdings (stocks held in demat, not intraday positions). |
| get_positionsA | Get current day's and net trading positions (intraday + carry-forward F&O etc). |
| get_auction_instrumentsA | Get instruments currently available to buy in an auction session (used to cover short-delivery obligations). |
| convert_positionA | Convert an open position's product type (e.g. move an intraday MIS position to CNC overnight delivery, or vice versa). Dry-run unless KITE_MCP_ENABLE_TRADING=true is set. |
| get_ordersA | Get the day's order book (all orders placed today and their status). |
| get_order_historyC | Get the full status history of a single order. |
| get_order_tradesB | Get the trades (fills) generated by a single order. |
| get_tradesA | Get all trades (fills) for the day across all orders. |
| place_orderA | Place a new order on Kite. Returns a dry-run preview unless KITE_MCP_ENABLE_TRADING=true is set in the server's environment, since this sends a real order to the exchange with real money. |
| modify_orderA | Modify a pending order (price, quantity, order type, trigger price, validity, or disclosed quantity). Dry-run unless KITE_MCP_ENABLE_TRADING=true is set. |
| cancel_orderA | Cancel a pending order. Dry-run unless KITE_MCP_ENABLE_TRADING=true is set. |
| get_gttsB | List all active GTT (Good Till Triggered) orders. |
| get_gttB | Get details of a single GTT order by trigger id. |
| place_gttB | Create a GTT (Good Till Triggered) order — e.g. a standing stop-loss or target that fires without you watching the price. Dry-run unless KITE_MCP_ENABLE_TRADING=true is set. |
| modify_gttB | Modify an existing GTT order. Dry-run unless KITE_MCP_ENABLE_TRADING=true is set. |
| delete_gttA | Delete (cancel) a GTT order. Dry-run unless KITE_MCP_ENABLE_TRADING=true is set. |
| get_quoteA | Get full market quote (price, depth, OHLC, volume) for up to 50 instruments. Requires a paid Kite Connect subscription with market data access — not included in the free Personal tier. |
| get_ohlcA | Get OHLC (open/high/low/close) snapshot for up to 50 instruments. Requires a paid Kite Connect subscription with market data access — not included in the free Personal tier. |
| get_ltpA | Get last traded price for up to 50 instruments. Requires a paid Kite Connect subscription with market data access — not included in the free Personal tier. |
| get_trigger_rangeB | Get the valid stop-loss trigger price range for Cover Order instruments. Requires a paid Kite Connect subscription with market data access — not included in the free Personal tier. |
| get_historical_dataA | Get historical OHLC candles for an instrument. Use search_instruments first to find the instrument_token. Requires a paid Kite Connect subscription with market data access — not included in the free Personal tier. Minute-level data is capped by Kite to recent history (e.g. ~60 days for 'minute'); day candles go back much further. |
| watch_ticksA | Open a live WebSocket connection to Kite and collect ticks for a short window, then return everything received (latest price per instrument plus full history within the window). Requires a paid Kite Connect subscription with market data access. Use search_instruments first to find instrument_token values. |
| search_instrumentsA | Search the instrument master list by trading symbol or name substring (case-insensitive). Use this to find instrument_token / exact tradingsymbol values needed by quote, historical-data, and tick-watching tools. The full list has tens of thousands of rows, so results are capped — narrow with |
| search_mf_instrumentsB | Search the mutual fund instrument list by trading symbol (ISIN) or name substring, e.g. "Nifty 50 Index". |
| get_mf_holdingsB | Get mutual fund holdings. |
| get_mf_ordersA | Get mutual fund orders. Omit order_id to list all of today's orders. |
| get_mf_sipsB | Get mutual fund SIPs (systematic investment plans). Omit sip_id to list all active SIPs. |
| place_mf_orderA | Place a mutual fund buy (amount) or sell (quantity) order. Dry-run unless KITE_MCP_ENABLE_TRADING=true is set. |
| cancel_mf_orderA | Cancel a pending mutual fund order. Dry-run unless KITE_MCP_ENABLE_TRADING=true is set. |
| place_mf_sipB | Start a mutual fund SIP (recurring investment). Dry-run unless KITE_MCP_ENABLE_TRADING=true is set. |
| modify_mf_sipB | Modify, pause, or unpause an existing SIP. Dry-run unless KITE_MCP_ENABLE_TRADING=true is set. |
| cancel_mf_sipB | Cancel an SIP. Dry-run unless KITE_MCP_ENABLE_TRADING=true is set. |
| calculate_order_marginsA | Calculate the margin required for one or more hypothetical orders, without placing them. Use this before place_order to check affordability/leverage. Read-only — free on all tiers. |
| calculate_basket_marginsB | Calculate combined margin for a basket of hypothetical orders, accounting for hedges/offsets across them (e.g. a spread). Read-only — free on all tiers. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 36 tools
Most tools map to distinct resources and actions, and descriptions clarify boundaries between similar-sounding pairs such as get_order_trades vs get_trades and calculate_order_margins vs calculate_basket_margins. Minor overlap remains among market-data snapshot tools (get_quote, get_ohlc, get_ltp) and order-inspection tools, but it is manageable.
The tool set uses a consistent snake_case verb_noun pattern throughout: get_*, place_*, modify_*, cancel_*, search_*, calculate_*, convert_*, and watch_*. Domain prefixes such as mf and gtt are applied predictably, with only natural pluralization differences.
36 tools is heavy for agent selection and exceeds the typical well-scoped range. However, the server covers a broad brokerage surface including equity orders, GTTs, market data, mutual funds, SIPs, positions, holdings, and margin calculations, so many tools are justified rather than gratuitous.
Coverage is strong across core trading workflows: equity order lifecycle, GTT CRUD, market data snapshots/history/ticks, positions, holdings, margins, and mutual fund/SIP operations. Minor gaps exist around some single-resource retrieval and mutual fund order-modification paths, but there are no major dead ends for common workflows.