Connect Claude to FlashAlpha - MCP and OAuth Setup Guide

Connect Claude to FlashAlpha - MCP and OAuth Setup Guide

Step-by-step guide for connecting Claude to FlashAlpha. Two endpoints, two setups: OAuth on claude.ai web (one-time sign-in, no API key) and apiKey on Claude Desktop, Cursor, Windsurf, and Claude Code CLI. Includes the most common error - "MCP Server not responding" - and exactly how to fix it.

T
Tomasz Dobrowolski Quant Engineer
May 29, 2026
29 min read
MCP Claude OAuth Setup Connectors

Connect Claude to FlashAlpha - MCP and OAuth Setup Guide

FlashAlpha exposes 40 tools (23 live + 17 historical-replay) over the Model Context Protocol so you can ask Claude about gamma exposure, dealer positioning, volatility surfaces, and greeks in plain English. There are two ways to connect, and the choice of endpoint is the single most common mistake. This guide walks both paths end-to-end.

Which Endpoint Do I Use?

FlashAlpha publishes two MCP endpoints with the same tool catalog but different authentication. Pick the row that matches the client you are configuring:

Client URL Auth
claude.ai (web) https://lab.flashalpha.com/mcp-oauth OAuth (one-time sign-in)
Claude Desktop https://lab.flashalpha.com/mcp API key per tool call
Claude Code (CLI) https://lab.flashalpha.com/mcp API key per tool call
Cursor / Windsurf / VS Code https://lab.flashalpha.com/mcp API key per tool call
The one rule

If you are using claude.ai in a browser, use the -oauth endpoint. For every other client, use the plain /mcp endpoint and let Claude know your API key in the first message.

Option 1 - Claude.ai Web or Claude Desktop (OAuth)

This is the cleanest setup. You sign in once with your FlashAlpha account, click Allow, and Claude calls FlashAlpha tools on your behalf with no API key handling. Works on Free, Pro, Max, Team, and Enterprise plans, in both claude.ai (browser) and the Claude Desktop app.

Browser vs Desktop: Both use the same FlashAlpha OAuth URL. The difference is the callback — Desktop finishes the flow with an "Open Claude?" browser dialog that deep-links back into the app, while the browser version stays in the tab. If you see "Open Claude?" mid-flow, click Open Claude; that is normal Desktop behaviour, not an error.
  1. Open claude.ai and sign in.
  2. Click your name in the bottom-left, then Settings.
  3. In the sidebar, click Customize, then Connectors. (On Team and Enterprise plans, your workspace owner adds connectors under Organization settings → Connectors.)
  4. Click the + button at the top of the connectors list, then Add custom connector.
  5. Fill in the dialog:
    • Name: FlashAlpha
    • Remote MCP server URL: https://lab.flashalpha.com/mcp-oauth — the -oauth suffix is required.
    • Advanced settings: leave empty. FlashAlpha uses Dynamic Client Registration, so Claude registers itself automatically - you do not need to paste a client ID or secret.
  6. Click Add. The connector appears in the list with a Connect button.
  7. Click Connect. Claude opens FlashAlpha's sign-in page (in-page redirect or popup depending on your browser).
  8. Sign in with the email and password from your FlashAlpha account, then click Allow on the consent page. If you are already signed in to flashalpha.com in the same browser, the sign-in step is skipped and you go straight to consent.
  9. You return to Claude and the FlashAlpha connector flips to Connected.

Verify it works: open a new chat and ask "What is my FlashAlpha account?" Claude will call the get_account tool and reply with your email, plan tier, and remaining daily quota.

No API key handling required. The OAuth endpoint resolves your FlashAlpha account from the signed token and forwards your stored API key internally on every tool call. Your key never appears in Claude.

Option 2 - Claude Desktop (apiKey)

Claude Desktop talks to local MCP servers via its config file. FlashAlpha exposes a second endpoint, /mcp, where each tool takes an apiKey argument. The setup is two steps: add the URL to the config, then tell Claude your key once per chat.

  1. Find your Claude Desktop config file:
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    Create the file if it does not exist.
  2. Add the FlashAlpha server entry. If the file already has an mcpServers section, merge the flashalpha key in:
    {
      "mcpServers": {
        "flashalpha": {
          "url": "https://lab.flashalpha.com/mcp"
        }
      }
    }
  3. Save the file and fully quit and reopen Claude Desktop. Reload is not enough - the config is read once at startup.
  4. Open a new chat. In your first message, give Claude your API key in plain text:
    My FlashAlpha API key is fa_xxxxxxxxxxxxxxxxxxxxxxxx. Use it on every FlashAlpha tool call.
    Claude remembers the key for the duration of the chat and passes it as the apiKey argument on every tool invocation.

