Bullrun MCP

MCP serverAI & models

Bullrun lets your AI research stocks from markets worldwide, get machine-learning forecasts, and track your portfolio in one conversation. It brings together stock research, valuation signals, and screeners so you can go from a question about a company to a fuller picture without switching tools.

Use Bullrun MCP in Claude, ChatGPT or Ahel Desktop

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

Also: Claude Code · Cursor · Codex

Then ask your AI: use Bullrun MCP to screen stocks

Details

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

After adding Bullrun, ask your AI to research a stock you follow or run a screener to surface new ideas. You can also start tracking your portfolio to keep your holdings and research in one place.

Bullrun MCPStart free

What your AI can do with it

  • Research stocks from markets around the world
  • Get machine-learning forecasts for stocks
  • Check valuation signals on companies you are researching
  • Screen the market for stocks that match your criteria
  • Track your portfolio alongside your research

Install Bullrun 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 bullrun-mcp 'https://mcp.bull-run.org/mcp'

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

  • Claude Desktop

    https://mcp.bull-run.org/mcp

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

  • Cursor

    cursor://anysphere.cursor-deeplink/mcp/install?name=bullrun-mcp&config=eyJ1cmwiOiJodHRwczovL21jcC5idWxsLXJ1bi5vcmcvbWNwIn0=

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

  • ChatGPT

    https://mcp.bull-run.org/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 bullrun-mcp --url 'https://mcp.bull-run.org/mcp'

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

From the project's README

As published by ferinator/bullrun-mcp in README.md.

A hosted remote MCP server that turns Claude (and other MCP clients) into a research analyst over global stocks, ETFs, company risk, the global macro backdrop and your own portfolios, with Bullrun's own machine-learning valuation model built in.

Endpointhttps://mcp.bull-run.org/mcp — Streamable HTTP, OAuth 2.1 + PKCE
Web apphttps://bull-run.org
Official MCP Registryorg.bull-run/bullrun
Glama connectorhttps://glama.ai/mcp/connectors/org.bull-run/bullrun
Privacy policyhttps://bull-run.org/privacy

Bullrun is primarily a hosted service — there is nothing to install and no API key to manage for normal use. You point your MCP client at the remote endpoint and sign in with Google. This repository holds the connector's public metadata (server.json), connection docs, and a local stdio build of the MCP layer for directory/security checks. The Bullrun application and data services remain maintained separately.

Connect

Claude (web, Desktop, mobile) — requires a paid Claude plan:

  1. Settings → Connectors → Add custom connector
  2. Name it Bullrun, paste https://mcp.bull-run.org/mcp, and add it.
  3. Click Connect and complete the Google sign-in / authorize step.

Claude Code:

claude mcp add --transport http bullrun https://mcp.bull-run.org/mcp

Full setup for Cursor, VS Code, and the MCP Inspector is in docs/mcp-connect.md.

What you can do once connected

Public market-data tools work for any connected client. The portfolio tools resolve your own Bullrun account after Google sign-in; the two draft tools require a Bullrun Pro account.

Stocks

ToolWhat it does
screen_stocksScreen the global universe by sector / industry / country / market cap; sort by P/E, dividend yield, revenue or revenue growth.
get_stock_metricsConsolidated snapshot for one ticker — identity (ISIN/LEI/CIK), latest price, valuation, most recent financials, description.
get_financial_history1–15 fiscal years of annual/quarterly statements, per-share metrics, margins, CAGRs and consistency checks.
get_quality_moat_metricsROIC, ROIC-vs-WACC spread, ROE/ROA, accruals, cash conversion, capex intensity, dividend payout/growth, buyback proxy.
get_forward_estimatesConsensus revenue / EPS / EBITDA, guidance, estimate revisions, and derived forward P/E & PEG context.
get_operating_kpisDomain KPIs — ARR, net revenue retention, RPO, billings, customer counts, payment & cross-border volume.
get_revenue_breakdownSegment, geography, product or customer revenue splits.
get_earnings_call_transcriptSpeaker-tagged earnings-call transcript chunks, fiscal-period filters and text search.

Bullrun valuation model

Bullrun's own LightGBM models, rescored every night across the global stock universe. The valuation model predicts the P/E (or price/sales, for companies without earnings) that businesses with similar fundamentals typically trade at a year out; the gap is that model-typical multiple over the current one, minus one. The forecast model is a relative 1-year return-rank signal. Both run on quarterly and on annual financials, so most non-US companies are covered too.

