LuxAlgo MCP

MCP serverAI & models

This integration gives your AI access to the LuxAlgo Library, an encyclopedia of trading and technical analysis. Once added, your AI can look up and explain trading concepts and technical analysis topics whenever you ask. It is free to use and needs no key.

Use LuxAlgo MCP in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add LuxAlgo MCP and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use LuxAlgo MCP

Details

Available today. Use it from your connected AI after setup.

Add the integration, then start asking your AI trading or technical analysis questions. No sign-up or key is required to begin.

LuxAlgo MCPStart free

What your AI can do with it

  • Look up trading and technical analysis terms
  • Explain technical analysis concepts
  • Answer trading questions using the LuxAlgo Library
  • Use the library without an account or key

Install LuxAlgo MCP

The server’s own address, for the clients that take one directly. Or connect Ahel once and every client you use reads it from one address, with the account kept on Ahel rather than in each client’s config.

  • Claude Code

    claude mcp add --transport http --scope user luxalgo-mcp 'https://mcp.luxalgo.com/mcp'

    Run it once in your project, then open /mcp to approve any sign-in the server asks for.

  • Claude Desktop

    https://mcp.luxalgo.com/mcp

    Add a custom connector in Settings, paste this address, and approve the sign-in.

  • Cursor

    cursor://anysphere.cursor-deeplink/mcp/install?name=luxalgo-mcp&config=eyJ1cmwiOiJodHRwczovL21jcC5sdXhhbGdvLmNvbS9tY3AifQ==

    Open the link and Cursor adds the server at that address.

  • ChatGPT

    https://mcp.luxalgo.com/mcp

    In Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.

  • Codex

    codex mcp add luxalgo-mcp --url 'https://mcp.luxalgo.com/mcp'

    Run it once, then sign in with codex mcp login luxalgo-mcp if the server asks for an account.

From the project's README

As published by luxalgo/luxalgo-mcp-server in README.md.

 

Library · Brokers · Edge Stats · Market Trackers · Challenge Simulator · Prop Firms · Vela for Developers · npm · Endpoint

LuxAlgo MCP is a LuxAlgo open-source project. Overview and setup: luxalgo.com/mcp.

It puts the LuxAlgo ecosystem behind a single MCP server: an encyclopedia of trading and technical analysis, your LuxAlgo trade journal, read-only access to your own brokerage accounts, hosted session statistics with a sample size on every number, the public record of US markets (congressional trades, insider filings, lobbying, contracts, patents and more, with a primary-source link on every row), a Monte Carlo challenge simulator, and a live prop-firm directory. No API key for anything hosted: the public tools are free and read-only, the Trade Journal and account tools use your LuxAlgo sign-in, and the local broker tools use your own keys and never send them anywhere.

claude mcp add --transport http luxalgo https://mcp.luxalgo.com/mcp

What's inside

AreaWhat you get
LibraryThe encyclopedia of trading and technical analysis: hundreds of concept pages with formulas, the full indicator catalog with families and tags, and Pine Script® sources where publicly served.
Trade Journal (sign-in)Your own journal in the LuxAlgo app: the dashboard (metrics, Edge Score, equity curve), the P&L calendar, breakdowns by weekday / hold time / symbol / tag and more, every trade with its fills and annotations, day notes — and the writes that keep it alive: log fills by hand, annotate trades (tags, mistakes, rating, stop and target, review), write notes. Always as you, on your data; the app owns the rules.
Brokers (local only)Read-only access to your own accounts across 22 brokers and exchanges via broker-sdk: balances, positions, trade history, FIFO performance stats. Keys live in your MCP client config as env vars and never leave your machine. The hosted endpoint does not carry these tools, on purpose.
Edge StatsHosted session statistics from the open-source edge-stats engine: how often a setup actually worked (gap fills, opening-range breakouts, day-of-week effects, event days) with the sample size and a Wilson 95% confidence interval on every number. A nightly build runs the real engine over free market data and publishes only derived statistics; these tools serve them verbatim.
Market TrackersThe public record of US markets from primary sources only: congressional trades, insider (Forms 3/4/5) transactions, 13F holdings, federal contracts and grants, lobbying filings, FINRA short-sale volume, granted patents, clinical trials, FDA drug events, CFTC positioning, federal bills, FEC campaign finance, hearing transcripts, Federal Reserve communications, committee assignments, Wikipedia pageviews. Read straight from the pipeline's CC0 dumps — live tree plus deep-history archives — with provenance.sourceUrl on every row. Data only: no signals, scores, or predictions.
Challenge SimulatorThe open-source prop-firm-sim Monte Carlo engine, running locally inside the server. Your stats, or your real R-multiple trade series, through a firm's exact ruleset: pass probability with confidence intervals, expected attempts and cost, EV over the funded horizon, optimal-risk sweeps, cross-challenge comparison. Deterministic under seed, every assumption disclosed.
Prop Firm DirectoryThe live data the simulator draws from: firms, funded-account challenges with their full rulebooks (account sizes, fees, steps, profit splits, drawdown modes, trading restrictions), and current offers.
Charts (your browser)Not a tool: the chart you draw with what the tools return. The open-source core of Vela by LuxAlgo runs the Pine Script® that library_get_source_code hands back and paints the fills that broker_trades lists, in a browser tab, on your machine. How the loop works.

