MCP Server

Plug your AI assistant into real congressional stock trading data. Twelve query tools. One-line setup for Claude Desktop, Claude Code, and Cursor. Free, public, no API key.

What is MCP? #

MCP (the Model Context Protocol) lets AI assistants like Claude and ChatGPT plug into outside data sources. This page tells your AI how to connect to our congressional trading database — so it stops guessing and starts citing real numbers. You paste one snippet into your client's config, restart it once, and from then on every question you ask about Congress and the stock market hits our live data instead of whatever your AI half-remembers from training.

Server URL #

Streamable HTTP, stateless, no authentication required.

https://congresstradealerts.com/mcp

Connect Your AI #

Pick your client. Paste. Restart. Done.

Claude Desktop

Paste into your claude_desktop_config.json and restart Claude.
{
  "mcpServers": {
    "congress-trade-alerts": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://congresstradealerts.com/mcp"]
    }
  }
}
macOS: ~/Library/Application Support/Claude/
Windows: %APPDATA%\Claude\

Claude Code (CLI)

Run this once in any terminal. The server is then available in every Claude Code session.
claude mcp add --transport http congress-trade-alerts https://congresstradealerts.com/mcp
Requires Claude Code v1.0+

Cursor

Create .cursor/mcp.json in your project root (or ~/.cursor/mcp.json globally).
{
  "mcpServers": {
    "congress-trade-alerts": {
      "url": "https://congresstradealerts.com/mcp"
    }
  }
}
Reload Cursor after saving.

Available Tools #

Twelve tools covering member profiles, trade history, committee conflicts, ticker activity, and aggregate breakdowns. All query live data — no cache, no 24-hour paywall.

Rate limit: 100 requests/minute per IP on /mcp (covers all twelve tools). Bursts above the cap return HTTP 429 with Retry-After: 60; the limit resets every 60 seconds. Sized for normal LLM-agent burst patterns — if your application hits it consistently, get in touch.

get_committee_trading

Committee Trading Activity

For a given congressional committee, returns which members traded stock in the last N days, their trade counts, and the percentage of the committee that traded.

ParamTypeNote
committee_name * string "Armed Services", "Finance", partial match OK
days integer (1-365) Look-back window, default 90
Returns: { committee: "Armed Services", total_members: 26, members_who_traded: 10, pct_traded: 38, members: [...] }

get_member_trades

Member Trades

Returns stock trades disclosed by a specific member of Congress, with optional filters for ticker symbol and date window.

ParamTypeNote
member_name * string Full name, e.g. "Nancy Pelosi"
ticker string e.g. "NVDA"
days integer (1-3650) Only trades within last N days
limit integer (1-200) Default 50
Returns: { member: "Nancy Pelosi", count: 50, trades: [{ ticker, asset_name, tx_type, amount_range, trade_date, ... }] }

get_top_traders

Top Traders

Returns the most active stock traders in Congress by trade count, optionally filtered by chamber (House or Senate) and date window.

ParamTypeNote
chamber "House" | "Senate" Filter by chamber
days integer (1-3650) Default 90
limit integer (1-50) Default 10
Returns: { traders: [{ politician, party, chamber, trade_count, buys, sells, last_trade_date }] }

get_trade_feed

Trade Feed

Recent congressional stock trades with optional filters for politician, ticker, party, chamber, and transaction type. Newest first.

ParamTypeNote
politician string Substring match
ticker string Exact ticker
party "D" | "R" | "I"
chamber "House" | "Senate"
tx_type "Purchase" | "Sale"
limit integer (1-100) Default 20
Returns: { count: 20, trades: [{ politician, ticker, tx_type, amount_range, trade_date, disclosure_date, ... }] }

get_member_profile

Member Profile

Full trading profile for a member: total trades, buys/sells, average return vs S&P 500 (relative_perf_pct = member avg − SPX avg), committees, and date range.

ParamTypeNote
member_name * string Full name
Returns: { member, party, chamber, total_trades, buys, sells, avg_return_pct, avg_sp500_pct, relative_perf_pct, committees: [...] }

