Unusual Whales MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Unusual Whales MCP Server show me recent options flow for AAPL"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Unusual Whales MCP Server
A Model Context Protocol (MCP) server that provides access to the Unusual Whales API for financial data, options flow analysis, and market intelligence.
Features
š Fast and lightweight - Direct API access without heavy dependencies
š Comprehensive data - 33 tools covering 12 financial data categories
š Real-time insights - Options flow alerts, market sentiment, and live data
šļø Congressional tracking - Monitor politician trading activity
š Dark pool analysis - Track institutional block trades
š Market intelligence - ETF flows, earnings data, and volatility metrics
Related MCP server: xoomar-mcp
Requirements
Node.js 18+
Valid Unusual Whales API key
Compatible with Claude Desktop, VS Code, and other MCP clients
Installation
The server is available as an npm package and can be installed in multiple ways:
Quick Start
npx unusualwhales-mcpGlobal Installation
npm install -g unusualwhales-mcpLocal Installation
npm install unusualwhales-mcpConfiguration
Environment Setup
Obtain an API key from Unusual Whales
Set the environment variable:
export UNUSUAL_WHALES_API_KEY=your_api_key_hereOr create a .env file:
UNUSUAL_WHALES_API_KEY=your_api_key_hereMCP Client Configuration
Claude Desktop
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"unusualwhales": {
"command": "npx",
"args": ["unusualwhales-mcp"],
"env": {
"UNUSUAL_WHALES_API_KEY": "your_api_key_here"
}
}
}
}VS Code (via MCP extension)
{
"mcpServers": {
"unusualwhales": {
"command": "npx",
"args": ["unusualwhales-mcp"]
}
}
}Other MCP Clients
The server works with any MCP-compatible client. Use the command:
npx unusualwhales-mcpAvailable Tools
š Stock Analysis
get_stock_info- Get comprehensive stock informationget_stock_flow_alerts- Get options flow alerts for a tickerget_stock_flow_recent- Get recent options flowsget_stock_option_chains- Get option chains dataget_stock_greek_exposure- Get Greeks exposure analysisget_stock_max_pain- Get max pain calculationsget_stock_iv_rank- Get IV rank percentilesget_stock_volatility_stats- Get volatility statistics
š Market Data
get_market_tide- Get overall market sentiment indicatorget_market_economic_calendar- Get economic events calendarget_market_fda_calendar- Get FDA calendar eventsget_market_spike- Get SPIKE volatility indicatorget_market_total_options_volume- Get market-wide options volume
šļø Congressional & Insider Trading
get_congress_trader- Get congress member trading dataget_congress_late_reports- Get late filing reportsget_congress_recent_trades- Get recent congressional trades
š Dark Pool Analysis
get_darkpool_recent- Get recent dark pool printsget_darkpool_ticker- Get dark pool data for specific ticker
š ETF Analysis
get_etf_exposure- Get ETF sector/geographic exposureget_etf_holdings- Get ETF holdings breakdownget_etf_in_outflow- Get ETF flow dataget_etf_info- Get ETF informationget_etf_weights- Get ETF sector weights
š Earnings & Events
get_earnings_afterhours- Get after-hours earningsget_earnings_premarket- Get pre-market earningsget_earnings_ticker- Get historical earnings for ticker
š Alerts & Screening
get_alerts- Get triggered user alertsget_alerts_configuration- Get alert configurationsget_option_trades_flow_alerts- Get options flow alertsget_screener_analysts- Get analyst ratings screenerget_screener_option_contracts- Get hottest chains screenerget_screener_stocks- Get stock screener results
š° News
get_news_headlines- Get financial news headlines
Usage Examples
Basic Stock Analysis
// Get recent options flows for AAPL
const flows = await server.callTool("get_stock_flow_recent", {
ticker: "AAPL"
});
// Get comprehensive stock info
const info = await server.callTool("get_stock_info", {
ticker: "TSLA"
});Market Sentiment
// Get overall market sentiment
const tide = await server.callTool("get_market_tide", {});
// Get volatility spike indicator
const spike = await server.callTool("get_market_spike", {});Congressional Trading
// Get recent congressional trades for NVDA
const congressTrades = await server.callTool("get_congress_recent_trades", {
ticker: "NVDA"
});
// Get trades by specific congress member
const memberTrades = await server.callTool("get_congress_trader", {
name: "Nancy Pelosi"
});Dark Pool Activity
// Get recent dark pool activity
const darkPool = await server.callTool("get_darkpool_recent", {
limit: 50
});
// Get dark pool data for specific ticker
const tickerDarkPool = await server.callTool("get_darkpool_ticker", {
ticker: "SPY"
});Using as a Package in Node.js Projects
This package can be imported and used directly in your Node.js applications, including web frameworks like Hono, Express, or Fastify.
Installation as Dependency
npm install unusualwhales-mcpBasic Usage
import { UnusualWhalesMcp } from 'unusualwhales-mcp';
// Create MCP server instance
const mcpServer = new UnusualWhalesMcp();
// Get the server instance for integration
const server = mcpServer.getServer();
// Start with different transport types
await mcpServer.start('stdio'); // For MCP clients
await mcpServer.start('sse', { endpoint: '/sse', response: res }); // For HTTP SSE
await mcpServer.start('streamableHttp'); // For HTTP streamingIntegration with Hono Web Framework
import { Hono } from 'hono';
import { cors } from 'hono/cors';
import { UnusualWhalesMcp } from 'unusualwhales-mcp';
const app = new Hono();
const mcpServer = new UnusualWhalesMcp();
// Enable CORS for MCP endpoints
app.use('/mcp/*', cors({
origin: '*',
allowHeaders: ['Content-Type'],
allowMethods: ['GET', 'POST', 'OPTIONS'],
}));
// SSE endpoint for MCP over HTTP
app.get('/mcp/sse', async (c) => {
const response = c.env?.response || c.res;
// Start MCP server with SSE transport
await mcpServer.start('sse', {
endpoint: '/mcp/sse',
response: response
});
return c.json({ status: 'SSE endpoint ready' });
});
// Streamable HTTP endpoint
app.post('/mcp/message', async (c) => {
try {
// Create streamable HTTP transport
const transport = mcpServer.createStreamableHTTPTransport({
sessionIdGenerator: () => crypto.randomUUID()
});
// Handle MCP message
const body = await c.req.json();
return c.json({
status: 'message processed',
sessionId: transport.sessionId
});
} catch (error) {
console.error('MCP endpoint error:', error);
return c.json({ error: 'Internal server error' }, 500);
}
});
// Direct API endpoints (bypassing MCP)
app.get('/api/stock/:ticker', async (c) => {
try {
const ticker = c.req.param('ticker');
const server = mcpServer.getServer();
// Call tool directly
const result = await server.callTool('get_stock_info', { ticker });
return c.json(result);
} catch (error) {
return c.json({ error: error.message }, 500);
}
});
export default {
port: 3000,
fetch: app.fetch,
};Environment Configuration
# Set your Unusual Whales API key
export UNUSUAL_WHALES_API_KEY=your_api_key_here
# Optional: Configure server settings
export MCP_SERVER_NAME=unusualwhales-mcp
export MCP_SERVER_VERSION=0.1.3Advanced Usage with Custom Transport
import { UnusualWhalesMcp } from 'unusualwhales-mcp';
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
const mcpServer = new UnusualWhalesMcp();
// Create custom SSE transport
const customTransport = new SSEServerTransport('/custom-endpoint', response);
// Connect server with custom transport
await mcpServer.getServer().connect(customTransport);
// Or use the helper methods
const sseTransport = mcpServer.createSSETransport('/my-endpoint', response);
const httpTransport = mcpServer.createStreamableHTTPTransport({
sessionIdGenerator: () => `session-${Date.now()}`
});TypeScript Support
The package includes full TypeScript definitions:
import { UnusualWhalesMcp } from 'unusualwhales-mcp';
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
const mcpServer: UnusualWhalesMcp = new UnusualWhalesMcp();
const server: McpServer = mcpServer.getServer();
// Full type safety for all API calls
const stockInfo = await server.callTool('get_stock_info', {
ticker: 'AAPL'
});API Coverage
The server provides access to 81 API endpoints across 12 categories:
Category | Endpoints | Description |
Alerts | 2 | Custom alerts and configurations |
Congress | 3 | Congressional trading data |
Darkpool | 2 | Dark pool trading analysis |
Earnings | 3 | Earnings calendars and data |
ETFs | 5 | ETF analysis and holdings |
Group Flow | 2 | Grouped options flow data |
Insider | 4 | Insider trading information |
Institutions | 6 | Institutional holdings and activity |
Market | 9 | Market-wide data and indicators |
Net Flow | 1 | Net options flow by expiry |
News | 1 | Financial news headlines |
Option Contract | 4 | Individual contract analysis |
Option Trades | 2 | Options flow and alerts |
Screeners | 3 | Stock and options screening tools |
Seasonality | 4 | Seasonal market patterns |
Shorts | 5 | Short interest and volume data |
Stock | 27 | Comprehensive stock analysis |
Development
Local Development
# Clone the repository
git clone https://github.com/your-username/unusualwhales-mcp.git
cd unusualwhales-mcp
# Install dependencies
npm install
# Set up environment
cp .env.example .env
# Edit .env with your API key
# Build the project
npm run build
# Run the server
npm startAvailable Scripts
npm run build- Compile TypeScript and make executablenpm run watch- Watch for changes and recompilenpm run inspector- Launch MCP inspector for debuggingnpm run prepare- Prepare package for publishing
Project Structure
unusualwhales-mcp/
āāā src/
ā āāā index.ts # Main server implementation
āāā build/ # Compiled JavaScript output
āāā package.json # Project configuration
āāā tsconfig.json # TypeScript configuration
template
āāā README.md # This fileRate Limits
Please be aware of Unusual Whales API rate limits. The server includes:
30-second timeout for requests
Proper error handling for rate limit responses
Retry logic for transient failures
License
This project is licensed under the MIT License - see the LICENSE file for details.
Disclaimer
ā ļø Important: This software is for educational and research purposes only. Always verify data independently before making trading decisions. The authors are not responsible for any financial losses incurred from using this software.
Support
Issues: GitHub Issues
API Documentation: Unusual Whales API Docs
Related Projects
Model Context Protocol - Official MCP implementation
Claude Desktop - AI assistant with MCP support
Unusual Whales - Financial data platform
Made with ā¤ļø for unusualwhales
Available Tools
33 toolsget_alertsC
Get triggered alerts for the user
Inputs: limit, page, intraday_only, config_ids, +2 more.
get_alerts_configurationB
Get alert configurations for the user
Inputs: no named parameters.
get_congress_late_reportsC
Get recent late reports by congress members
Inputs: limit, date, ticker.
get_congress_recent_tradesC
Get latest trades by congress members
Inputs: limit, date, ticker.
get_congress_traderC
Get recent reports by congress member
Inputs: limit, date, ticker, name.
get_darkpool_recentC
Get latest darkpool trades
Inputs: limit, date, min_premium, max_premium, +4 more.
get_darkpool_tickerC
Get darkpool trades for a specific ticker
Inputs: ticker (required), date, newer_than, older_than, +7 more.
get_earnings_afterhoursB
Get afterhours earnings for a date
Inputs: date, limit, page.
get_earnings_premarketC
Get premarket earnings for a date
Inputs: date, limit, page.
get_earnings_tickerC
Get historical earnings data for a ticker
Inputs: ticker (required).
get_etf_exposureC
Get ETF exposure data
Inputs: ticker (required).
get_etf_holdingsC
Get ETF holdings information
Inputs: ticker (required).
get_etf_infoC
Get ETF information
Inputs: ticker (required).
get_etf_in_outflowC
Get ETF inflow & outflow data
Inputs: ticker (required).
get_etf_weightsB
Get ETF sector & country weights
Inputs: ticker (required).
get_market_economic_calendarC
Get economic calendar events
Inputs: date, limit.
get_market_fda_calendarC
Get FDA calendar events
Inputs: date, limit.
get_market_spikeC
Get SPIKE data (volatility indicator)
Inputs: no named parameters.
get_market_tideC
Get market tide data
Inputs: no named parameters.
get_market_total_options_volumeB
Get total options volume across the market
Inputs: no named parameters.
get_news_headlinesC
Get latest news headlines for financial markets with filtering options
Inputs: limit, major_only, page, search_term, +1 more.
get_option_trades_flow_alertsC
Get option flow alerts showing significant option trades and unusual activity
Inputs: all_opening, is_ask_side, is_bid_side, is_call, +24 more.
get_screener_analystsC
Get analyst rating screener
Inputs: no named parameters.
get_screener_option_contractsC
Get hottest chains screener (option contracts)
Inputs: no named parameters.
get_screener_stocksD
Get stock screener
Inputs: no named parameters.
get_stock_flow_alertsC
Get flow alerts for a ticker
Inputs: ticker (required).
get_stock_flow_recentC
Get recent flows for a ticker
Inputs: ticker (required).
get_stock_greek_exposureC
Get Greek exposure for a ticker
Inputs: ticker (required).
get_stock_infoC
Get stock information for a ticker
Inputs: ticker (required).
get_stock_iv_rankC
Get IV rank for a ticker
Inputs: ticker (required).
get_stock_max_painC
Get max pain data for a ticker
Inputs: ticker (required).
get_stock_option_chainsC
Get option chains for a ticker
Inputs: ticker (required).
get_stock_volatility_statsC
Get volatility statistics for a ticker
Inputs: ticker (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogā¦
TDQS
Scored across 33 tools
Most tools have distinct purposes targeting specific financial data categories (congress trades, dark pools, earnings, ETFs, market indicators, news, screeners, stock/option analytics). Some potential overlap exists between flow-related tools (e.g., get_stock_flow_alerts vs get_stock_flow_recent) and ETF tools, but descriptions generally clarify the differences.
All tools follow a consistent 'get_[category]_[specific]' snake_case pattern, with clear and predictable naming. The structure is uniform across all 33 tools, making it easy to understand the domain and action at a glance.
33 tools is excessive for a single server, likely overwhelming for agents and suggesting poor scoping. While the domain (financial data) is broad, this many tools indicates fragmentation rather than a cohesive set, making it difficult to navigate and use effectively.
The tool set comprehensively covers the financial data domain implied by the server name and tool descriptions. It includes data on alerts, congress trades, dark pools, earnings, ETFs, market indicators, news, screeners, and detailed stock/option analytics, with no obvious gaps for the intended purpose.
Maintenance
Related MCP Connectors
Scan options flow, analyze real-time market data, and build investing and trading workflows.
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
US options flow & stock data: unusual activity, gamma levels, IV, earnings. OAuth sign-in or keys.
The full TraderMatrix market-data connector for Claude, Cursor and any MCP client. 51 tools: scored and tiered unusual options activity, dealer gamma (GEX), Apex levels and gamma pockets, IV rank, sector flow, dark-pool net-notional rollups, market health and macro regime, gap-continuation and breakout signals, wheel and CSP screeners, a one-call ticker snapshot, and your own watchlists. Needs a TraderMatrix API key (OAuth sign-in works for Claude web and mobile). A free, no-key connector with the gapper scanner and Market Health tools is listed separately as TraderMatrix Free.
Related MCP Servers
- AlicenseBqualityBmaintenanceProvides access to Unusual Whales market data including options flow, dark pool activity, congressional trades, and more via natural language queries.1617 npm78MIT
- AlicenseAqualityCmaintenanceEnables AI agents to query free public market data through 21 tools spanning 29 datasets sourced from SEC EDGAR/XBRL, FINRA, CFTC, the Federal Reserve, USAspending and exchange APIs. Covers short interest, insider and fund holdings, company financials, macro and policy rates, funding rates, crypto market metrics, IPOs and federal contracts, with no API key required to start.2278 npmApache 2.0
- AlicenseBqualityCmaintenanceEnables AI assistants to query fused 0-100 conviction scores, ranked watchlists, market briefings, and raw market signals from the Unusual Whales API, including a keyless demo mode.71MIT

XOOMAR MCPofficial
AlicenseAqualityCmaintenanceProvides AI agents with access to a wide range of market data, including short interest, insider trades, financials, and macro indicators, through 26 tools across 31 datasets.2678 npm1Apache 2.0