Install

The hosted server is one URL:

https://mcp.luxalgo.com/mcp

Claude (web, desktop, mobile)

Customize → Connectors → Add custom connector, URL https://claude.mcp.luxalgo.com/mcp, and under Authentication choose Required when the server asks. Claude connects anonymously, every keyless tool works right away, and the sign-in card only appears the first time you call an account tool. This Claude-only address exists because Claude.ai otherwise opens the OAuth window at connect time for any server whose OAuth metadata it can discover (claude-ai-mcp#1013); it serves the same tools with that metadata hidden until a sign-in is actually needed. Every other client uses https://mcp.luxalgo.com/mcp.

Claude Code

claude mcp add --transport http luxalgo https://mcp.luxalgo.com/mcp

Cursor

Use the Install in Cursor button above, or add this to .cursor/mcp.json:

{
  "mcpServers": {
    "luxalgo": {
      "url": "https://mcp.luxalgo.com/mcp"
    }
  }
}

Any other MCP client

Point your client's MCP config at the hosted URL:

{
  "mcpServers": {
    "luxalgo": {
      "url": "https://mcp.luxalgo.com/mcp"
    }
  }
}
ClientWhere to add it
Cursor.cursor/mcp.json, or the install button above
Claude Desktopclaude_desktop_config.json
VS CodeInstall button above, or MCP settings
Windsurf~/.codeium/windsurf/mcp_config.json
Zedsettings.json under context_servers
WarpSettings → Agents → MCP servers
LM Studiomcp.json
OpenCodeopencode.json
Gemini CLI~/.gemini/settings.json

Local (stdio)

Runs every hosted tool locally, and unlocks the broker tools. Set read-only credential env vars for the brokers you use. Any subset works: a broker connects when all of its vars are set, and with no vars at all the broker tools simply stay unconfigured.

{
  "mcpServers": {
    "luxalgo": {
      "command": "npx",
      "args": ["-y", "@luxalgo/mcp"],
      "env": {
        "BROKERS_ALPACA_API_KEY": "…",
        "BROKERS_ALPACA_API_SECRET": "…",
        "BROKERS_KRAKEN_API_KEY": "…",
        "BROKERS_KRAKEN_API_SECRET": "…",
        "BROKERS_HYPERLIQUID_WALLET_ADDRESS": "0x…"
      }
    }
  }
}

Env var names derive from each broker's credential fields: BROKERS_<BROKER>_<FIELD> (for example BROKERS_OKX_PASSPHRASE, BROKERS_IBKR_FLEX_FLEX_TOKEN). The broker_setup tool lists every supported broker, its exact variables, and a one-line guide to creating each key with read-only scope, which is all this server ever needs.

Signing in with LuxAlgo (optional)