get_trades_by_ticker

Trades by Ticker

All congressional trades for a specific stock ticker symbol, newest first. Optional date window.

ParamTypeNote
ticker * string e.g. "AAPL"
days integer (1-3650) Look-back window
limit integer (1-200) Default 50
Returns: { ticker: "AAPL", count: 50, trades: [{ politician, party, chamber, tx_type, trade_date, ... }] }

get_ticker_buyers

Ticker Buyers

Every Congress member who bought a specific ticker in the last N days, aggregated per politician with total trade count and estimated dollar midpoint.

ParamTypeNote
ticker * string e.g. "NVDA"
days integer (1-365) Default 90
Returns: { ticker: "NVDA", count: 8, buyers: [{ politician, buy_count, total_midpoint, latest_trade_date }] }

get_top_tickers

Top Tickers

Most-traded stock tickers by Congress in the last N days, with trade count, distinct trader count, buy/sell split, and average return.

ParamTypeNote
days integer (1-3650) Default 90
limit integer (1-50) Default 10
Returns: { tickers: [{ ticker, asset_name, trade_count, trader_count, buys, sells, avg_price_change_pct }] }

get_party_breakdown

Party Breakdown

Trade counts broken down by party (D/R/I/other), with buy/sell split, trader count, volume, and percentage share. Optional date filter.

ParamTypeNote
days integer (1-3650) Look-back window
Returns: { total_trades: 1847, breakdown: [{ party: "D", trade_count, trader_count, buys, sells, pct }] }

get_chamber_breakdown

Chamber Breakdown

Trade counts broken down by chamber (House vs Senate), with buy/sell split, trader count, volume, and percentage share. Optional date filter.

ParamTypeNote
days integer (1-3650) Look-back window
Returns: { total_trades: 1847, breakdown: [{ chamber: "House", trade_count, trader_count, buys, sells, pct }] }

get_aggregate_stats

Aggregate Stats

High-level database summary: total trades (all-time + 30/60/90d), distinct members tracked, average disclosure lag, and top 5 sectors.

ParamTypeNote
No parameters.
Returns: { total_trades_all_time: 35000, total_trades_30d, total_trades_60d, total_trades_90d, total_members_tracked, avg_disclosure_lag_days, top_sectors }

search_members_and_tickers

Search

Fuzzy search across politician names, ticker symbols, and asset names. Returns top matches ordered by trade count.

ParamTypeNote
query * string (min 1 char) Partial name or ticker
limit integer (1-50) Default 10
Returns: { query: "pelosi", members: [{ politician, party, chamber, trade_count }], tickers: [...] }

Why We Built This #

AI assistants are confidently wrong about congressional stock trading. Ask Claude, ChatGPT, or Gemini who the most active traders in Congress are, how often committee members trade stocks in their own sectors, or what Nancy Pelosi bought last quarter — and you will get a mix of stale 2021 numbers, invented statistics, and "I cannot provide real-time data" deflections. When the public discourse about congressional insider trading runs through chatbots that hallucinate the basic facts, the conversation gets dumber, not smarter.

We run the scrapers, parse the PTRs from the House Clerk and Senate eFD portals, join against committee assignments, and enrich with sector and S&P 500 comparisons. That data already powers our dashboard and alert feed. Exposing it as an MCP server means any AI client — any model, any vendor — can answer a question like "which Armed Services Committee members bought defense stocks this quarter" with primary-source numbers instead of a shrug.

We're also publishing a public benchmark that measures how much AI answers about congressional trading improve when a model has access to this MCP server versus relying on its training data alone. If you're a journalist, researcher, or engineer working with LLMs on civic-data questions, that benchmark is worth following — the delta is the whole point.

Free and open. No API key. No paywall. No usage cap. The data is public by law (STOCK Act, 2012) and the scrapers run on schedule whether you hit the endpoint or not. If this breaks or goes stale, email congresstradealertsapp@gmail.com.