mcpField
M
MCP Upstox Trading Server

MCP Upstox Trading Server

ローカル
github.com/lonelypx金融データ079 週間前に更新

MCP Upstox Trading Server について

MCP Upstox Trading Serverは、Upstoxを利用するトレーダー向けのNode.jsアプリケーションです。過去の価格からサポート・レジスタンス水準を算出し、自動戦略で取引を実行します。複数銘柄の計算や発注用のエンドポイントも備えています。

主な機能

  1. 01接続数に基づくサポート・レジスタンス水準の特定
  2. 02複数銘柄のMCP値の計算
  3. 03Upstox経由の取引実行
  4. 04自動MCP戦略の実行
  5. 05認証トークンの保存と更新

活用シーン

  1. 01過去の市場データからピボット水準を計算
  2. 02複数銘柄のMCP水準を比較
  3. 03Upstox経由で注文を実行
  4. 04価格水準に基づく自動戦略の実行

MCP 対応

READMEには市場データ分析、MCP計算、取引、戦略実行のHTTPエンドポイントが記載されていますが、MCPプロトコルのインターフェースについては説明されていません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCP Upstox Trading Server

プロジェクト概要

Most Connected Pivot(MCP)Upstox Trading Server は、市場における高確率のサポートラインとレジスタンスラインを特定し、それらに基づいて取引を行う自動取引アプリケーションです。このシステムは過去の価格データを分析して、価格が繰り返し特定の水準に反応したピボットポイントを特定し、現在の価格がこれらの重要な水準に近づいたときに取引を実行します。

MCP(Most Connected Pivot)とは?

MCP は、過去に重要なサポートまたはレジスタンスとして機能した価格水準を特定するテクニカル分析の概念です。該当する水準は、次の特徴を持つポイントです。

  1. 価格が平均値を複数回横切っている(ピボット)
  2. 複数の価格ポイントが特定の水準付近に集まっている(接続)
  3. 最も多くの接続がある水準が MCP となり、高確率の反転ゾーンになる

この戦略では、過去にサポート/レジスタンスとして複数回機能した水準は、価格が再び反応する可能性が高く、トレーダーに統計的な優位性をもたらすと想定しています。

前提条件

  • Node.js(v14 以降)
  • NPM(Node Package Manager)
  • API アクセス権を持つ Upstox 開発者アカウント
  • JavaScript と取引の基本的な知識

インストール手順

  1. プロジェクトディレクトリを作成する

    mkdir mcp-upstox-server
    cd mcp-upstox-server
    
  2. プロジェクトを初期化する

    npm init -y
    
  3. 必要な依存関係をインストールする

    npm install express axios cors dotenv upstox-js-sdk
    
  4. サーバーファイルを作成する

    • 提供されたサーバーコードを server.js という名前のファイルにコピーします
    • 指定された設定を記述した .env ファイルを作成します
  5. 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
  1. Procfile を作成します。

    web: node server.js
    
  2. Heroku ダッシュボードで環境変数を設定します

  3. デプロイします。

    git push heroku main
    
AWS EC2
  1. EC2 インスタンスをセットアップします
  2. Node.js と npm をインストールします
  3. リポジトリをクローンします
  4. 環境変数を設定します
  5. 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

サーバーの実行

  1. サーバーを起動する

    node server.js
    
  2. Upstox で認証する

    • ブラウザーを開き、http://localhost:3000/auth にアクセスします
    • Upstox のログインページにリダイレクトされます
    • ログインしてアプリケーションを認可すると、サーバーにリダイレクトされます
    • 認証が成功したことを示すメッセージが表示されます
    • トークンは安全に保存され、必要に応じて自動的に更新されます

認証機能の改善

サーバーには、次の認証機能の改善が含まれています。

  1. トークンの永続化

    • アクセストークンとリフレッシュトークンはローカルファイル(token.json)に安全に保存されます
    • サーバーの起動時にトークンが読み込まれるため、再認証する必要がありません
  2. トークンの自動更新

    • トークンの有効期限が近づいていることをシステムが自動的に検出します
    • 有効期限の5分前に、バックグラウンドでトークンが更新されます
    • すべての API 呼び出しで、トークンが有効であることを保証するミドルウェアが使用されます
  3. ログアウト機能

    • 新しい /logout エンドポイントを使用すると、ユーザーは完全にサインアウトできます
    • メモリとディスクに保存されているすべてのトークンが消去されます

Upstox SDK の統合

サーバーでは公式の Upstox JavaScript SDK を使用するようになりました。これにより、以下が可能になります。

  1. API 呼び出しの簡素化

    • 一貫したインターフェースを通じて、すべての Upstox API エンドポイントに直接アクセスできます
    • API リクエストの型チェックとエラー処理が向上します
  2. リクエスト形式の自動設定

    • SDK がすべての API リクエストを適切な形式に設定します
    • Upstox API の要件に準拠できます
  3. メンテナンスの簡素化

    • 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 の計算および取引ロジックは、以下を変更してカスタマイズできます。

  1. calculateMCP() 関数 — 接続条件、ピボットポイントの特定方法を調整します
  2. 戦略エンドポイント — 偏差のしきい値、トレンド特定ロジックを変更します
  3. 注文パラメーター — 注文タイプ、有効期間、開示数量を変更します

コントリビューション

コントリビューションを歓迎します。お気軽にプルリクエストを送信してください。

ライセンス

このプロジェクトは MIT ライセンスの下で公開されています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。