Almost everything here is keyless and works without an account. The tools in the Account and Trade Journal sections below need to know who you are; they use your LuxAlgo account through standard OAuth 2.1, with app.luxalgo.com as the authorization server. Nothing is required up front: every client can connect, list tools and use the public ones anonymously, and sign-in is only requested when you first call an account tool.

Hosted (ChatGPT, Claude, Cursor, any remote connector). The server advertises its protected-resource metadata and answers an unauthenticated account-tool call with a 401 + WWW-Authenticate challenge; MCP clients handle the rest (discovery, PKCE, consent screen in your browser) and keep the token for you. Each tool also declares its policy in tools/list (securitySchemes: noauth for public tools, oauth2 for account tools), so ChatGPT's per-tool linking works as well. Clients may identify themselves via Client ID Metadata Documents or Dynamic Client Registration — the app accepts both. One client-side exception: Claude.ai/Desktop connectors sign in at connect time whenever OAuth metadata is discoverable, regardless of their Authentication setting, so they get their own address, https://claude.mcp.luxalgo.com/mcp, whose metadata is only reachable from the 401 (see Install).

Local (stdio). The server running on your machine is itself the OAuth client. Sign in once:

npx -y @luxalgo/mcp login     # opens your browser; tokens are stored under your user config dir (0600)
npx -y @luxalgo/mcp status    # who is signed in, token expiry
npx -y @luxalgo/mcp logout

Tokens live in ~/.config/luxalgo/mcp-auth.json (%APPDATA%\luxalgo\mcp-auth.json on Windows, or LUXALGO_MCP_AUTH_FILE), are refreshed automatically, and are only ever sent to the LuxAlgo app. If your MCP client supports URL-mode elicitation (MCP 2026-07-28), you can skip the command: the first account-tool call asks the client to open the sign-in page and continues once you approve. Otherwise the tool answers with the challenge and the login hint.

What the token is for. This server never decides what you are entitled to — its code is public, so any such check would be decorative. Instead, once you are signed in, every request a tool makes to the LuxAlgo app carries your token, and the app resolves your account and plan from it exactly as it does when you use the web app. Public tools work without it; with it, the app can tailor what they return. When the app declines — no valid sign-in (401) or a feature outside your plan (403) — the tool reports that, naming the permission involved.

Tools

Library

ToolDescription
library_searchOne search over concepts (alias-aware) and indicators
library_get_conceptFull concept page as markdown
library_get_indicatorIndicator detail: body, family, concepts, source code availability
library_get_source_codeFull source code when publicly served, fetched only on demand; otherwise chart_url, the indicator on a Vela chart
library_list_conceptsPaginated concept roster, optionally per family
library_list_indicatorsFiltered, paginated browse (family, concept, tags, platform, tier) with server-side sort
library_list_tagsThe indicator tag vocabulary, for the tags filter
library_list_familiesThe taxonomy backbone with counts
library_get_familyA family hub as markdown plus concept roster

Library outputs are compact JSON with canonical urls for citation. Concept and family pages are also directly fetchable as markdown: append .md to any concept URL.

Account (sign-in required)

ToolDescription
luxalgo_accountThe signed-in user's plan tier, entitlements (alerts, historical bars, AI credits, …) and profile basics — so an agent can tailor answers to what the plan actually allows

Trade Journal (sign-in required)

Your own trade journal in the LuxAlgo app — the same accounts, trades, annotations and notes the app shows — read and written as you. Dates are YYYY-MM-DD day keys in your journal timezone (journal_list_accounts reports it); account filters take ids from the same call.

