Skip to main content
Glama

Zerodha Trading MCP

trade.ts2.66 kB
import { KiteConnect } from "kiteconnect"; import * as dotenv from 'dotenv'; // Load environment variables dotenv.config(); const apiKey = process.env.KITE_API_KEY; const apiSecret = process.env.KITE_SECRET_KEY; const requestToken = process.env.REQUEST_TOKEN; let accessToken = process.env.ACCESS_TOKEN; if (!apiKey || !apiSecret || !requestToken || !accessToken) { throw new Error('Missing required environment variables. Please check your .env file.'); } const kc = new KiteConnect({ api_key: apiKey as string }); // console.log("login url : ", kc.getLoginURL()); kc.setAccessToken(accessToken as string); export async function kiteLogin() { const response = await kc.generateSession(requestToken as string, apiSecret as string); console.log("Session generated:", response); kc.setAccessToken(response.access_token); accessToken = response.access_token; // console.log("access_token : ", response.access_token); } export async function getProfile() { try { const profile = await kc.getProfile(); let str = `name : ${profile.user_name}, email : ${profile.email}, mobile : ${profile.user_shortname}, demat_email : ${profile.meta.demat_consent}, demat_mobile : ${profile.meta.demat_consent}, demat_name : ${profile.meta.demat_consent}` return str; } catch (err) { console.error("Error getting profile:", err); } } // place order on zerodha exchange export async function placeOrder(symbol: string, quantity: number, type: "BUY" | "SELL") { try { await kc.placeOrder( kc.VARIETY_REGULAR, { exchange: kc.EXCHANGE_NSE, tradingsymbol: symbol, transaction_type: type, quantity: quantity, product: kc.PRODUCT_CNC, order_type: kc.ORDER_TYPE_MARKET, tag: "test", }); } catch (err) { console.error(err); } } // get the holdings on zerodha exchange export async function getHoldings() { const holdings = await kc.getHoldings(); let allHoldings= "" holdings.map(holding => { allHoldings += `stock : ${holding.tradingsymbol}, quantity : ${holding.quantity}, average_price : ${holding.average_price}, last_price : ${holding.last_price}, pnl : ${holding.pnl}\n` }) return allHoldings; } // get the Positions on zerodha exchange export async function getPositions() { const positions = await kc.getPositions(); let allPositions= "" positions.day.map(position => { allPositions += `stock : ${position.tradingsymbol}, quantity : ${position.quantity}, average_price : ${position.average_price}, last_price : ${position.last_price}, pnl : ${position.pnl}\n` }) return allPositions; }

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/shubhamprajapati7748/zerodha-trade-mcp'

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