Verify: ask "What is my FlashAlpha account?" in the same chat. Claude calls get_account with your key and reports the result.

Why isn't the key in the config? Claude Desktop's HTTP-transport MCP config has no env or headers pass-through that maps to a tool argument. The cleanest place to put the key is the chat itself - or use the OAuth endpoint instead, which removes the key from the loop entirely.

Cursor, Windsurf, VS Code, Claude Code CLI

All four clients use the same /mcp URL and the same chat-paste pattern for the API key. The only difference is where you add the server URL:

  • Claude Code (CLI): claude mcp add flashalpha --transport http https://lab.flashalpha.com/mcp
  • Cursor: Settings → MCP Servers → Add Server. Name: flashalpha, URL: https://lab.flashalpha.com/mcp.
  • Windsurf: Cascade → MCP → Add Server, then paste the same URL.
  • VS Code (Copilot / Continue): add the same { "url": "https://lab.flashalpha.com/mcp" } block to your MCP settings file.

Troubleshooting

What you see What it means Fix
"MCP Server not responding" on claude.ai You pasted /mcp (the apiKey endpoint) into a custom connector dialog that requires OAuth. Edit the connector and change the URL to exactly https://lab.flashalpha.com/mcp-oauth — the -oauth suffix is what triggers the OAuth flow.
"A server with this URL already exists" when clicking Add custom connector, but no FlashAlpha entry is visible in your Connectors list Claude.ai recorded the URL during an earlier attempt that failed mid-handshake. The orphaned record lives on Anthropic's side but never surfaced as a visible connector for you to manage. Try, in order: (1) hard-refresh claude.ai (Ctrl/Cmd+Shift+R) and retry Add; (2) open claude.ai in an incognito / private window, sign in, and Add from there; (3) sign out of claude.ai entirely and sign back in. If all three still error, contact Anthropic support with the ofid_... reference from the original failure and ask them to clear the orphaned record for https://lab.flashalpha.com/mcp-oauth on your account.
"A server with this URL already exists" and FlashAlpha is visible in your Connectors list Earlier attempt registered the entry but didn't finish the OAuth handshake. Claude.ai refuses to add a duplicate. Close the Add dialog, click the existing FlashAlpha entry, and use Connect / Reconnect. If the entry is stuck, open its ··· menu and choose Delete, then re-add it fresh.
Tool calls fail with "apiKey is required" on Claude Desktop The config is right, but Claude has not been told your key in this chat. Paste "my FlashAlpha apiKey is fa_..." as your first message in a fresh chat.
"Unauthorized" after the OAuth flow has worked for hours The OAuth access token expired and the refresh has not happened yet. Open Settings → Connectors → FlashAlpha and click Reconnect.
Tool calls return HTTP 429 You hit your daily quota (Growth = 2,500/day, Free = 5/day). Wait for the midnight-UTC reset, or upgrade at flashalpha.com/pricing.
"no_data" on get_gex, get_levels, get_volatility US options markets are closed (weekends, holidays, or before 09:30 ET). Not a connector bug. Try the same call during US market hours.
Claude Desktop ignores the new config You reloaded but did not fully quit the app. Quit Claude entirely (tray icon → Quit on Windows, Cmd-Q on macOS) and relaunch. The config is read once at startup.
Still stuck? Reply to the FlashAlpha support email with (a) the URL you pasted, (b) the exact error wording, and (c) which client you are using. The fix is almost always one of the rows above.

What You Get Once Connected

All 23 live tools work the moment the connector is green. The highlights:

  • Exposure analytics: get_gex, get_dex, get_vex, get_levels, get_exposure_summary, get_narrative.
  • Volatility & pricing: get_volatility, get_stock_summary, calculate_greeks, solve_iv.
  • Market data: get_stock_quote, get_tickers, get_option_chain, get_account.
  • Historical replay (Alpha tier): 17 additional tools that mirror the live ones with an at=<timestamp> argument back to April 2018.

Four ready-made workflow prompts surface as one-click recipes in the client UI:

  • analyze_exposure(symbol) — full dealer-positioning walkthrough.
  • vrp_regime_check(symbol) — VRP percentile and strategy scoring.
  • historical_comparison(symbol, reference_date) — current vs. a past date, VIX-adjusted.
  • zero_dte_brief(symbol) — pre-session 0DTE brief.

Try a first prompt: "Show me the gamma exposure for SPY and tell me where the gamma flip is." Or "What is the volatility term structure on TSLA today?"

Real Conversations