ToolDescription
journal_list_accountsJournal accounts (broker-synced, imported or manual; currency, initial balance, lot method, last sync, archived state) and the journal timezone — the first call, since every accounts filter takes these ids
journal_overviewThe dashboard for a window: performance metrics, Edge Score, per-day P&L, equity curve, open positions, accounts and settings; compare adds the previous equal-length window
journal_calendarOne month of the P&L calendar: day cells, weekly and monthly totals, trading and winning days
journal_breakdownClosed trades grouped by weekday, time of day, hold time, symbol, side, position size, tag, rating and asset class — where the P&L comes from
journal_list_tradesTrade summaries, keyset-paginated; filter by accounts, open-day window, symbol, direction, status, tag; sort by opened/closed time, net or gross P&L, duration, quantity, symbol or rating, either direction
journal_get_tradeOne trade in full: fills (reported values, corrections, hidden), per-exit P&L, every annotation
journal_get_dayA single day's stats, trades and notes
journal_list_tagsThe user's annotation vocabulary — tags, mistakes, playbooks with usage counts — so new annotations reuse existing words
journal_search_notesDay notes and trade notes as one newest-first stream; text query, day window, symbol and account filters, paginated
journal_add_tradeLog a trade by hand: its fills into a manual or import account; returns the resulting trade(s)
journal_update_tradeAnnotate a trade: notes, tags (replace or add/remove), mistakes, playbook, rating, stop loss, profit target, reviewed
journal_write_noteAdd a note to a day
journal_update_noteReplace a day note's text or move it to another day

The journal tools and luxalgo_account are the only tools that need a LuxAlgo account; see Signing in with LuxAlgo. Without a sign-in they return an OAuth challenge instead of data — never a silent fallback. The write tools act only as the signed-in user and only on that user's journal; the app validates and owns every change.

Brokers (local stdio only)

ToolDescription
broker_setupSupported brokers, their env vars (set or unset, never values), read-only key guides
broker_accountsConnected accounts: broker, currency, equity, cash
broker_positionsOpen positions with market values, asset class, entry price; negative quantity means short
broker_tradesTrade history, newest first; filter by broker or symbol
broker_statsTotal equity, equity by broker, top positions, FIFO win rate and realized PnL
broker_refreshBypass the 5-minute cache and re-fetch now

Read-only by construction: the SDK's root export has no trading endpoints, the server never writes secrets anywhere, and per-broker failures are reported alongside results, never silently dropped.

Edge Stats

Hosted session statistics from the open-source edge-stats engine, precomputed nightly:

ToolDescription
edge_symbolsWhat the hosted store covers: symbols, session calendars, coverage windows, last build
edge_presetsThe catalog of precomputed questions, each stating in plain language what its number means
edge_reportOne result in the engine's full honesty envelope: estimate, N, Wilson 95% CI, minimum-sample guards, stability split, per-year counts, distribution, disclaimer

Every number arrives with its sample size — the engine has no code path that returns a percentage without one. Results are historical conditional frequencies, never predictions. For arbitrary composed queries or your own market data, run edge-stats locally; its own MCP server exposes the full engine over your local store.

Market Trackers

ToolDescription
trackers_datasetsThe catalog: every dataset's row count, freshness, years with data (live vs deep-history archive), ticker-searchability; pass dataset for its field roster, filterable paths, caveats, per-year coverage, source health and dump URLs
trackers_querySearch one dataset by ticker, free text, exact field values (where, dot paths) and event-date range, choosing which years to read; newest/oldest ordering with paging
trackers_latestThe newest daily delta of a dataset (today's insider filings, this week's congressional disclosures), optionally narrowed by ticker or text
trackers_tickerOne ticker across every ticker-bearing dataset for a year: per-dataset counts with the newest rows — a public-record dossier

The data is the CC0 output of LuxAlgo/market-trackers, published daily to LuxAlgo/market-trackers-data: year-sharded gzipped JSON in the repository's live tree, plus deep-history shards attached to the data repo's GitHub Releases and indexed in its archives.json. The server streams shards row by row (never loading a whole file) under a per-call budget of compressed bytes, so a deep-history year (often 30–60 MB compressed) is read one at a time. Amounts disclosed as ranges stay ranges; ticker mappings for contracts, lobbying, trials, FDA events and patents are best-effort against a curated map of public companies; every row keeps its primary-source deep link.

Challenge Simulator

Runs locally inside the server:

