Infrastructure You Can Trust for Agentic Products
© 2026 MewCP. All rights reserved.
Trade smarter with Zerodha Kite — orders, positions, holdings, and live market data via MCP.
A Model Context Protocol (MCP) server that exposes Zerodha Kite Connect's API for trading, portfolio management, and market data retrieval.
Overview
The Kite Connect MCP Server provides full access to Zerodha's trading platform:
Place, modify, and cancel equity and derivatives orders
Fetch real-time quotes, historical candlestick data, and instrument lists
Monitor positions, holdings, margins, and user profile
Perfect for:
Automating trading workflows through an AI assistant
Building portfolio monitoring and analysis pipelines
Querying live and historical market data programmatically
kite_place_order — Place an order on Zerodha KitePlace a market, limit, SL, or SL-M order for any NSE/BSE/NFO/MCX instrument.
Inputs:
- `tradingsymbol` (string, required) — Trading symbol (e.g., 'INFY', 'RELIANCE')
- `exchange` (string, required) — Exchange: NSE, BSE, NFO, MCX
- `transaction_type` (string, required) — BUY or SELL
- `quantity` (integer, required) — Number of shares/units (min 1 )
- `order_type` (string, optional) — MARKET, LIMIT, SL, SL-M (default: MARKET)
- `product` (string, optional) — MIS (intraday), CNC (delivery), NRML (overnight) (default: MIS)
- `price` (float, optional) — Price for LIMIT orders
- `validity` (string, optional) — DAY or IOC (default: DAY)
- `disclosed_quantity` (integer, optional) — Disclosed quantity
- `trigger_price` (float, optional) — Trigger price for SL/SL-M orders
- `tag` (string, optional) — Tag for order tracking output:
{
"success" : true ,
"order_id" : "230914000012345" ,
"status" : "placed" ,
"message" : "Order placed successfully. Order ID: 230914000012345"
}
kite_get_orders — Get all orders for the userReturns all orders for the session including status, quantity, price, and timestamps.
Inputs:
output:
{
"success" : true ,
"count" : 2 ,
"orders" : [
{
"order_id" : "230914000012345" ,
"tradingsymbol" : "INFY" ,
"status"
kite_cancel_order — Cancel an existing orderCancel a pending order by its order ID.
Inputs:
- `order_id` (string, required) — Order ID to cancel
- `variety` (string, optional) — Order variety: regular, co, amo, iceberg (default: regular) output:
{
"success" : true ,
"order_id" : "230914000012345" ,
"status" : "cancelled" ,
"message" : "Order 230914000012345 cancelled successfully"
kite_get_positions — Get all open positionsReturns day and net positions with P&L, buy/sell prices, and M2M values.
Inputs:
output:
{
"success" : true ,
"day_positions" : [
{ "tradingsymbol" : "INFY" , "quantity" : 10 , "pnl" : 250.0 , "buy_price" : 1450.0
kite_get_holdings — Get delivery portfolio holdingsReturns all long-term holdings with average price, last price, and P&L.
Inputs:
output:
{
"success" : true ,
"count" : 3 ,
"holdings" : [
{
"tradingsymbol" : "RELIANCE" ,
"quantity" : 5 ,
"average_price"
kite_get_quote — Get real-time market quotesFetch live quotes for one or more instruments including last price, volume, and circuit limits.
Inputs:
- `instruments` (string, required) — Comma-separated instrument symbols (e.g., 'NSE:INFY,NSE:RELIANCE') output:
{
"success" : true ,
"count" : 1 ,
"quotes" : {
"NSE:INFY" : {
"last_price" : 1452.5 ,
"volume"
kite_get_historical_data — Get historical candlestick dataFetch OHLCV candlestick data for any instrument over a date range and interval. Returns up to 100 candles.
Inputs:
- `instrument_token` (string, required) — Instrument token (use kite_get_instruments to find tokens)
- `from_date` (string, required) — Start date (YYYY-MM-DD)
- `to_date` (string, required) — End date (YYYY-MM-DD)
- `interval` (string, optional) — minute, day, 5 minute, 15 minute, 30 minute, 60 minute (default: day) output:
kite_get_instruments — Get tradable instrument listReturns instruments available for trading, optionally filtered by exchange. Returns up to 1000 results.
Inputs:
- `exchange` (string, optional) — Filter by exchange: NSE, BSE, NFO, MCX, CDS
- `limit` (integer, optional) — Maximum results to return, 1 – 1000 (default: 100 ) output:
{
"success" : true ,
"count" : 100 ,
"exchange" :
kite_get_profile — Get user profileReturns the authenticated user's profile including name, email, phone, and enabled exchanges and products.
Inputs:
output:
{
"success" : true ,
"user_id" : "AB1234" ,
"user_name" : "John Doe" ,
"user_type" : "individual" ,
"email" : "john@example.com" ,
kite_get_margins — Get account marginsReturns available, utilized, and total margins for equity and commodity segments.
Inputs:
output:
{
"success" : true ,
"equity" : { "available" : { "cash" : 50000.0 }, "utilised" : { "debits" : 12000.0 } },
"commodity" : { "available" : {
kite_health_check — Check server readinessReturns server status and supported capability list. Does not require credentials.
Inputs:
output:
{
"status" : "ok" ,
"server" : "CL Kite Connect MCP Server" ,
"type" : "third-party-integration" ,
"auth_required" : true ,
"supports" : [ "orders" , "positions"
API Parameters Reference
Order Types
MARKET — Execute immediately at the best available price
LIMIT — Execute at a specified price or better; requires price
SL — Stop-loss limit order; requires both trigger_price and price
SL-M — Stop-loss market order; requires trigger_price only
Product Codes
MIS — Margin Intraday Square-off; must be closed before market end
CNC — Cash and Carry; for delivery/long-term holding
NRML — Normal; for overnight F&O positions
Instrument Token Finding a token:
use kite_get_instruments with the exchange filter, then read the instrument_token field.
Example: { "tradingsymbol" : "INFY" , "instrument_token" : "408065" , "exchange" : "NSE" } quote symbol format:
{ exchange }:{ tradingsymbol }
Example: NSE:INFY
Getting Your Kite Connect Credentials
Steps
Go to Kite Connect Developer Console
Create an app to get your API Key and API Secret
Complete the login flow to obtain an Access Token (valid for one trading day)
Both api_key and access_token are required — provide them as static credential fields
Troubleshooting
Missing or Invalid Headers
Cause: Credentials not provided in request headers or incorrect format
Solution:
Verify Authorization: Bearer YOUR_API_KEY and X-Mewcp-Credential-Id: CREDENTIAL-ID headers are present
Check that the credential is active in your MewCP account
Insufficient Credits
Cause: API calls have exceeded your request limits
Solution:
Check credit usage in your Curious Layer dashboard
Upgrade to a paid plan or add credits for higher limits
Contact support for credit adjustments
Credential Not Connected
Cause: No Kite Connect credential linked to your account
Solution:
Go to Credentials in your MewCP dashboard
Add your Kite Connect api_key and access_token as a static credential
Retry the request with the correct X-Mewcp-Credential-Id header
Malformed Request Payload
Cause: JSON payload is invalid or missing required fields
Solution:
Validate JSON syntax before sending
Ensure all required tool parameters are included
Check parameter types match expected values
Server Not Found
Cause: Incorrect server name in the API endpoint
Solution:
Verify endpoint format: { server-name }/mcp/{ tool-name }
Use correct server name from documentation
Check available servers in your Curious Layer account
Kite Connect API Error
Cause: Upstream Kite Connect API returned an error
Solution:
Check Kite Connect service status at Kite Status Page
Verify your access token is valid and not expired (tokens expire at end of trading day)
Review the error message for specific details
:
"COMPLETE"
,
"transaction_type" : "BUY" ,
"quantity" : 10 ,
"filled_quantity" : 10 ,
"average_price" : 1452.5 ,
"order_timestamp" : "2023-09-14 10:32:00"
}
]
}
}
,
"sell_price"
:
0.0
}
],
"net_positions" : [
{ "tradingsymbol" : "INFY" , "quantity" : 10 , "pnl" : 250.0 , "unrealised" : 250.0 , "m2m" : 250.0 }
]
}
:
2400.0
,
"last_price" : 2520.0 ,
"pnl" : 600.0 ,
"day_change_percentage" : 0.85
}
]
}
:
1234567
,
"change" : 12.5 ,
"upper_circuit" : 1597.75 ,
"lower_circuit" : 1307.25 ,
"timestamp" : "2023-09-14 15:29:59"
}
}
}
:
true
,
"count" : 5 ,
"interval" : "day" ,
"data" : [
{ "date" : "2023-09-14" , "open" : 1440.0 , "high" : 1460.0 , "low" : 1435.0 , "close" : 1452.5 , "volume" : 1234567 }
]
}
"NSE"
,
"instruments" : [
{ "tradingsymbol" : "INFY" , "instrument_token" : "408065" , "exchange" : "NSE" , "segment" : "NSE" , "name" : "INFOSYS" }
]
}
"phone"
:
"9876543210"
,
"exchanges" : [ "NSE" , "BSE" , "NFO" ],
"products" : [ "CNC" , "MIS" , "NRML" ],
"order_types" : [ "MARKET" , "LIMIT" , "SL" , "SL-M" ]
}
"cash"
:
10000.0
},
"utilised"
: {
"debits"
:
0.0
} }
}
,
"holdings"
,
"quotes"
,
"historical_data"
]
}