ToolWhat it does
get_valuation_modelFor 1-10 tickers: valuation gap, implied model-typical P/E vs current P/E, percentile and rank in the scored universe, and the forecast signal, with data-quality and financials-through date.
screen_valuation_modelRank the universe (market cap ≥ $100M) from either end: furthest below or above the typical multiple, or strongest/weakest forecast, filtered by sector, country and exchange.

The valuation gap describes how a stock is priced next to fundamentally similar companies. In walk-forward tests it has not predicted forward returns, and the tools say so in every response: it is context for a decision, not a price target.

Company risk and relationships

ToolWhat it does
get_company_riskA 0-100 composite risk score and six mechanism dials (market expectation, operating pressure, cash conversion, leverage & coverage, competitive position, concentration), each with band, direction, driving input and explanation; filing-derived risk factors by severity; identified supplier concentration (share of cost base covered, HHI, sole-source count); recent material events.
get_company_relationshipsNamed competitors, suppliers, customers and partners, each with its ticker when listed, VERIFIED (primary filing/source) or SUGGESTED status, confidence, sole-source flag and quantified dependence where disclosed, e.g. Cirrus Logic gets 91% of its revenue from Apple.
screen_risk_boardRank ~9,000 scored companies by the composite or any one dial, filtered by band, sector, country and how many dials are measured, with sector and country averages.
get_risk_moversCompanies whose composite crossed into a different band in the last N days, worsening or improving.

Bands run Contained → Normal → Elevated → Stretched → Acute and describe measured strain, never a buy/sell view. A dial with no reading is reported as unmeasured, never as safe.

Global markets and macro

ToolWhat it does
get_global_markets_overviewOne-call briefing: 19 world equity indices (live intraday when open), Fed/ECB/BoE/BoJ/SNB/BoC policy rates and next decisions, 16 sovereign 10Y yields, 20 FX pairs, oil/gas/gold/copper, headline macro tiles (global GDP, inflation, debt, VIX, DXY, 2s10s), the economic calendar, news and the US housing balance.
get_country_macroA country's 0-100 macro stress score across six pillars (labour, housing, credit, fiscal, external, cycle), with every input's value, period and source (OECD, IMF, BIS, World Bank, Eurostat).
get_macro_indicatorsRank or compare ~200 countries on GDP growth, inflation, government debt, unemployment, youth unemployment, house prices vs income and rents, the BIS credit gap, household debt, business/consumer confidence or macro stress.
get_macro_historyDecades of history for any of those series, by code, by name ("Fed", "Brent", "Germany 10Y", "S&P 500") or by indicator + country, with 1M/3M/1Y/5Y changes and resampled points.

ETFs and funds

Built for the way European investors actually shop for funds: by ISIN, by tracked index, and by total cost — with venue duplicates collapsed so one fund listed on six exchanges reads as one choice rather than six.

ToolWhat it does
screen_etfsScreen the whole fund universe by expense ratio, AUM, yield, trailing returns, volatility, liquidity, top-10 concentration and fund age, combined with issuer, index, domicile, UCITS status, distribution policy and currency hedging — plus look-through (holdingSearch) to find funds by what they hold.
get_etf_index_group"Cheapest way to track the S&P 500 / MSCI World?" — every fund on one index, cheapest first, one row per fund with its venues, and an explicit count of funds that publish no fee.
get_etf_fundResolve an ISIN (or any venue ticker) to the fund and every exchange it trades on.
get_etf_filter_optionsThe exact values the categorical filters accept, so a screen never silently returns nothing on a guessed string.
search_etfsLook up a known fund by name, ticker or ISIN, with classification, index, cost and yield filters.
get_etf_snapshotModular snapshot for one listing — identity, classification, market, NAV/AUM, costs, income, benchmark.
get_etf_holdingsPaginated constituents with an explicit partial-coverage contract.
get_etf_exposuresHoldings look-through to sector / country / issuer exposure.
get_etf_timeseriesPrice history, with unavailable NAV / total-return / premium-discount series named rather than synthesized.
get_etf_riskVolatility, drawdown, Sharpe/Sortino/Calmar, VaR, and benchmark-relative beta and tracking error.
compare_etfsSide-by-side cost, performance, risk and holdings comparison.
analyze_etf_overlapShared holdings and a weighted lower-bound overlap between funds.
simulate_etf_costDeterministic multi-year cost scenario from expense ratio, spread, commission and contributions.
analyze_portfolio_fitHow a candidate fund would fit your existing portfolio. (sign-in)
query_etfsOriginal ETF search. Retained for compatibility; prefer screen_etfs or search_etfs.

