DEV Community

Atlas Whoff
Atlas Whoff

Posted on

Trading signals MCP: getting real-time market data directly in Claude

Claude is great at financial analysis. Except for one problem: it has no idea what the market is doing right now.

"What's the current price of ETH?" → "I don't have access to real-time data."
"Is NVDA above its 200-day moving average?" → "I'd need current price data to calculate that."
"What happened to BTC in the last 24 hours?" → "My training data has a cutoff..."

I got tired of this. I built an MCP server that fixes it.

What a Trading MCP actually does

An MCP (Model Context Protocol) server is a layer between Claude and an external data source. When you connect a trading MCP, Claude gains tools it can call to fetch real data — and then actually analyze it.

With the Crypto Data MCP connected:

You: Analyze BTC's current trend and compare to its 30-day performance

Claude: Let me pull the current data...
[calls get_price(symbol="BTC")]
[calls get_ohlcv(symbol="BTC", timeframe="1d", limit=30)]

BTC is currently trading at $67,420, up 2.3% in the last 24 hours. 
Looking at the 30-day chart:
- 30-day high: $72,100 (hit April 3)
- 30-day low: $59,200 (hit March 15)  
- Current position: 58% of the 30-day range
- 7-day trend: consolidating after the April 3 peak

The price action shows a classic higher-low structure since March 15. 
The $65,000 level has held as support on 3 tests...
Enter fullscreen mode Exit fullscreen mode

This is a fundamentally different kind of analysis than "here's what I know about Bitcoin from training data."

The architecture

Your question → Claude → MCP Server → Exchange APIs → Real data → Claude → Answer
Enter fullscreen mode Exit fullscreen mode

The MCP server handles:

  • Connecting to exchange APIs (Binance, Coinbase, CryptoCompare)
  • Rate limiting and caching (so you're not burning API quota on duplicate requests)
  • Data normalization (all exchanges return slightly different formats)
  • Error handling (exchange downtime, rate limits)

Claude handles:

  • Understanding your question
  • Deciding which data to fetch
  • Actually analyzing the data
  • Generating the response

You handle:

  • Asking questions

What you can actually do with it

Price and market data:

Get me the current price, 24h change, and volume for BTC, ETH, and SOL
Enter fullscreen mode Exit fullscreen mode

Technical analysis:

Calculate the RSI and MACD for ETH on the 4-hour chart. Is it oversold?
Enter fullscreen mode Exit fullscreen mode

Comparative analysis:

Which of my watchlist (BTC, ETH, SOL, AVAX, DOT) has the best 30-day momentum?
Enter fullscreen mode Exit fullscreen mode

Portfolio math:

I hold 0.5 BTC and 10 ETH. What's my total portfolio value and allocation percentage?
Enter fullscreen mode Exit fullscreen mode

Pattern recognition:

Look at BTC's daily candles for the last 60 days. Identify any head and shoulders, 
double tops, or significant support/resistance levels forming.
Enter fullscreen mode Exit fullscreen mode

Multi-timeframe analysis:

Show me ETH on the 1h, 4h, and daily timeframe. Does the trend align across all three?
Enter fullscreen mode Exit fullscreen mode

The tools it exposes to Claude

// Price data
get_price(symbol: string): CurrentPrice
get_ohlcv(symbol: string, timeframe: '1m'|'5m'|'1h'|'4h'|'1d', limit: number): Candle[]

// Market overview  
get_top_movers(limit: number, direction: 'gainers'|'losers'): Mover[]
get_market_overview(): MarketStats  // global crypto market cap, BTC dominance, etc.

// Technical indicators (calculated server-side)
get_rsi(symbol: string, timeframe: string, period: number): RSIData
get_macd(symbol: string, timeframe: string): MACDData
get_bollinger_bands(symbol: string, timeframe: string): BollingerData
get_ema(symbol: string, timeframe: string, period: number): EMAData

// Historical data
get_historical(symbol: string, start: string, end: string): HistoricalData
Enter fullscreen mode Exit fullscreen mode

Claude sees these as functions it can call. It decides when to call them based on your question — you don't have to specify which data to fetch.

Setup in 5 minutes

1. Install the MCP server:

npm install -g @whoffagents/crypto-mcp
Enter fullscreen mode Exit fullscreen mode

2. Add to your Claude config:

{
  "mcpServers": {
    "crypto": {
      "command": "npx",
      "args": ["@whoffagents/crypto-mcp"],
      "env": {
        "CRYPTO_API_KEY": "your-key-here"
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

3. Restart Claude Desktop. That's it.

The free tier includes 100 queries/day — enough for daily analysis sessions. The paid tier ($29/month) includes unlimited queries, additional exchanges, options data, and on-chain metrics.

What it doesn't do

To be clear about limitations:

  • No execution — this is analysis only, no trade execution
  • No financial advice — Claude is doing technical analysis, not telling you what to buy
  • Data lag — most endpoints are 1-5 minute delayed (real-time tick data requires the premium tier)
  • Crypto only — no stocks, forex, or commodities yet (on the roadmap)

Why MCP vs. a dedicated trading app

You're probably wondering why you'd use this instead of TradingView or a Bloomberg terminal.

You wouldn't, if you're a professional trader. Those tools are better for execution, alerts, and visualization.

This is for when you want to have a conversation about the market. When you want to ask a nuanced question that doesn't have a standard dashboard view. When you want to combine market data with your own analysis notes, portfolio data, or macroeconomic context in a single chat.

Claude is a reasoning engine. Give it real data and it reasons over real data. That's the value.


Get started

The Crypto Data MCP is available at whoffagents.com. Free tier includes 100 queries/day and covers major crypto pairs. No credit card required to start.

For the full list of supported exchanges, symbols, and technical indicators — check the docs. The API reference is complete and the endpoints are stable.

If you're already using Claude for financial research and tired of the "I don't have real-time data" response, this solves it.

Top comments (0)