mcpField
S
SentimentFX

SentimentFX

リモート
developers.sentimentfx.org金融データ01 週間前に更新
リポジトリ公式サイト

SentimentFX について

SentimentFXは、FinBERTで評価した金融ニュース見出しを、暗号資産・FX・株式・ETF・コモディティの42銘柄について日足・日中価格とともに提供します。投資家や開発者向けに、ダッシュボード、REST API、MCPツールでセンチメントと相関分析を扱い、価格予測は行いません。

主な機能

  1. 01FinBERTによる金融ニュース評価
  2. 02日足・日中価格データ
  3. 03センチメントと価格の相関分析
  4. 04クロスアセットセンチメント指数
  5. 05REST APIとCSVエクスポート

活用シーン

  1. 01ニュースセンチメントと市場価格の比較
  2. 02アプリ向けの銘柄センチメント取得
  3. 03過去の相関とバックテストの確認

MCP 対応

MCPサーバーは、銘柄一覧、利用状況、センチメント、集計、価格、相関を取得する6つのツールを公開します。ストリーミング可能なHTTPを使い、X-API-KeyヘッダーまたはBearerトークンを受け付けます。データ取得はREST APIと同じ条件で課金されます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://api.sentimentfx.org/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://api.sentimentfx.org/mcp認証が必要

ツール

6

このツールにパラメーターはありません。

詳細

SentimentFX

暗号資産、FX、株式、ETF、コモディティの42市場を対象としたニュースセンチメントデータセットです。SentimentFXは金融関連の見出しをスクレイピングし、それぞれをFinBERT(金融向けに調整されたトランスフォーマーモデル)でスコアリングして、日次およびイントラデイの価格とともに保存します。ダッシュボード、従量制のREST API、またはClaudeやその他のAIクライアント向けのMCPツールからデータを利用できます。

提供するのは、スコア付きのアーカイブとライブフィードです。価格予測ではありません。ダッシュボードでは相関とバックテストの結果を確認できるため、シグナルを自分で評価できます。また、センチメントがリターンを予測するという主張はしていません。

公開中: sentimentfx.org · app.sentimentfx.org · developers.sentimentfx.org · status.sentimentfx.org


機能

  • 15分ごとにRSSフィード(CoinDesk、CoinTelegraph、Yahoo Finance、r/CryptoCurrencyなど)から見出しを取得し、RSSのないニュースサイトについては、保存済みのScraperAI設定を通じて取得します
  • 新しい見出しをそれぞれ一度だけFinBERTでスコアリングします。positive_prob - negative_probで算出し、-1から+1の値をUIでは0~100で表示します
  • yfinanceを通じて、42銘柄すべての価格を毎時更新します(日次OHLCおよびイントラデイのローソク足)
  • 180日間にわたり、日次センチメントの変化と翌日リターンの相関を、95%信頼区間および強度ラベルとともに算出します
  • スコアリング済みのニューステキストから構成される、無料の複数資産対応センチメント指数(0~100、恐怖 → 強欲)を公開します。トレーダーのポジション状況に基づくものではありません
  • Stripe経由でアクセスを販売します。Proダッシュボードプラン、API向けのDataプラン、およびリクエストに応じて提供する全アーカイブがあります

対象範囲

カテゴリ銘柄
暗号資産(5)BTC, ETH, SOL, XRP, DOGE
FX(7)EURUSD, GBPUSD, USDJPY, AUDUSD, USDCAD, USDCHF, NZDUSD
株式(20)AAPL, MSFT, GOOGL, AMZN, META, NVDA, TSLA, JPM, BAC, GS, V, MA, XOM, JNJ, AMD, NFLX, WMT, UBER, CRM, PLTR
ETF(6)SPY, QQQ, GLD, SLV, USO, ARKK
コモディティ(4)GC=F(金)、SI=F(銀)、CL=F(原油)、NG=F(天然ガス)

価格の通貨はカテゴリによって異なります。 暗号資産はGBP建てです(YahooではBTC-GBP)。FXペアは為替レートそのものです。株式、ETF、コモディティ先物は現地通貨のUSD建てで、GBPへの換算は行われません。

製品

ダッシュボード(app.sentimentfx.org)
  • センチメントと価格のチャート、センチメント表示欄付きローソク足チャート、0~100のセンチメントゲージ
  • 相関シグナル、乖離カード、インタラクティブなバックテストシミュレーター、見出しの影響パネル
  • 記事ごとのスコアを表示する見出しフィード。編集部選定のニュースがデフォルトで、ソーシャルソースにはバッジが付きます。
  • ランキング、実績、朝のブリーフの各ページ
  • CSVエクスポート、メールでのセンチメントアラート、朝のブリーフメール(Pro)

アラートは、バックテストが品質基準を満たした銘柄に対してのみ発報されます。基準は、アウト・オブ・サンプルの純リターンがプラスであること、およびウォークフォワード分割の少なくとも70%でプラスとなることです。この基準は毎日更新されます。

