Skip to main content
Glama

Zerodha Trading Bot - MCP Server

by ssonthal
README.md4.94 kB
# Zerodha Trading Bot - MCP Server A Model Context Protocol (MCP) server that integrates with Zerodha APIs for automated trading. This server provides tools for authentication, market data retrieval, order placement, and portfolio management. ## Features - **OAuth Authentication**: Secure authentication with Zerodha APIs - **Market Data**: Real-time quotes and instrument information - **Trading Operations**: Place, modify, and cancel orders - **Portfolio Management**: View holdings, positions, and margins - **MCP Integration**: Full Model Context Protocol compliance ## Prerequisites - Node.js 18+ - Zerodha API credentials (API Key and Secret) - Zerodha trading account ## Setup ### 1. Install Dependencies ```bash npm install ``` ### 2. Configure Environment Variables Copy the example environment file and configure your Zerodha credentials: ```bash cp env.example .env ``` Edit `.env` with your Zerodha API credentials: ```env # Zerodha API Configuration ZERODHA_API_KEY=your_api_key_here ZERODHA_API_SECRET=your_api_secret_here ZERODHA_REDIRECT_URI=http://localhost:3000/callback ZERODHA_BASE_URL=https://api.kite.trade # MCP Server Configuration MCP_SERVER_PORT=3001 MCP_SERVER_HOST=localhost # Trading Configuration DEFAULT_QUANTITY=1 DEFAULT_ORDER_TYPE=MIS DEFAULT_PRODUCT_TYPE=INTRADAY ``` ### 3. Get Zerodha API Credentials 1. Log in to your Zerodha account 2. Go to [API Console](https://developers.kite.trade/) 3. Create a new application 4. Note down your API Key and Secret 5. Set the redirect URI to `http://localhost:3000/callback` ### 4. Authentication Start the authentication server: ```bash node src/auth-server.js ``` Visit `http://localhost:3000` and follow the OAuth flow. After successful authentication, you'll receive an access token. Add it to your `.env` file: ```env ZERODHA_ACCESS_TOKEN=your_access_token_here ``` ## Usage ### Start the MCP Server ```bash npm start ``` ### Test the Setup ```bash npm test ``` ## Available Tools The MCP server provides the following tools: ### Authentication - `get_login_url`: Get OAuth login URL - `authenticate`: Authenticate with request token - `validate_token`: Check if access token is valid ### Market Data - `get_quote`: Get live quotes for symbols - `get_instruments`: Get instrument information ### Portfolio - `get_user_profile`: Get user profile - `get_holdings`: Get current holdings - `get_positions`: Get current positions - `get_margins`: Get margin information ### Trading - `place_order`: Place trading orders - `get_order_history`: Get order history - `cancel_order`: Cancel existing orders ## Example Usage ### Place a Market Order ```javascript // Example order parameters const orderParams = { tradingsymbol: "RELIANCE", exchange: "NSE", transaction_type: "BUY", quantity: 1, product: "MIS", order_type: "MARKET" }; ``` ### Get Live Quotes ```javascript // Get quotes for multiple symbols const symbols = "NSE:RELIANCE,NSE:TCS,NSE:INFY"; const quotes = await zerodhaClient.getQuote(symbols); ``` ## File Structure ``` ZerodhaTradingBot/ ├── src/ │ ├── server.js # Main server entry point │ ├── mcp-server.js # MCP server implementation │ ├── zerodha-client.js # Zerodha API client │ └── auth-server.js # OAuth authentication server ├── test/ │ └── test.js # Test suite ├── package.json ├── env.example └── README.md ``` ## Security Considerations - Never commit your `.env` file to version control - Keep your API credentials secure - Use environment variables for sensitive data - Regularly rotate your access tokens ## Error Handling The server includes comprehensive error handling for: - Network connectivity issues - Invalid API credentials - Expired access tokens - Invalid order parameters - Rate limiting ## Development ### Running in Development Mode ```bash npm run dev ``` ### Adding New Tools To add new trading tools: 1. Add the method to `ZerodhaClient` class in `src/zerodha-client.js` 2. Add the tool handler in `src/mcp-server.js` 3. Update the tool definitions in the `tools/list` handler ## Troubleshooting ### Common Issues 1. **Authentication Failed**: Check your API credentials and redirect URI 2. **Token Expired**: Re-authenticate using the auth server 3. **Order Rejected**: Verify order parameters and account balance 4. **Network Errors**: Check internet connectivity and API endpoints ### Debug Mode Enable debug logging by setting: ```env DEBUG=true ``` ## License MIT License - see LICENSE file for details. ## Support For issues and questions: 1. Check the troubleshooting section 2. Review Zerodha API documentation 3. Open an issue on the repository ## Disclaimer This software is for educational and development purposes. Use at your own risk. Always test thoroughly in a paper trading environment before using with real money.

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/ssonthal/ZerodhaTradingBot-MCPServer'

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