Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

SentimentFX

by shaelegowski7version 1.0.0i★ –iRuns in the cloud
Registry nameorg.sentimentfx/market-sentiment

Install

Overview

Description from the maker (original English)

FinBERT news sentiment and price history for 42 crypto, FX, stock, ETF and commodity tickers.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs in the cloud
  • Transport: Streamable HTTP
  • Category: Crypto & blockchain
  • You need to fill in: X-API-Key

Install

Pick the AI app you use, then copy the settings.

Before you install

Values marked secret are keys to your account. Never share them or paste them into a chat.

You need

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.

Run this in your terminal

claude mcp add --transport http market-sentiment https://api.sentimentfx.org/mcp --header 'X-API-Key: your-value'

Fill in the empty values before running it.

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "market-sentiment": {
      "url": "https://api.sentimentfx.org/mcp",
      "headers": {
        "X-API-Key": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "market-sentiment": {
      "type": "http",
      "url": "https://api.sentimentfx.org/mcp",
      "headers": {
        "X-API-Key": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.

Your choice stays on this device in a cookie; no account needed.

Values you fill in

  • X-API-Key secret required HTTP header
    SentimentFX API key. Free key (100 calls, no card) at developers.sentimentfx.org

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

We have not read this server’s tool list yet; we check endpoints in rotation.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026

  • ! Caution

    Maker matches the repo

    The publisher (sentimentfx.org) is not the repo owner (shaelegowski7); someone else may have listed it

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • … Not checked yet

    Endpoint responds

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    Sign-in with OAuth

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    No hidden instructions in tool descriptions

    Not checked yet; we read the tool list when we check the endpoint

Compared with others in Crypto & blockchaini

  • More stars than 0% of the other 1614 servers in this category
  • Published to the registry more recently than 44% of the other 1614 servers in this category
  • Basic checks equal to or better than 22% of the other 1614 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is SentimentFX safe?

It passed 0 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

You need to fill in: X-API-Key

Does it run on my computer or in the cloud?

It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.

Is it still maintained?

The GitHub repo last changed –, and the latest version (1.0.0) reached the registry 2 months ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.

What can I use instead?

In the same category: Highwire, Crypto Sentiment X402, Crypto MCP Server

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Highwire

Trade, launch and research higher.fun coins on Solana, from any AI agent. Unsigned or policy-signed.

by HigherMaestroGrowing↓ 1.7K/wkUpdated today

Computer or cloud✓ highwire.fun

Crypto Sentiment X402

Crypto news sentiment for 24 coins: label, score and headlines behind it, paid per call via x402

by whatevercat-creatorVery new↓ 61/wkUpdated today

Runs on your computer

Crypto MCP Server

Live cryptocurrency prices and FX rates as agent tools.

by thenextgennexus.comVery newUpdated today

Runs in the cloud✓ thenextgennexus.com

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

SentimentFX

A news-sentiment dataset for 42 markets across crypto, FX, stocks, ETFs and commodities. SentimentFX scrapes financial headlines, scores each one with FinBERT (a finance-tuned transformer model), and stores the scores next to daily and intraday prices. You can read the data on a dashboard, through a metered REST API, or as tools over MCP for Claude and other AI clients.

The product is the scored archive and live feed. It is not a price forecast: the dashboard shows correlation and backtest results so you can judge the signal yourself, and it makes no claim that sentiment predicts returns.

Live: sentimentfx.org · app.sentimentfx.org · developers.sentimentfx.org · status.sentimentfx.org


What it does

  • Pulls headlines from RSS feeds every 15 minutes (CoinDesk, CoinTelegraph, Yahoo Finance, r/CryptoCurrency and others), plus RSS-less news sites through saved ScraperAI configs
  • Scores each new headline once with FinBERT: positive_prob - negative_prob, giving -1 to +1, shown as 0–100 in the UI
  • Refreshes prices for all 42 tickers every hour through yfinance (daily OHLC and intraday candles)
  • Correlates daily sentiment shifts with next-day returns over 180 days, with a 95% confidence interval and a strength label
  • Publishes a free cross-asset Sentiment Index (0–100, Fear → Greed) built from scored news text, not trader positioning
  • Sells access through Stripe: a Pro dashboard plan, a Data plan for the API, and the full archive on request

Coverage

CategoryTickers
Crypto (5)BTC, ETH, SOL, XRP, DOGE
FX (7)EURUSD, GBPUSD, USDJPY, AUDUSD, USDCAD, USDCHF, NZDUSD
Stocks (20)AAPL, MSFT, GOOGL, AMZN, META, NVDA, TSLA, JPM, BAC, GS, V, MA, XOM, JNJ, AMD, NFLX, WMT, UBER, CRM, PLTR
ETFs (6)SPY, QQQ, GLD, SLV, USO, ARKK
Commodities (4)GC=F (gold), SI=F (silver), CL=F (crude), NG=F (natural gas)

Price currency depends on category. Crypto is quoted in GBP (BTC-GBP on Yahoo). FX pairs are raw exchange rates. Stocks, ETFs and commodity futures are in native USD, and no GBP conversion is applied.

Products

Dashboard (app.sentimentfx.org)
  • Sentiment vs price chart, candlestick chart with a sentiment pane, and a 0–100 sentiment gauge
  • Correlation signal, divergence card, interactive backtest simulator and headline-impact panel
  • Headline feed with a per-article score. Editorial news is the default, and social sources are badged.
  • Leaderboard, track record and morning-brief pages
  • CSV export, email sentiment alerts and the morning brief email (Pro)

Alerts only fire for tickers whose backtest passes a quality gate: positive out-of-sample net return, and at least 70% of walk-forward folds positive. The gate is refreshed daily.

Plans
PlanPriceIncludes
Free£015 top tickers (3 per category), 30-day history, candlesticks, backtests, correlation
Pro£11.99/mo or £99.99/yrAll 42 tickers, full history, CSV export, alerts, morning brief, 15,000 API calls/mo
Data£49.99/mo or £499.99/yrEverything in Pro, 200,000 API calls/mo
Free API key£01,000 calls per 30 days, no card, hard stop at the limit

The bulk archive (every scored headline and price row, as CSV or JSONL) is sold separately. Ask through the dataset form on the developer portal.

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

Authenticate with an X-API-Key header. Full docs are at developers.sentimentfx.org.

EndpointReturnsCost
`GET /v1/sentiment/{ticker}?limit=1-100&sources=news\social\all`Latest scored headlines, each with a source_kind1 credit per 25 rows returned
`GET /v1/summary/{ticker}?days=1-365&sources=news\social`Daily average sentiment1 credit per day returned
GET /v1/prices/{ticker}?days=1-365Daily closes, with a currency field1 credit per day returned
GET /v1/correlation/{ticker}180-day Pearson r, p-value, 95% CI, strength1 credit
GET /v1/usagePlan, usage, allowance, reset date, rate limitsFree

Social posts (Reddit, StockTwits, X) are collected but kept separate. Every sentiment number is news only by default, and sources=social returns the social posts on their own. Calls are counted after the query, on rows actually returned. Nothing is billed per call: a key that uses up its allowance gets a 402 insufficient_quota until it refills, and a higher allowance can be requested. A 404 costs nothing, and out-of-range parameters are rejected with a 422 before any work is done. Every response carries X-Quota-* and X-RateLimit-* headers. Errors use one envelope: {"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": "you@example.com"}'

Use it

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

The Sentiment Index is public and needs no key: GET https://api.sentimentfx.org/sentiment-index. Like every other sentiment number, it's built from news only.

MCP server (api.sentimentfx.org/mcp)

The same data is exposed as six Model Context Protocol tools: list_tickers and get_usage (both free), plus get_sentiment, get_summary, get_prices and get_correlation, which bill exactly like their /v1 equivalents. It uses streamable HTTP with the same X-API-Key header, or Authorization: Bearer for clients that can't set custom headers (the Claude API's MCP connector is one). The registry manifest is server.json, and publishing steps are in docs/publishing-mcp-registry.md.

{

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

Architecture

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

Scheduled jobs (APScheduler, inside the API process):

JobWhenWhat
scrape_rss_onlyEvery 15 minRSS + ScraperAI headlines for all 42 tickers
scrape_allHourly, :00Daily price refresh for all tickers, sentiment alert checks (GNews only if enabled)
scrape_intraday_pricesHourly, :05Intraday candles
Signal-quality refreshDaily, 05:00 UTCRe-runs the backtest that gates alerts
Alert outcome settlementDaily, 06:15 UTCScores past alerts for the track record
Morning briefDaily, 07:00 LondonEmails the Claude-written brief to subscribers
API usage reset1st of monthResets monthly call counts. Free keys are measured on lifetime calls, so this doesn't refill them.

FinBERT only runs on headlines it hasn't seen. The model (~400 MB) downloads and loads on the first scoring call, not at import.

Dormant sources. GNews, StockTwits and X/Twitter fetchers are still in the code but switched off. Set GNEWS_ENABLED, STOCKTWITS_ENABLED or X_ENABLED to true to turn one back on. StockTwits was turned off because Cloudflare blocks the server's IP and retail chat scores poorly with a news-tuned model.

Repo layout
PathWhat
backend/app/main.pyEvery FastAPI route, the scheduler, Stripe webhook and billing
backend/app/scraper.py, ai_sources.pyHeadline fetchers. ScraperAI configs live in app/scraperai_configs/.
backend/app/sentiment.pyFinBERT pipeline
backend/app/prices.py, candles.pyyfinance daily and intraday prices
backend/app/sentiment_index.pyThe cross-asset index (equal-weighted across the 5 categories)
backend/app/mcp_server.pyMCP tools, mounted at /mcp
backend/app/brief.pyClaude-written morning brief
backend/app/trend_signal.py, funding_monitor.pyPersonal-use tooling, not product features
backend/build_scraper_config.pyOffline tool that generates ScraperAI configs. Needs its own venv; not used at runtime.
frontend/React + Vite dashboard
landing/Marketing site, leaderboard, index page and per-ticker SEO pages
developers/Developer portal and API docs
status/Status page

Getting started

Backend
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

There is no .env.example. Create backend/.env with the variables below.

VariableNeeded for
DATABASE_URLPostgreSQL. Required: tables are created at import, so the app won't start without a reachable database.
ANTHROPIC_API_KEYMorning brief. Read at import, so any value lets the app boot.
SUPABASE_URL, SUPABASE_SERVICE_KEYUser accounts and tiers
STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRETCheckout and webhook
RESEND_API_KEYWaitlist, alert and API-key emails
ADMIN_SECRET?token= for admin, backfill and cleanup endpoints
MCP_ALLOWED_HOSTSOptional. Hosts the MCP endpoint accepts. Defaults cover localhost and 127.0.0.1 on port 8000; other ports get a 421.
GNEWS_ENABLED, GNEWS_API_KEY, STOCKTWITS_ENABLED, X_ENABLED, X_NITTER_BASEOptional. Dormant sources.
Frontend
cd frontend

npm install npm run dev # http://localhost:5173

Set VITE_SUPABASE_ANON_KEY in frontend/.env to enable login (VITE_GA_ID is optional). The API base URL is hard-coded to https://api.sentimentfx.org in src/lib/constants.js, so a local frontend talks to production unless you change it.

Tests
cd backend

pip install -r requirements-dev.txt python -m pytest tests/ -v

Use python -m pytest, not bare pytest: tests/ has no __init__.py, so bare pytest can't import app. The tests are smoke-level only. They check that the app boots and the core routes answer, and they need a reachable DATABASE_URL. CI runs them against a throwaway Postgres on every push to main and every PR. There is no frontend test suite.

Sentiment scoring

score = positive_probability - negative_probability

The range is -1 (most negative) to +1 (most positive), and the UI shows it as 0–100. Neutral headlines land near 0 instead of being forced to exactly 0, which was the problem with the old label × confidence method. FinBERT scores the title only, even when the full article body is stored.

Deployment

  • Backend: Railway via Procfile + nixpacks.toml at api.sentimentfx.org. Starts with uvicorn app.main:app --host 0.0.0.0 --port $PORT. Runs on CPU only.
  • Dashboard, landing, developer portal: separate Vercel projects (frontend/, landing/, developers/), each auto-deploying from main.
Ask PopNx