Skip to main content
Glama
SamarJyoti496

Trade-MCP

README.md
# Trade-MCP

A modular trading automation project using Zerodha Kite Connect and MCP (Modular Command Platform) for tool-based and resource-based automation. This project exposes trading actions (like placing orders and fetching holdings) as MCP tools, making them accessible to Claude Desktop and other MCP-compatible clients.

---

## Features

- **Zerodha Integration:** Place buy/sell orders and fetch holdings using the Kite Connect API.
- **MCP Tools:** Expose trading actions as callable tools for automation and AI agents.
- **Environment-based Secrets:** API keys and secrets are loaded from a `.env` file for security.
- **Extensible:** Easily add new tools or resources for more trading actions.

---

## Setup

### 1. Clone the Repository

```sh
git clone <your-repo-url>
cd Trade-MCP
```

### 2. Create and Activate a Virtual Environment

```sh
uv venv
.venv\Scripts\activate  # On Windows
# or
source .venv/bin/activate  # On Linux/Mac
```

### 3. Install Dependencies

```sh
uv pip install -r requirements.txt
# or, if using pyproject.toml:
uv pip install .
```

### 4. Configure Environment Variables

Create a `.env` file in the project root:

```
API_KEY=your_zerodha_api_key
API_SECRET=your_zerodha_api_secret
```

### 5. Get Your Zerodha Access Token

To use the Zerodha API, you need an **access token**. Follow these steps:

1. **Get Your API Key and Secret**

   - Obtain these from the [Zerodha developer console](https://developers.kite.trade/apps).

2. **Generate the Login URL**  
   In a Python shell or script, run:

   ```python
   from kiteconnect import KiteConnect
   kite = KiteConnect(api_key="your_api_key")
   print(kite.login_url())
   ```

   - Open the printed URL in your browser and log in with your Zerodha credentials.

3. **Extract the `request_token`**

   - After login, you will be redirected to your redirect URL (set in the Zerodha app settings).
   - The URL will look like:  
     `http://localhost:8000/?request_token=REQUEST_TOKEN_HERE&action=login&status=success`
   - Copy the `request_token` value from the URL.

4. **Exchange the `request_token` for an `access_token`**  
   In a Python shell or script, run:

   ```python
   data = kite.generate_session("REQUEST_TOKEN_HERE", api_secret="your_api_secret")
   print(data["access_token"])
   ```

   - Replace `"REQUEST_TOKEN_HERE"` and `"your_api_secret"` with your actual values.
   - The printed value is your `access_token`.

5. **Set the Access Token**
   - You can set this as an environment variable or use it directly in your code as needed.

---

## Usage

### Run the MCP Server

```sh
uv run --with mcp[cli] mcp run server.py
```

Or, if MCP CLI is installed in your environment:

```sh
mcp run server.py
```

### Claude Desktop Integration

1. Add a server entry in your `claude_desktop_config.json`:

   ```json
   {
     "mcpServers": {
       "Trade-MCP": {
         "command": "uv.EXE", # Exact Path to uv executable
         "args": [
           "run",
           "--with",
           "mcp[cli]",
           "mcp",
           "run",
           "server.py" # Exact Path to your server script
         ]
       }
     }
   }
   ```

2. Restart Claude Desktop.

3. The tools will appear in Claude's tool list.

---

## Exposed Tools

- `add(a: int, b: int)`: Add two numbers.
- `place_zerodha_buy_order(symbol: str, quantity: int)`: Place a buy order.
- `place_zerodha_sell_order(symbol: str, quantity: int)`: Place a sell order.
- `get_zerodha_holdings()`: Get all holdings from Zerodha.

---

## Extending

To add a new tool, define a function in `server.py` and decorate it with `@mcp.tool()`:

```python
@mcp.tool()
def my_tool(...):
    ...
```

---

## License

MIT License

---