# Kite MCP Server A Model Context Protocol (MCP) server for integrating with Zerodha Kite API. This server provides Claude with tools to interact with your Kite trading account. ## Features - **Portfolio Management**: Get positions, holdings, and orders - **Market Data**: Real-time quotes, LTP, and instrument data - **Order Management**: Place, modify, and cancel orders - **Account Info**: Profile, margins, and authentication status - **Secure Authentication**: OAuth 2.0 flow with token persistence ## Prerequisites 1. **Zerodha Kite Connect App**: Create an app at [Kite Connect](https://kite.trade/) 2. **API Credentials**: Get your API Key and Secret 3. **Bun**: Latest version of Bun runtime ## Installation 1. Clone and install dependencies: ```bash bun install ``` 2. Set up environment variables: ```bash # Edit .env with your API credentials ``` 3. Configure your Kite Connect app with redirect URL: ``` http://localhost:50000/zerodha/auth/redirect ``` ## Quick Start ### 1. Authenticate with Kite API ```bash bun run auth ``` This will: - Start a local OAuth server - Open your browser to Kite login - Save your access token securely ### 2. Start the MCP Server ```bash bun start ``` ### 3. Configure Claude Desktop Add to your Claude Desktop configuration: ```json { "mcpServers": { "kite": { "command": "bun", "args": ["run", "/path/to/kite-mcp/src/index.ts"] } } } ``` ## Available Tools ### Portfolio Tools - `get_profile` - Get user profile information - `get_positions` - Get current trading positions - `get_holdings` - Get long-term holdings - `get_margins` - Get account margins and funds ### Order Tools - `get_orders` - Get today's orders - `place_order` - Place a new trading order - `cancel_order` - Cancel an existing order ### Market Data Tools - `get_ltp` - Get Last Traded Price for instruments - `get_quote` - Get detailed market quotes - `get_instruments` - Get tradable instruments list ### Utility Tools - `get_auth_status` - Check authentication status ## Project Structure ``` src/ ├── config/ │ └── environment.ts # Configuration management ├── auth/ │ ├── token-manager.ts # Token storage and validation │ └── oauth-server.ts # OAuth flow handling ├── api/ │ └── kite-client.ts # Kite API wrapper ├── mcp/ │ ├── server.ts # MCP server implementation │ └── tools/ │ └── index.ts # MCP tools definitions ├── auth.ts # Authentication entry point └── index.ts # MCP server entry point ``` ## Development ### Build (Optional) ```bash bun run build ``` ### Development Mode ```bash bun run dev # Watch mode for MCP server bun run dev:auth # Watch mode for auth server ``` ### Architecture The project follows the Single Responsibility Principle: - **ConfigManager**: Environment and configuration handling - **TokenManager**: Token persistence and validation - **OAuthServer**: OAuth 2.0 authentication flow - **KiteClient**: Kite API wrapper with error handling - **KiteMCPServer**: MCP protocol implementation - **Tools**: Individual MCP tool implementations ## Environment Variables ```bash API_KEY=your_kite_api_key # Required: Kite Connect API Key API_SECRET=your_kite_api_secret # Required: Kite Connect API Secret OAUTH_PORT=50000 # Optional: OAuth server port (default: 50000) ``` ## Security - Tokens are stored locally in `access_token.json` - OAuth flow uses secure redirect handling - API credentials are never logged or exposed - Tokens auto-expire for security ## Troubleshooting ### Authentication Issues 1. Verify API credentials in `.env` 2. Check redirect URL in Kite Connect app settings 3. Ensure OAuth port (50000) is available ### Token Expiry - Kite tokens expire every ~6 hours - Re-run `bun run auth` when expired - Server will notify you of authentication status ### MCP Connection Issues 1. Verify Claude Desktop configuration 2. Check server is running: `bun start` 3. Look for errors in Claude Desktop logs ## Contributing 1. Fork the repository 2. Create a feature branch 3. Follow the existing code structure and patterns 4. Add appropriate error handling 5. Submit a pull request ## License MIT License - see LICENSE file for details ## Disclaimer This is an unofficial integration with Zerodha Kite API. Use at your own risk. Always verify trades and orders before execution.