ToolDescription
propfirms_list_simulatableEvery simulatable firm and challenge in the live directory, provenance-disclosed
propfirms_challenge_rulesOne challenge's full encoded ruleset (drawdown modes, consistency, payout gating, citations), editable and re-simulatable inline
propfirms_simulateMonte Carlo of your stats (win rate, avg win, trades/day, risk sizing) through a firm's exact ruleset and funded horizon: pass probability with CI, which rule kills attempts, expected attempts and cost, EV, payout probability
propfirms_simulate_tradesSame, from your real R-multiple trade series; block bootstrap preserves your streaks
propfirms_optimal_riskRisk sweep: pass-optimal vs EV-optimal risk per trade (they differ)
propfirms_compareSame trader across up to 12 challenges, EV-sorted (not a ranking)
propfirms_pass_ratesThe site's reference-archetype odds, recomputed live (seed 42, 10k paths)
propfirms_validate_strategyScreen one strategy across every simulatable challenge against an explicit pass bar

Every simulation result carries its assumptions, unsimulated-rule flags, seed, and engine version. Results are distributions under stated assumptions, never promises. The engine runs locally; firm rules adapt live from the directory, and inline specs simulate fully offline.

Prop Firm Directory

The live directory the simulator draws from, queryable directly:

ToolDescription
propfirms_searchSearch firms; firm filters (platforms, markets, payments, Trustpilot, country availability) compose with nested challenge and offer filters, and include nests matching children
propfirms_getOne firm's full dossier: profile, every challenge, live offers, written overview
propfirms_search_challengesSearch challenges by rules (size, fee, steps, profit split, drawdown, trading restrictions) and parent firm; can attach applicable live offers
propfirms_search_offersCurrent discounts and promo codes, resolvable per firm or per challenge

Charts, in your browser, with Vela

Every tool above returns text and JSON. When the answer wants a chart, draw it with the open-source core of Vela by LuxAlgo (@luxalgo/vela, Apache-2.0, GitHub), the charting library behind Vela: a headless chart with its own WebGL2 renderer that takes bars you already have, or fetches them from keyless public providers, and runs indicator scripts through pluggable engines. Pine Script® lives in the @luxalgo/vela-pinets addon, which is what closes the loop with the Library: library_get_source_code hands an agent an indicator's exact Pine source, and Vela's open-source core executes that source on a chart.

To open an indicator on Vela, LuxAlgo's next-generation charting platform at vela.luxalgo.com/chart, give the user the chart_url that library_get_source_code returns when the indicator's code runs only on LuxAlgo.

Not a mockup: the Library's SuperTrend source as returned by library_get_source_code, executed by @luxalgo/vela-pinets on a @luxalgo/vela 0.6 chart and screenshotted in headless Chromium. The bars are a labelled synthetic sample; point data at your own or register a provider for live ones.

The whole demo is two script tags and five lines. source is the source field of a library_get_source_code result:

<div id="chart" style="height: 480px"></div>
<script src="https://cdn.jsdelivr.net/npm/@luxalgo/vela@0.6.15/dist/vela.global.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@luxalgo/vela-pinets@0.2.10/dist/vela-pinets.global.min.js"></script>
<script>
  const chart = new Vela.Vela('#chart', { data: bars, timeframe: '1D', theme: 'dark' }); // bars: [{ time, open, high, low, close, volume? }]
  chart.registerEngine('pine', new VelaPinets.PineEngine());
  chart.addIndicator(source);
</script>

With a bundler it is the same three calls over import { Vela } from '@luxalgo/vela' and import { PineEngine } from '@luxalgo/vela-pinets'; see Vela's quickstart. The same chart paints your own trades: Trade Journal takes the shape broker_trades returns and draws entries, exits and P&L labels through Vela's native-indicator API, engine-free, in one component you can lift as is.

Where each piece runs. This matters because it is the opposite of how the rest of this server works:

Shortened here. Read the whole README on GitHub.

Signals

GitHub stars
89
Forks
32
Last commit
Oct 2026
Weekly_downloads
60 weekly_downloads
Advanced
Delivery
luxalgo-mcp-server MCP server → your Ahel connector (mcp.ahel.ai) → your AI.
Item type
mcp-server
Key
io-github-luxalgo-luxalgo-mcp-server
Source
github.com/luxalgo/luxalgo-mcp-server
Hosted endpoint
https://mcp.luxalgo.com/mcp