Your portfolios

ToolWhat it does
get_capabilitiesWhich account is connected, whether Pro is active, granted scopes, and which tools are gated.
list_portfoliosYour virtual portfolios with value, day change, cost basis and total return. (sign-in)
get_portfolio_contextDeep snapshot of one portfolio: every holding with weight, sector and return, plus Bullrun's insights. (sign-in)
get_portfolio_analyticsCorrelation/covariance, contribution-to-risk, factor exposure, sector/currency/country concentration, stress scenarios, and candidate-fit analysis. (sign-in)
create_portfolio_from_positionsSave a portfolio you have already decided, from an explicit {ticker, weight} basket used verbatim. (sign-in, no Pro needed)
create_portfolio_draftDraft a new paper portfolio from a plain-English brief. Draft-only — saved for review, never changes a live position. (Pro)
create_position_draftSuggest additions to an existing portfolio. Draft-only — saved for review. (Pro)

Prompts

Selectable starting points in your client's prompt menu: stock_deep_dive (fundamentals, valuation model, risk dials and relationships for one ticker), market_briefing (markets, macro and this week's risk movers), build_portfolio, suggest_positions and analyze_portfolio.

Try asking

  • "Is ASML expensive by Bullrun's valuation model, and what are its biggest risks?"
  • "Who are Apple's suppliers, and which of them depend on Apple for most of their revenue?"
  • "Which large US companies have stretched or acute leverage right now?"
  • "Brief me on global markets this morning, with a focus on Europe."
  • "Rank G7 countries by government debt and show me Italy's 10-year yield since 2010."
  • "Find the cheapest German stocks relative to their fundamentals."

Authentication & privacy

The server is an OAuth 2.0 protected resource (RFC 9728). On first connect your client runs an automatic discovery handshake and sends you through Google sign-in; after you authorize, per-user tools resolve your Bullrun account. The MCP layer is a thin proxy with no database of its own — read tools return market data and your own holdings, the per-user read tools accept a privacyMode (full by default, or weights_only to return only relative figures), and the draft tools never mutate live holdings. See the privacy policy.

Local stdio build

The hosted endpoint above is the recommended integration. For directories that require building and running a local MCP server, this repo can run the MCP layer over stdio:

npm ci
npm run build
BULLRUN_API_BASE=https://bull-run.org node dist/stdio.js

Public market-data tools work without credentials. Portfolio and draft tools still require a Bullrun OAuth token in hosted clients and return an authentication-required error in anonymous stdio checks.

License

MIT.

Tools it offers (30)

What this server listed when Ahel dialed its public endpoint in Oct 2026, with no key and no account of yours. The names are the server’s own.

  • screen_stocks
  • search_etfs
  • screen_etfs
  • get_etf_index_group
  • get_etf_fund
  • get_etf_filter_options
  • get_etf_snapshot
  • get_etf_holdings
  • get_etf_timeseries
  • get_etf_exposures
  • get_etf_risk
  • compare_etfs
  • analyze_etf_overlap
  • analyze_portfolio_fit
  • simulate_etf_cost
  • query_etfs
  • get_stock_metrics
  • get_financial_history
  • get_quality_moat_metrics
  • get_forward_estimates
  • get_operating_kpis
  • get_revenue_breakdown
  • get_earnings_call_transcript
  • list_portfolios
  • get_portfolio_context
  • get_portfolio_analytics
  • create_portfolio_draft
  • create_position_draft
  • create_portfolio_from_positions
  • get_capabilities

Signals

Last commit
Aug 2026
Advanced
Delivery
bullrun MCP server → your Ahel connector (mcp.ahel.ai) → your AI.
Item type
mcp-server
Key
org-bull-run-bullrun
Source
github.com/ferinator/bullrun-mcp
Hosted endpoint
https://mcp.bull-run.org/mcp