プラン
プラン価格内容
Free£0上位15銘柄(各カテゴリ3銘柄)、過去30日分の履歴、ローソク足、バックテスト、相関
Pro£11.99/mo or £99.99/yr全42銘柄、全期間の履歴、CSVエクスポート、アラート、朝のブリーフ、月15,000回のAPI呼び出し
Data£49.99/mo or £499.99/yrProの全機能、月200,000回のAPI呼び出し
無料APIキー£030日間で1,000回の呼び出し、カード登録不要、上限到達時に停止

一括アーカイブ(スコアリング済みの全見出しと価格データをCSVまたはJSONL形式で収録)は別売りです。開発者ポータルのデータセットフォームからお問い合わせください。

Developer API (api.sentimentfx.org/v1/)

X-API-Key ヘッダーで認証します。詳細なドキュメントは developers.sentimentfx.org にあります。

エンドポイント戻り値コスト
GET /v1/sentiment/{ticker}?limit=1-100&sources=news|social|all最新のスコア付き見出し。それぞれに source_kind が含まれます返された25行ごとに1クレジット
GET /v1/summary/{ticker}?days=1-365&sources=news|social日ごとの平均センチメント返された日ごとに1クレジット
GET /v1/prices/{ticker}?days=1-365日ごとの終値と currency フィールド返された日ごとに1クレジット
GET /v1/correlation/{ticker}180日間のピアソンの r、p 値、95% 信頼区間、強度1クレジット
GET /v1/usageプラン、使用状況、利用上限、リセット日、レート制限無料

ソーシャル投稿(Reddit、StockTwits、X)は収集されますが、別々に扱われます。センチメントの数値はすべて、デフォルトではニュースのみを対象としており、sources=social を指定するとソーシャル投稿のみが返されます。呼び出し回数はクエリ後、実際に返された行数に基づいてカウントされます。呼び出しごとの請求はありません。利用上限に達したキーには、上限が補充されるまで 402 insufficient_quota が返されます。より高い利用上限は申請できます。404 は課金されず、範囲外のパラメーターは処理前に 422 で拒否されます。すべてのレスポンスには X-Quota-* および X-RateLimit-* ヘッダーが含まれます。エラーはすべて同じ形式です:{"error": {"type": "...", "message": "..."}}。

# Get a free key (1,000 calls every 30 days, no card)
curl -X POST https://api.sentimentfx.org/api/keys/generate \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]"}'

# Use it
curl https://api.sentimentfx.org/v1/summary/BTC?days=7 \
  -H "X-API-Key: sfx_your_key_here"

Sentiment Index は公開されており、キーは不要です:GET https://api.sentimentfx.org/sentiment-index。ほかのセンチメントの数値と同様、ニュースのみを基に算出されています。

MCP サーバー(api.sentimentfx.org/mcp)

同じデータを6つの Model Context Protocol ツールとして提供しています:list_tickers と get_usage(どちらも無料)、および /v1 の同等のエンドポイントとまったく同じ料金が適用される get_sentiment、get_summary、get_prices、get_correlation です。同じ X-API-Key ヘッダーを使うストリーム可能な HTTP を使用します。カスタムヘッダーを設定できないクライアント(Claude API の MCP コネクターなど)では、Authorization: Bearer <key> も使用できます。レジストリマニフェストは server.json に、公開手順は docs/publishing-mcp-registry.md にあります。

{
  "mcpServers": {
    "sentimentfx": {
      "type": "http",
      "url": "https://api.sentimentfx.org/mcp",
      "headers": { "X-API-Key": "sfx_your_key_here" }
    }
  }
}

アーキテクチャ

RSS feeds (15 min) ─┐
ScraperAI replay ───┼→ scraper.py / ai_sources.py → dedup by URL → FinBERT → headlines
HN Algolia (admin) ─┘

yfinance (hourly) → prices.py / candles.py → prices, candles

