Signal Scanner について
Signal Scanner は YAML ルールで株式、ETF、為替、暗号資産をスクリーニングし、条件に合うシグナルを報告します。CLI、Telegram、MCP から設定可能な指標を使いたいユーザー向けです。
主な機能
- 01YAML によるウォッチリストとルール設定
- 02株式、ETF、為替、暗号資産のスキャン
- 03テクニカル指標の計算
- 04コンソールと Telegram での通知
- 05単発スキャンと定期監視
活用シーン
- 01独自の指標条件による銘柄の選別
- 02定期的な市場動向の監視
- 03MCP ホストからのスキャン結果の取得
MCP 対応
MCP サーバーとして `scan` ツールを公開し、Claude Desktop や Claude Code などの MCP ホストからスキャンを実行できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
signal-scanner — アラート機能付きのルールベース株式/暗号資産スクリーナー

ウォッチリストとルールセット(通常の YAML)を定義すると、スキャナーが市場データを取得して指標を計算し、条件に一致する銘柄をコンソール、Telegram、または任意のMCP ホスト(Claude Desktop/Claude Code)から通知します。
一度構築し、クライアントごとに見た目を変えられます。
watchlist.txtとrules.yamlを差し替えて、提供するだけです。
選ばれる理由
- デフォルトで API キー不要。 yfinance 経由で市場データを取得するため、API キーは不要です。株式、ETF、外国為替(
EURUSD=X)、暗号資産(BTC-USD)に対応しています。どこでもデモを実行できます。 - ノーコードのルール。 クライアントは
rules.yaml(指標の条件)を編集するだけで、コードを編集する必要はありません。 - 信頼できるシグナル。 指標は確定済みのローソク足から計算されます(先読みなし)。データのない銘柄は報告され、データがあるように見せかけることはありません。
- 状況に応じた通知。 ボットトークンが設定されていれば Telegram でアラートを通知し、設定されていなければコンソールに出力します。スキャナーは常に実行されます。
- 3 つの利用方法、1 つのエンジン。 CLI(1 回実行または
--watch)、Telegram プッシュ通知、MCP のscanツールに対応しています。
指標とルール
銘柄ごとの指標:price、pct_change、rsi、sma_fast、sma_slow、
sma_cross(golden/death)、vol_ratio(20 日平均との比較)、pct_from_52w_high、pct_from_52w_low。
ルールは、すべての条件が真の場合に発動します。
rules:
- name: oversold
when:
- {indicator: rsi, op: "<", value: 30}
- name: volume_spike_up
when:
- {indicator: vol_ratio, op: ">", value: 2.0}
- {indicator: pct_change, op: ">", value: 1.0}
クイックスタート
pip install -r requirements.txt
PYTHONUTF8=1 python tests/test_smoke.py # deterministic, no network — proves the engine
python -m signal_scanner # scan the watchlist once, print matches
python -m signal_scanner AAPL MSFT BTC-USD # scan ad-hoc symbols
python -m signal_scanner --watch # loop every SCAN_INTERVAL_S (default 15m)
python -m signal_scanner --notify # also push matches to Telegram (if configured)
Telegram(任意)
@BotFather でボットを作成してトークンを取得し、@userinfobot からチャット ID を取得します。次に、.env に設定します。
TELEGRAM_BOT_TOKEN=...
TELEGRAM_CHAT_ID=...
MCP サーバーとして使用する(Claude Desktop)
{
"signal-scanner": {
"command": "python",
"args": ["-m", "signal_scanner.server"],
"cwd": "C:/path/to/signal-scanner"
}
}
python が PATH にない場合は、Python のフルパスを使用してください(例:pip install -r requirements.txtを実行した環境の Python)。その後、Claude に「スキャナーを実行して」または「NVDA と BTC-USD にシグナルはありますか?」と尋ねると、scanツールが呼び出されます。
設定
すべての設定項目はconfig.py/.env(.env.exampleを参照)にあります。RSI 期間、SMA の短期/長期、出来高の期間、ルックバック期間、ポーリング間隔、データバックエンド、Telegram を設定できます。通常、クライアントに合わせた外観の変更はwatchlist.txtとrules.yamlの差し替えだけで済みます。
アーキテクチャ
watchlist.txt ─┐
├─ scanner.py ─ data.py(yfinance) ─ indicators.py ─ rules.py(rules.yaml)
rules.yaml ────┘ │
signals ──> console / Telegram / MCP `scan`
mcp-factory の契約(Result、formatting、cache)を再利用しているため、カタログのほかの要素と組み合わせられます。
ライセンス
MIT。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。