What this actually looks like in practice — three unedited Claude Desktop conversations against live FlashAlpha data. Claude is calling FlashAlpha tools on every reply; you are not pasting JSON or interpreting raw chains.

Claude Desktop conversation: "Give me 0DTE brief for TSLA". Claude returns a structured brief with TSLA at $437.20, gamma flip at $437.08, IV calls/puts, call wall, put wall, vol trigger, expected move, and VWAP - each with quantified percentages and a one-line interpretation.
Prompt: "Give me 0DTE brief for TSLA." Claude calls zero_dte_brief and produces a pre-session brief with gamma flip, walls, vol trigger, expected move, and VWAP - all derived from live computed exposure, not raw option chain data.
Claude Desktop conversation: "Any signals for long or short?". Claude responds with a directional read based on gamma exposure - identifying the gamma flip relationship, positioning bias, and a conditional trade thesis tied to specific strikes and vol trigger levels.
Follow-up: "Any signals for long or short?" Claude reads the dealer positioning from the prior context, calls additional FlashAlpha endpoints if needed, and writes a conditional directional thesis with specific levels - not generic options content.
Claude Desktop conversation: "Can you screen for some stocks with negative gamma? Avoid stocks using trading signals present". Claude takes the screening criteria and walks through the methodology of using FlashAlpha screening endpoints to surface tickers in negative gamma regimes.
Screening prompt: "Can you screen for some stocks with negative gamma?" Claude uses the FlashAlpha screener tools to surface tickers in negative-gamma regimes - the same query that would take 20+ lines of pandas against a raw options API.
Why this works

FlashAlpha returns computed analytics - gamma exposure, dealer regime, vol trigger, walls - not raw option chains. Claude can reason directly on the output without burning context on JSON parsing or strike-by-strike arithmetic. The same query against a raw-data provider would need a wrapper script first.

Frequently Asked Questions

Different clients ship OAuth support on different timelines. Claude.ai web and recent Claude Desktop versions handle the full OAuth + Dynamic Client Registration dance; older Desktop builds and most third-party clients (Cursor, Windsurf, VS Code, Claude Code CLI) use the simpler per-tool apiKey argument. The /mcp endpoint covers the apiKey path; /mcp-oauth covers OAuth. Both expose the same 40 tools and return identical responses.
Yes. Custom OAuth connectors are available on Free, Pro, Max, Team, and Enterprise plans. The flow is identical on every tier - the only difference is that Team and Enterprise workspace owners add connectors under Organization settings → Connectors instead of the personal Customize panel.
Almost always because the URL is /mcp instead of /mcp-oauth. The /mcp endpoint accepts anonymous requests and expects an apiKey argument that Claude.ai's custom-connector flow never sends, so the first call hangs and Claude reports the server as unresponsive. Change the URL to https://lab.flashalpha.com/mcp-oauth in the connector settings and reconnect.
There are two flavours of this error. If you can see a FlashAlpha entry in your Connectors list, close the Add dialog, click the existing entry, and use Connect / Reconnect. If it's stuck in a broken state, delete it from its ··· menu and add it again. If no FlashAlpha entry is visible, Claude.ai is holding an orphaned record on its side from an earlier failed handshake. Hard-refresh the page (Ctrl/Cmd+Shift+R), or open claude.ai in an incognito window and Add from there, or sign out and back in. If those don't clear it, contact Anthropic support with the ofid_... reference from the original error and ask them to remove the stuck record.
Claude Desktop's HTTP-transport MCP config supports a URL only - it has no env or headers field that maps to a tool argument. The FlashAlpha API key is a per-tool argument (apiKey), so it has to come from the conversation, not the config. Tell Claude your key in the first message of a chat and it will remember it for the session. If you would rather not paste it at all, use the OAuth endpoint on claude.ai web.
Nothing leaves FlashAlpha. The OAuth resource server validates Claude's bearer token, identifies your account from the sub claim, looks up your stored API key in the FlashAlpha database, and forwards it on the internal upstream call. The key is never written into a JWT, never sent back to Claude, and never persisted outside FlashAlpha.
Sign up at flashalpha.com/pricing - the free tier needs only email and password, no credit card. Your API key appears on your /profile page. The same key works for both endpoints.

Live Market Pulse

Get tick-by-tick visibility into market shifts with full-chain analytics streaming in real time.

Intelligent Screening

Screen millions of option pairs per second using your custom EV rules, filters, and setups.

Execution-Ready

Instantly send structured orders to Interactive Brokers right from your scan results.

Join the Community

Discord

Engage in real time conversations with us!

Twitter / X

Follow us for real-time updates and insights!

GitHub

Explore our open-source SDK, examples, and analytics resources!