headlines + prices → /dashboard, /candles, /correlation, /backtest …  → React dashboard
                   → /v1/*  and  /mcp                                → API and MCP clients
                   → /sentiment-index                                → public index page

スケジュールされたジョブ(API プロセス内の APScheduler):

ジョブ実行時刻内容
scrape_rss_only15分ごと42銘柄すべての RSS と ScraperAI の見出しを取得
scrape_all毎時 :00全銘柄の日次価格を更新し、センチメントアラートを確認(有効な場合のみ GNews)
scrape_intraday_prices毎時 :05日中のローソク足を取得
シグナル品質の更新毎日 05:00 UTCアラートの判定に使われるバックテストを再実行
アラート結果の確定毎日 06:15 UTC実績記録用に過去のアラートを評価
モーニングブリーフ毎日 07:00 LondonClaude が作成したブリーフを購読者にメール送信
API 使用状況のリセット毎月1日月間呼び出し数をリセット。無料キーは生涯呼び出し数で計測されるため、上限は補充されません。

FinBERT は未処理の見出しのみを実行対象とします。モデル(約400 MB)は、インポート時ではなく、最初のスコアリング呼び出し時にダウンロードされて読み込まれます。

休止中のソース。 GNews、StockTwits、X/Twitter の取得処理はコード内に残っていますが、無効になっています。GNEWS_ENABLED、STOCKTWITS_ENABLED、または X_ENABLED を true に設定すると、該当するソースを再び有効にできます。StockTwits は、Cloudflare がサーバーの IP をブロックすることと、ニュース向けに調整されたモデルでは個人投資家のチャットのスコアが低くなることから、無効化されました。

リポジトリの構成
パス内容
backend/app/main.pyすべての FastAPI ルート、スケジューラー、Stripe の Webhook と請求処理
backend/app/scraper.py, ai_sources.pyヘッドライン取得機能。ScraperAI の設定ファイルは app/scraperai_configs/ にあります。
backend/app/sentiment.pyFinBERT パイプライン
backend/app/prices.py, candles.pyyfinance による日足および分足の価格
backend/app/sentiment_index.py複数資産のインデックス(5 カテゴリの等ウェイト平均)
backend/app/mcp_server.pyMCP ツール。/mcp にマウントされています
backend/app/brief.pyClaude が作成する朝のブリーフィング
backend/app/trend_signal.py, funding_monitor.py個人利用向けツールであり、製品機能ではありません
backend/build_scraper_config.pyScraperAI 設定ファイルを生成するオフラインツール。専用の venv が必要です。実行時には使用されません。
frontend/React + Vite ダッシュボード
landing/マーケティングサイト、リーダーボード、インデックスページ、ティッカーごとの SEO ページ
developers/開発者ポータルと API ドキュメント
status/ステータスページ

はじめに

バックエンド
cd backend
python -m venv venv
source venv/Scripts/activate        # Windows (Git Bash); venv/bin/activate on macOS/Linux
pip install -r requirements.txt
python -m uvicorn app.main:app --reload   # http://localhost:8000

.env.example はありません。以下の変数を設定して backend/.env を作成してください。

変数用途
DATABASE_URLPostgreSQL。必須です。インポート時にテーブルが作成されるため、接続可能なデータベースがないとアプリは起動しません。
ANTHROPIC_API_KEY朝のブリーフィング用。インポート時に読み込まれるため、どのような値でもアプリを起動できます。
SUPABASE_URL, SUPABASE_SERVICE_KEYユーザーアカウントとプラン
STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRETチェックアウトと Webhook
RESEND_API_KEYウェイトリスト、アラート、API キーに関するメール
ADMIN_SECRET管理、バックフィル、クリーンアップのエンドポイントで使用する ?token=
MCP_ALLOWED_HOSTS任意。MCP エンドポイントが受け付けるホスト。デフォルトではポート 8000 の localhost と 127.0.0.1 が対象です。それ以外のポートでは 421 が返されます。
GNEWS_ENABLED, GNEWS_API_KEY, STOCKTWITS_ENABLED, X_ENABLED, X_NITTER_BASE任意。休止中のソースです。
フロントエンド
cd frontend
npm install
npm run dev      # http://localhost:5173

ログインを有効にするには、frontend/.env に VITE_SUPABASE_ANON_KEY を設定してください(VITE_GA_ID は任意です)。API のベース URL は src/lib/constants.js で https://api.sentimentfx.org にハードコードされているため、変更しない限り、ローカルのフロントエンドは本番環境に接続します。

テスト
cd backend
pip install -r requirements-dev.txt
python -m pytest tests/ -v

pytest 単体ではなく、python -m pytest を使用してください。tests/ に __init__.py がないため、pytest 単体では app をインポートできません。テストはスモークテスト相当です。アプリが起動し、主要なルートが応答することを確認します。また、接続可能な DATABASE_URL が必要です。CI では、main へのプッシュごと、および PR ごとに、一時的な Postgres を使用してテストを実行します。フロントエンドのテストスイートはありません。

センチメントスコアリング

score = positive_probability - negative_probability

範囲は -1(最もネガティブ)から +1(最もポジティブ)で、UI では 0〜100 として表示されます。中立的なヘッドラインは 0 付近の値になり、ちょうど 0 に固定されません。これは、以前のラベル × 信頼度方式での問題点でした。FinBERT がスコアを付けるのはタイトルのみで、記事本文全体が保存されている場合も同様です。

デプロイ

  • バックエンド: Procfile と nixpacks.toml を使用し、api.sentimentfx.org で Railway 経由でデプロイします。uvicorn app.main:app --host 0.0.0.0 --port $PORT で起動します。CPU のみで動作します。
  • ダッシュボード、ランディングページ、開発者ポータル: それぞれ別個の Vercel プロジェクト(frontend/、landing/、developers/)で、各プロジェクトは main から自動デプロイされます。

コメント

MCP は初めてですか?

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

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