Zerodha MCP Server & Client について
MCP サーバーを経由して Zerodha 口座を操作する Python 製のトレードアシスタントです。注文、ポジション、証拠金を自然言語で管理できます。Agno と Google ADK のエージェントクライアントに加え、コマンドラインと Gradio の Web インターフェースを備えています。
主な機能
- 01注文の発注、変更、取消、照会
- 02保有銘柄、ポジション、証拠金の照会
- 03Agno エージェントクライアント
- 04Google ADK エージェントクライアント
- 05Gradio による Web チャットインターフェース
活用シーン
- 01自然言語による Zerodha 口座の保有状況と証拠金の確認
- 02チャット画面からの株式注文の発注や取消
- 03Agno と Google ADK のクライアント実装の比較
MCP 対応
MCP サーバーと MCP クライアントの両方を含みます。サーバーは Zerodha API の操作をツールとして公開し、クライアントは SSE または stdio で接続してそれらのツールを呼び出します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Zerodha MCP サーバー&クライアント
Zerodha MCP サーバーに接続し、ユーザーによる取引口座の管理を支援する Python ベースの取引アシスタントです。
機能
- 口座管理:Zerodha の取引口座、注文、ポジションを管理します
- 対話型チャットインターフェース:取引操作に対応する自然言語インターフェースです
- MCP 統合:標準化された通信を実現する Model Context Protocol を基盤としています
- Zerodha API 統合:Zerodha の API を使用して取引プラットフォームと連携します
- Agno エージェント:Agno Agent を使用して取引プラットフォームと連携します
- Google ADK エージェント:Google ADK Agent を使用して取引プラットフォームと連携します
技術スタック
- プロトコル:Model Context Protocol (MCP)
- エージェントフレームワーク:
ツール
- 注文の発注:取引プラットフォームで注文を発注します
- 注文の変更:取引プラットフォームで注文を変更します
- 注文のキャンセル:取引プラットフォームで注文をキャンセルします
- 注文の取得:取引プラットフォームの注文を取得します
- 注文履歴の取得:取引プラットフォームの注文履歴を取得します
- 注文約定の取得:取引プラットフォームの注文約定を取得します
- 証拠金の取得:取引プラットフォームの証拠金を取得します
- 保有資産の取得:取引プラットフォームの保有資産を取得します
- ポジションの取得:取引プラットフォームのポジションを取得します
- ユーザープロフィールの取得:取引プラットフォームのユーザープロフィールを取得します
前提条件
- Python
- こちらから取得した Personal API アクセス権を持つ Zerodha 取引口座
- Zerodha API キーとシークレット
- OpenAI API キー(Agno エージェント用)
- Gemini API キーまたは Application Default Credentials(Google ADK エージェント用)
インストール
- リポジトリをクローンします:
git clone https://github.com/mtwn105/zerodha-mcp-server-client.git
cd zerodha-mcp-server-client
- 仮想環境を作成して有効化します:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- 依存関係をインストールします:
pip install -r requirements.txt
- 環境変数を設定します:
# Copy the example environment file
cp .env.example .env
# Edit the .env file with your credentials
- 設定を記述した
.envファイルを作成します:
# Server Configuration
ZERODHA_API_KEY=your_api_key
ZERODHA_API_SECRET=your_api_secret
PORT=8001
SERVER_MODE=sse # or stdio
# Client Configuration
MCP_HOST=localhost
MCP_PORT=8001
OPENAI_API_KEY=your_openai_api_key
# GOOGLE_API_KEY=your_google_api_key
サーバーの使用方法
サーバーは、Zerodha 取引プラットフォームと連携するためのツールを提供します。サーバーを起動するには:
-
.envファイルに Zerodha API 認証情報が正しく設定されていることを確認します。 -
次のいずれかの方法でサーバーを起動します:
# Using environment variables
python server.py
# Or using command line arguments
python server.py --api-key your_api_key --api-secret your_api_secret --port 8001 --mode sse
サーバーは次のツールを提供します:
get_login_url:ユーザー認証用のログイン URL を取得しますget_access_token:リクエストトークンを使用してアクセストークンを生成しますget_user_profile:ユーザーの Zerodha プロフィール情報を取得しますget_margins:利用可能な証拠金と資金の詳細を取得しますget_holdings:ポートフォリオの保有資産を取得しますget_positions:現在のポジションを取得しますget_orders:当日のすべての注文を取得しますget_order_history:特定の注文の履歴を取得しますget_order_trades:注文によって生成された約定を取得しますplace_order:新しい注文を発注しますmodify_order:既存の注文を変更しますcancel_order:注文をキャンセルします
クライアントの使用方法
このプロジェクトでは、3 種類のクライアント実装を提供しています:
- Agno フレームワークを使用するクライアント(
client/agno_client.py) - Gradio ウェブインターフェース付きの Agno クライアント(
client/agno_gradio_client.py) - Google ADK を使用するクライアント(
client/google_adk_client.py)
すべてのクライアントは MCP サーバーに接続し、取引操作用の対話型インターフェースを提供します。
Agno クライアントの実行
.envにOPENAI_API_KEYが含まれていることを確認します。- 次のいずれかの方法でクライアントを起動します:
# Using environment variables from .env file
python client/agno_client.py
# Using command line arguments
python client/agno_client.py --host localhost --port 8001
# Using a combination (command line arguments take precedence)
MCP_HOST=localhost MCP_PORT=8001 python client/agno_client.py --host otherhost --port 9000
Google ADK クライアントの実行
GOOGLE_API_KEY環境変数を設定する(および.env内でコメントを解除する)か、Application Default Credentials を使用して(gcloud auth application-default loginを実行して)、Google AI への認証を済ませてください。- 次のいずれかの方法でクライアントを起動します:
# Using environment variables from .env file
python client/google_adk_client.py
# Using command line arguments
python client/google_adk_client.py --host localhost --port 8001
# Using a combination (command line arguments take precedence)
MCP_HOST=localhost MCP_PORT=8001 python client/google_adk_client.py --host otherhost --port 9000
Gradio Web インターフェースの実行
.envファイルにOPENAI_API_KEYが含まれていることを確認します。- Gradio Web インターフェースを起動します。
# Using environment variables from .env file
python client/agno_gradio_client.py
# Using command line arguments for server configuration
python client/agno_gradio_client.py --host localhost --port 8001
-
Web ブラウザーを開き、ターミナルに表示された URL(通常は
http://localhost:7860)にアクセスします。 -
Web インターフェースを使用して、次の操作を行います。
- ホストとポートを入力して MCP サーバーに接続する
- 自然言語を使って AI アシスタントとチャットする
- 使いやすいインターフェースから Zerodha アカウントを管理する
Gradio インターフェースでは、次の機能を利用できます。
- ホスト/ポート設定による簡単な接続管理
- AI アシスタントとのリアルタイムチャットインターフェース
- 接続状態の視覚的なフィードバック
- モバイル端末に対応したレスポンシブデザイン
クライアント設定
どちらのクライアントも複数の設定ソースに対応しており、優先順位は次のとおりです。
- コマンドライン引数(最優先)
- 環境変数
.envファイルの変数
設定オプション:
- 環境変数:
MCP_HOSTとMCP_PORT - コマンドライン引数:
--hostと--port .envファイルの変数:MCP_HOST、MCP_PORT、OPENAI_API_KEY、GOOGLE_API_KEY
設定が指定されていない場合のデフォルト値:
- ホスト:localhost
- ポート:8001
クライアントは、プロジェクトのルートディレクトリにある .env ファイルから環境変数を自動的に読み込みます。.env ファイルに必要な設定が含まれていることを確認してください。
# Client Configuration
MCP_HOST=localhost
MCP_PORT=8001
OPENAI_API_KEY=your_openai_api_key
# GOOGLE_API_KEY=your_google_api_key
-
クライアントは、指定された設定を使用して MCP サーバーに自動的に接続します。
-
接続したら、自然言語のコマンドを使ってアシスタントとやり取りできます。例:
- 「ポートフォリオの保有銘柄を表示して」
- 「現在のポジションを教えて」
- 「RELIANCE を 10 株、成行注文で購入して」
- 「注文 ID 123456 をキャンセルして」
-
クライアントを終了するには、プロンプトが表示されたときに「quit」と入力します。
開発
プロジェクト構成
client/agno_client.py:Agno を使用した MCP クライアントの実装client/google_adk_client.py:Google ADK を使用した MCP クライアントの実装client/agno_gradio_client.py:Gradio と Agno を使用した Web インターフェースserver.py:Zerodha API 統合を備えた MCP サーバーの実装generate_token.py:アクセストークンを生成するユーティリティrequirements.txt:プロジェクトの依存関係.env:環境設定
貢献
- リポジトリをフォークします
- フィーチャーブランチを作成します
- 変更をコミットします
- ブランチにプッシュします
- プルリクエストを作成します
ライセンス
このプロジェクトは Apache License 2.0 の下でライセンスされています。詳細については LICENSE ファイルを参照してください。
謝辞
- Agno を使用して構築されています
- Google ADK を使用して構築されています
- 標準化された通信に MCP を使用しています
- Zerodha API 統合に KiteConnect を使用しています
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。