MCP Upstox Trading Server について
MCP Upstox Trading Serverは、Upstoxを利用するトレーダー向けのNode.jsアプリケーションです。過去の価格からサポート・レジスタンス水準を算出し、自動戦略で取引を実行します。複数銘柄の計算や発注用のエンドポイントも備えています。
主な機能
- 01接続数に基づくサポート・レジスタンス水準の特定
- 02複数銘柄のMCP値の計算
- 03Upstox経由の取引実行
- 04自動MCP戦略の実行
- 05認証トークンの保存と更新
活用シーン
- 01過去の市場データからピボット水準を計算
- 02複数銘柄のMCP水準を比較
- 03Upstox経由で注文を実行
- 04価格水準に基づく自動戦略の実行
MCP 対応
READMEには市場データ分析、MCP計算、取引、戦略実行のHTTPエンドポイントが記載されていますが、MCPプロトコルのインターフェースについては説明されていません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Upstox Trading Server
プロジェクト概要
Most Connected Pivot(MCP)Upstox Trading Server は、市場における高確率のサポートラインとレジスタンスラインを特定し、それらに基づいて取引を行う自動取引アプリケーションです。このシステムは過去の価格データを分析して、価格が繰り返し特定の水準に反応したピボットポイントを特定し、現在の価格がこれらの重要な水準に近づいたときに取引を実行します。
MCP(Most Connected Pivot)とは?
MCP は、過去に重要なサポートまたはレジスタンスとして機能した価格水準を特定するテクニカル分析の概念です。該当する水準は、次の特徴を持つポイントです。
- 価格が平均値を複数回横切っている(ピボット)
- 複数の価格ポイントが特定の水準付近に集まっている(接続)
- 最も多くの接続がある水準が MCP となり、高確率の反転ゾーンになる
この戦略では、過去にサポート/レジスタンスとして複数回機能した水準は、価格が再び反応する可能性が高く、トレーダーに統計的な優位性をもたらすと想定しています。
前提条件
- Node.js(v14 以降)
- NPM(Node Package Manager)
- API アクセス権を持つ Upstox 開発者アカウント
- JavaScript と取引の基本的な知識
インストール手順
-
プロジェクトディレクトリを作成する
mkdir mcp-upstox-server cd mcp-upstox-server -
プロジェクトを初期化する
npm init -y -
必要な依存関係をインストールする
npm install express axios cors dotenv upstox-js-sdk -
サーバーファイルを作成する
- 提供されたサーバーコードを
server.jsという名前のファイルにコピーします - 指定された設定を記述した
.envファイルを作成します
- 提供されたサーバーコードを
-
Upstox API の認証情報を取得する
- Upstox 開発者アカウントにログインします
- API キーとシークレットを取得するため、新しいアプリケーションを作成します
- リダイレクト URI を
http://localhost:3000/callbackまたはカスタムドメインに設定します - 認証情報を
.envファイルに設定します
環境の設定
開発環境
次の設定を記述した .env.development ファイルを作成します。
PORT=3000
UPSTOX_API_KEY=your_development_api_key
UPSTOX_API_SECRET=your_development_api_secret
REDIRECT_URI=http://localhost:3000/callback
NODE_ENV=development
開発モードで実行するには、次のコマンドを使用します。
NODE_ENV=development node server.js
テスト環境
.env.test ファイルを作成します。
PORT=3001
UPSTOX_API_KEY=your_test_api_key
UPSTOX_API_SECRET=your_test_api_secret
REDIRECT_URI=http://localhost:3001/callback
NODE_ENV=test
テストモードで実行するには、次のコマンドを使用します。
NODE_ENV=test node server.js
本番環境
.env.production ファイルを作成します。
PORT=8080
UPSTOX_API_KEY=your_production_api_key
UPSTOX_API_SECRET=your_production_api_secret
REDIRECT_URI=https://your-domain.com/callback
NODE_ENV=production
本番モードで実行するには、次のコマンドを使用します。
NODE_ENV=production node server.js
デプロイ方法
ローカルへのデプロイ
個人利用または開発で使用する場合:
node server.js
クラウドへのデプロイ
Heroku
-
Procfile を作成します。
web: node server.js -
Heroku ダッシュボードで環境変数を設定します
-
デプロイします。
git push heroku main
AWS EC2
- EC2 インスタンスをセットアップします
- Node.js と npm をインストールします
- リポジトリをクローンします
- 環境変数を設定します
- PM2 を使用して Node プロセスを管理します。
npm install -g pm2 pm2 start server.js
Docker へのデプロイ
Dockerfile を作成します。
FROM node:16
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD ["node", "server.js"]
ビルドして実行します。
docker build -t mcp-upstox-server .
docker run -p 8080:8080 -d mcp-upstox-server
サーバーの実行
-
サーバーを起動する
node server.js -
Upstox で認証する
- ブラウザーを開き、
http://localhost:3000/authにアクセスします - Upstox のログインページにリダイレクトされます
- ログインしてアプリケーションを認可すると、サーバーにリダイレクトされます
- 認証が成功したことを示すメッセージが表示されます
- トークンは安全に保存され、必要に応じて自動的に更新されます
- ブラウザーを開き、
認証機能の改善
サーバーには、次の認証機能の改善が含まれています。
-
トークンの永続化
- アクセストークンとリフレッシュトークンはローカルファイル(
token.json)に安全に保存されます - サーバーの起動時にトークンが読み込まれるため、再認証する必要がありません
- アクセストークンとリフレッシュトークンはローカルファイル(
-
トークンの自動更新
- トークンの有効期限が近づいていることをシステムが自動的に検出します
- 有効期限の5分前に、バックグラウンドでトークンが更新されます
- すべての API 呼び出しで、トークンが有効であることを保証するミドルウェアが使用されます
-
ログアウト機能
- 新しい
/logoutエンドポイントを使用すると、ユーザーは完全にサインアウトできます - メモリとディスクに保存されているすべてのトークンが消去されます
- 新しい
Upstox SDK の統合
サーバーでは公式の Upstox JavaScript SDK を使用するようになりました。これにより、以下が可能になります。
-
API 呼び出しの簡素化
- 一貫したインターフェースを通じて、すべての Upstox API エンドポイントに直接アクセスできます
- API リクエストの型チェックとエラー処理が向上します
-
リクエスト形式の自動設定
- SDK がすべての API リクエストを適切な形式に設定します
- Upstox API の要件に準拠できます
-
メンテナンスの簡素化
- API の変更は SDK の更新を通じて反映されます
- Upstox API の進化に伴うコード変更の必要性を軽減します
MCP トレーディング API の使用
シンボルの MCP を計算する
リクエスト:
GET /historical-data/NSE_FO%7CNIFTY-I/1D?from=2023-01-01&to=2023-04-01
レスポンス:
{
"symbol": "NSE_FO|NIFTY-I",
"interval": "1D",
"dataPoints": [...],
"mcp": {
"timestamp": "2023-02-15T09:15:00.000Z",
"price": 17865.75,
"connections": 12
}
}
複数のシンボルの MCP を計算する
リクエスト:
POST /mcp/calculate
Content-Type: application/json
{
"symbols": ["NSE_FO|NIFTY-I", "NSE_FO|BANKNIFTY-I"],
"interval": "1D",
"from": "2023-01-01",
"to": "2023-04-01"
}
レスポンス:
{
"NSE_FO|NIFTY-I": {
"timestamp": "2023-02-15T09:15:00.000Z",
"price": 17865.75,
"connections": 12
},
"NSE_FO|BANKNIFTY-I": {
"timestamp": "2023-02-18T09:15:00.000Z",
"price": 41235.50,
"connections": 9
}
}
取引を実行する
リクエスト:
POST /trade
Content-Type: application/json
{
"symbol": "NSE_FO|NIFTY-I",
"quantity": 50,
"side": "BUY",
"orderType": "LIMIT",
"price": 17850
}
レスポンス:
{
"order_id": "12345678",
"status": "success",
"message": "Order placed successfully"
}
MCP 戦略を自動実行する
リクエスト:
POST /strategy/mcp
Content-Type: application/json
{
"symbol": "NSE_FO|NIFTY-I",
"interval": "1D",
"lookbackDays": 30,
"investmentAmount": 100000
}
レスポンス:
{
"strategy": "MCP",
"action": "BUY",
"order": {
"order_id": "12345678",
"status": "success"
},
"mcp": {
"timestamp": "2023-03-15T09:15:00.000Z",
"price": 17865.75,
"connections": 12
},
"currentPrice": 17870.25,
"analysis": {
"mcpDeviation": "0.03%",
"connectionStrength": 12
}
}
セキュリティに関する考慮事項
開発環境
- 権限を制限したテスト用 API キーを使用します
- トークンはメモリ内のみに保存します(ファイルへの永続化を無効にします)
- 詳細なエラーログを有効にします
本番環境
- 権限を制限した適切な API キー管理を使用します
- トークンの保存にはファイルシステムではなく、安全なデータベースを使用します
- API アクセスに IP ホワイトリストを実装します
- すべての接続で HTTPS を有効にします
- Nginx などのリバースプロキシを使用します
- レート制限を実装します
本番モードでは、以下のコードを server.js に追加してください。
if (process.env.NODE_ENV === 'production') {
// Force HTTPS
app.use((req, res, next) => {
if (req.header('x-forwarded-proto') !== 'https') {
res.redirect(`https://${req.header('host')}${req.url}`);
} else {
next();
}
});
// Rate limiting
const rateLimit = require('express-rate-limit');
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 100 // limit each IP to 100 requests per windowMs
});
app.use(limiter);
}
トラブルシューティング
- 認証の問題:
.envファイルの API 認証情報が正しいことを確認してください - 注文の発注エラー:数量が最小ロットサイズの要件を満たしているか確認してください
- データ取得の問題:シンボルの形式が正しいことを確認してください(NSE_FO|SYMBOL-I)
- トークン更新の失敗:API キーの有効期限が切れていないか、取り消されていないか確認してください
さらなるカスタマイズ
MCP の計算および取引ロジックは、以下を変更してカスタマイズできます。
calculateMCP()関数 — 接続条件、ピボットポイントの特定方法を調整します- 戦略エンドポイント — 偏差のしきい値、トレンド特定ロジックを変更します
- 注文パラメーター — 注文タイプ、有効期間、開示数量を変更します
コントリビューション
コントリビューションを歓迎します。お気軽にプルリクエストを送信してください。
ライセンス
このプロジェクトは MIT ライセンスの下で公開されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。