mewcp-kite
MCP KITE SERVER
Documentation
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
Tools
kite_place_order — Place an order on Zerodha Kite
Place 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 trackingOutput:
{
"success": true,
"order_id": "230914000012345",
"status": "placed",
"message": "Order placed successfully. Order ID: 230914000012345"
}kite_get_orders — Get all orders for the user
Returns all orders for the session including status, quantity, price, and timestamps.
Inputs:
(none)Output:
{
"success": true,
"count": 2,
"orders": [
{
"order_id": "230914000012345",
"tradingsymbol": "INFY",
"status": "COMPLETE",
"transaction_type": "BUY",
"quantity": 10,
"filled_quantity": 10,
"average_price": 1452.5,
"order_timestamp": "2023-09-14 10:32:00"
}
]
}kite_cancel_order — Cancel an existing order
Cancel 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 positions
Returns day and net positions with P&L, buy/sell prices, and M2M values.
Inputs:
(none)Output:
{
"success": true,
"day_positions": [
{ "tradingsymbol": "INFY", "quantity": 10, "pnl": 250.0, "buy_price": 1450.0, "sell_price": 0.0 }
],
"net_positions": [
{ "tradingsymbol": "INFY", "quantity": 10, "pnl": 250.0, "unrealised": 250.0, "m2m": 250.0 }
]
}kite_get_holdings — Get delivery portfolio holdings
Returns all long-term holdings with average price, last price, and P&L.
Inputs:
(none)Output:
{
"success": true,
"count": 3,
"holdings": [
{
"tradingsymbol": "RELIANCE",
"quantity": 5,
"average_price": 2400.0,
"last_price": 2520.0,
"pnl": 600.0,
"day_change_percentage": 0.85
}
]
}kite_get_quote — Get real-time market quotes
Fetch 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": 1234567,
"change": 12.5,
"upper_circuit": 1597.75,
"lower_circuit": 1307.25,
"timestamp": "2023-09-14 15:29:59"
}
}
}kite_get_historical_data — Get historical candlestick data
Fetch 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, 5minute, 15minute, 30minute, 60minute (default: day)Output:
{
"success": true,
"count": 5,
"interval": "day",
"data": [
{ "date": "2023-09-14", "open": 1440.0, "high": 1460.0, "low": 1435.0, "close": 1452.5, "volume": 1234567 }
]
}kite_get_instruments — Get tradable instrument list
Returns 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": "NSE",
"instruments": [
{ "tradingsymbol": "INFY", "instrument_token": "408065", "exchange": "NSE", "segment": "NSE", "name": "INFOSYS" }
]
}kite_get_profile — Get user profile
Returns the authenticated user's profile including name, email, phone, and enabled exchanges and products.
Inputs:
(none)Output:
{
"success": true,
"user_id": "AB1234",
"user_name": "John Doe",
"user_type": "individual",
"email": "john@example.com",
"phone": "9876543210",
"exchanges": ["NSE", "BSE", "NFO"],
"products": ["CNC", "MIS", "NRML"],
"order_types": ["MARKET", "LIMIT", "SL", "SL-M"]
}kite_get_margins — Get account margins
Returns available, utilized, and total margins for equity and commodity segments.
Inputs:
(none)Output:
{
"success": true,
"equity": { "available": { "cash": 50000.0 }, "utilised": { "debits": 12000.0 } },
"commodity": { "available": { "cash": 10000.0 }, "utilised": { "debits": 0.0 } }
}kite_health_check — Check server readiness
Returns server status and supported capability list. Does not require credentials.
Inputs:
(none)Output:
{
"status": "ok",
"server": "CL Kite Connect MCP Server",
"type": "third-party-integration",
"auth_required": true,
"supports": ["orders", "positions", "holdings", "quotes", "historical_data"]
}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:INFYGetting Your Kite Connect Credentials
Steps
1. Go to Kite Connect Developer Console
2. Create an app to get your API Key and API Secret
3. Complete the login flow to obtain an Access Token (valid for one trading day)
4. 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:
1. Verify `Authorization: Bearer YOUR_API_KEY` and `X-Mewcp-Credential-Id: CREDENTIAL-ID` headers are present
2. Check that the credential is active in your MewCP account
Insufficient Credits
- Cause: API calls have exceeded your request limits
- Solution:
1. Check credit usage in your Curious Layer dashboard
2. Upgrade to a paid plan or add credits for higher limits
3. Contact support for credit adjustments
Credential Not Connected
- Cause: No Kite Connect credential linked to your account
- Solution:
1. Go to Credentials in your MewCP dashboard
2. Add your Kite Connect `api_key` and `access_token` as a static credential
3. Retry the request with the correct `X-Mewcp-Credential-Id` header
Malformed Request Payload
- Cause: JSON payload is invalid or missing required fields
- Solution:
1. Validate JSON syntax before sending
2. Ensure all required tool parameters are included
3. Check parameter types match expected values
Server Not Found
- Cause: Incorrect server name in the API endpoint
- Solution:
1. Verify endpoint format: `{server-name}/mcp/{tool-name}`
2. Use correct server name from documentation
3. Check available servers in your Curious Layer account
Kite Connect API Error
- Cause: Upstream Kite Connect API returned an error
- Solution:
1. Check Kite Connect service status at Kite Status Page
2. Verify your access token is valid and not expired (tokens expire at end of trading day)
3. Review the error message for specific details
Resources
- **Kite Connect API Documentation** — Official API reference
- **Kite Connect API Reference** — Complete endpoint reference
- **FastMCP Docs** — FastMCP specification
- **FastMCP Credentials** — FastMCP Credentials package for credential handling
Frequently asked questions
What is mewcp-kite?
mewcp-kite is MCP KITE SERVER
How do I install mewcp-kite?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is mewcp-kite open source?
Yes — it is hosted on GitHub at https://github.com/AStheTECH/mewcp-kite.
Related MCP tools
Cognee is the open-source AI memory platform for agents. Give your AI agents persistent long-term memory across sessions with a self-hosted knowledge graph engine.
Automate browser based workflows with AI
Hindsight: Agent Memory That Learns
A privacy-first app that strips AI watermarks from content you own.
Agent framework and applications built upon Qwen>=3.0, featuring Function Calling, MCP, Code Interpreter, RAG, Chrome extension, etc.
The power of Claude Code / GeminiCLI / CodexCLI + [Gemini / OpenAI / OpenRouter / Azure / Grok / Ollama / Custom Model / All Of The Above] working as one.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP