zerodha-mcpserver
This is a Cloudflare Worker that serves as an MCP server for interacting with the Zerodha Kite Connect API, providing a comprehensive interface for trading and portfolio management.
Zerodha Kite Connect MCP Server
This is a Cloudflare Worker that serves as an MCP (Model Context Protocol) server for interacting with the Zerodha Kite Connect API. It provides a comprehensive interface for trading and portfolio management through Zerodha.
Features
- Zerodha authentication and session management
- Portfolio management (holdings, positions)
- GTT (Good Till Triggered) orders
- Historical data retrieval
- MCP-compatible responses for seamless integration with Claude Desktop and other MCP clients
Setup
Prerequisites
- Zerodha Kite Connect API credentials (API Key and Secret)
- Cloudflare account
Deployment
-
Clone this repository
-
Install dependencies:
npm install
-
Create your configuration file:
cp wrangler.jsonc.example wrangler.jsonc
-
Configure your Zerodha API credentials in the
wrangler.jsonc
file:- Update the
ZERODHA_API_KEY
andZERODHA_API_SECRET
values - Note: This file is gitignored to prevent committing sensitive information
- Update the
-
Create a KV namespace in Cloudflare:
wrangler kv:namespace create ZERODHA_KV
-
Update the
wrangler.jsonc
file with the KV namespace ID -
Add Node.js compatibility for crypto module:
{ "compatibility_date": "2023-05-18", "compatibility_flags": ["nodejs_compat"], ... }
-
Deploy the worker:
npx wrangler deploy
Available Methods
Authentication
getLoginUrl()
- Generates a Zerodha login URL using the configured API keyhandleRedirect(requestToken)
- Processes the request token after successful loginrdhandle(requestToken)
- Alternative endpoint for handling authentication redirects
Portfolio Management
getHoldings()
- Retrieves a list of equity holdings from ZerodhagetPositions()
- Retrieves current day and net positions
Orders
getGTTOrders()
- Retrieves Good Till Triggered orders
Market Data
getHistoricalData(instrumentToken, interval, from, to, continuous, oi)
- Retrieves historical candle data for a given instrument
Usage
With Claude Desktop or other MCP clients
Once deployed, you can add the worker as an MCP server in Claude Desktop:
- Go to Settings > MCP Servers
- Add a new server with your worker URL (e.g.,
https://zerodha-mcp.your-subdomain.workers.dev
) - Claude will automatically discover the available methods
With JavaScript
// Example of using the MCP worker in JavaScript
const loginUrl = await zerodhaWorker.getLoginUrl();
console.log('Please login at:', loginUrl);
// Authentication flow
window.location.href = loginUrl;
// After redirect back with request_token in URL...
const urlParams = new URLSearchParams(window.location.search);
const requestToken = urlParams.get('request_token');
// Get holdings after authentication
const holdingsResponse = await zerodhaWorker.getHoldings();
const holdings = JSON.parse(holdingsResponse.content[0].text);
console.log('Your holdings:', holdings);
// Get historical data
const historicalData = await zerodhaWorker.getHistoricalData(
'5633', // instrument_token (NSE:INFY)
'minute', // interval
'2023-01-01 09:15:00', // from
'2023-01-01 09:30:00', // to
false, // continuous
false // oi
);
console.log('Historical data:', JSON.parse(historicalData.content[0].text));
Extending Functionality
To add more Zerodha API functionality:
- Add new methods to the
ZerodhaWorker
class insrc/index.js
- Implement the desired Zerodha API calls using the Kite Connect API
- Format responses according to the MCP specification (using the content array format)
- Update the docs.json file to document the new methods
- Deploy the updated worker
Response Format
All methods return responses in the MCP-compatible format:
{
"content": [
{
"type": "text",
"text": "{ ... data as JSON string ... }"
}
]
}
Authentication Flow
- User visits the login URL generated by
getLoginUrl()
- After successful login, Zerodha redirects to the callback URL with a request token
- The
/callback
or/rdhandle
endpoint processes the request token - The access token is obtained and stored in the KV namespace
- Subsequent API calls use the stored access token
Security
- API keys and secrets are stored securely in Cloudflare environment variables
- Access tokens are stored in Cloudflare KV namespace
- The wrangler.jsonc file containing credentials is gitignored to prevent accidental exposure
- Only essential endpoints are exposed, minimizing attack surface
Development
To run the worker locally:
npx wrangler dev
To test the worker:
npx wrangler dev --test
API Documentation
For more information about the Zerodha Kite Connect API, refer to the official documentation:
- Kite Connect API Documentation
- Kite Connect API - Authentication
- Kite Connect API - Portfolio
- Kite Connect API - GTT Orders
- Kite Connect API - Historical Data
MCP Documentation
For more information about the Model Context Protocol (MCP), refer to:
License
MIT
Related MCP Servers
View all finance servers →mcp-server
by financial-datasets
This is a Model Context Protocol (MCP) server that provides access to stock market data from Financial Datasets.
razorpay-mcp-server
by razorpay
The Razorpay MCP Server is a Model Context Protocol server that integrates with Razorpay APIs for advanced payment processing.
evm-mcp-server
by mcpdotdirect
A comprehensive Model Context Protocol (MCP) server that provides blockchain services across multiple EVM-compatible networks.
investor-agent
by ferdousbhai
The investor-agent is a Model Context Protocol server designed to provide comprehensive financial insights and analysis to Large Language Models.
mcp-cn-a-stock
by elsejj
This is an MCP (Model Content Protocol) service providing A-share data for large models.
mcp-trader
by wshobson
A Model Context Protocol (MCP) server designed for stock traders, offering a suite of tools for technical analysis and trading.
bsc-mcp
by TermiX-official
BNBChain MCP is a tool server designed for interacting with the Binance Smart Chain, enabling token transfers, smart contract interactions, and more, tailored for developers and AI agents.