A side-by-side look at the Signal8 MCP and Yahoo Finance MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Signal8 MCP for finance & fintech work as a local process; choose Yahoo Finance for finance & fintech as a local process. You can also run both side by side in one mcpServers block.
SIGNAL8_API_KEY.search_companies, get_company_profile, get_quote.get_stock_quote, get_historical_prices, get_company_info.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Finance & Fintech | Finance & Fintech |
| Quality signal | 64/100 · Good | 63/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | API key required | Not declared |
| Pricing | BYOK (pay the provider) | Not declared |
| Required env vars | SIGNAL8_API_KEY | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 1 | 22 |
| Directory activity | 6 views 0 installs 0 upvotes | 2 views 0 installs 0 upvotes |
| Tools | 101 | 13 |
| Full listing | View Signal8 MCP | View Yahoo Finance |
search_companiesSearch for companies by name or ticker symbol in the Signal8 database. Returns matching companies with their ticker, name, CIK, and exchange. Use this as the first step to find a company before calling other tools.get_company_profileGet an enriched company profile by ticker symbol. Returns CIK, exchange, sector, industry, market cap, employee count, description, and other fundamental data. This is a lightweight lookup (1 credit) -- use this when you only need basic company info rather than the full bundle. Always includes halted/haltCode/haltedAt trading-halt status (false/null when trading normally); a halted-but-listed ticker reports delisted:false.get_quoteGet the current stock quote for a company including price, volume, change, market cap, and other real-time market data. Use this when a user asks about a stock's current price or trading activity. Always includes halted/haltCode/haltReason/haltedAt/resumptionAt trading-halt fields (false/null when trading normally); a halted ticker returns the last-known quote instead of an error, or currentPrice:null + halted:true when nothing is recoverable.get_market_metricsGet computed market metrics for a company including volume averages, volatility, SMAs, and trend direction. Use when analyzing trading patterns or technical indicators beyond the basic quote.get_short_interestGet short interest data for a company including short volume, short ratio, days to cover, and short percent of float. Use when analyzing bearish sentiment or potential short squeeze setups.get_floatGet float data for a company: floatShares, source, floatDefinition, and as-of date. Use when analyzing share supply. IMPORTANT: check "floatDefinition" to know which float you are reading — "tradeable" (shares outstanding minus affiliates minus restricted/unregistered blocks: what can actually reach the tape; used on filing-derived dilution-snapshot tickers), "non_affiliate" (the SEC I.B.6 figure, which INCLUDES restricted shares held by non-affiliates — not what a trader means by float), "non_affiliate_estimate" (approximated from ownership filings), or "free_float" (vendor methodology). On snapshot tickers "nonAffiliateFloatShares" carries the SEC I.B.6 figure separately — it is the ONLY correct input to baby-shelf / I.B.6 shelf-capacity math; never use the tradeable float there, and never present the non-affiliate figure as tradeable supply. floatShares:null with "floatWithheldReason" set ("restricted_blocks_unnetted" | "stated_figure_impossible" | "affiliate_basis_stale" | "affiliate_figure_declined") means the figure was deliberately WITHHELD, not unavailable — do not substitute a vendor float. On "affiliate_basis_stale", "affiliateBasis.floatLowerBound" / "floatUpperBound" are a RANGE the float lies in (both ends or neither; null = not measurable) — a range to state, never a number to compute with. "restrictedShares":null means NOT MEASURED (a block exists whose size the filings do not state), NEVER zero; "restrictedBlockCount":0 is an answer, not an absence. "affiliateBasisStale" (with basisSpanDays/affiliateAnchorDate) labels a float whose affiliate table is materially older than its share count — the number itself is unchanged.get_float_historyGet the POINT-IN-TIME float history for a company — one sample per trade date (float shares, shares outstanding, and the source the float came from). Use to answer "what was the float on date X" or to see float expand across a dilution event, which the latest-only get_float cannot show. IMPORTANT: this series is FORWARD-ONLY — it began accumulating in mid-2026 and is NOT backfilled, so early/absent history is expected and an empty rows array is a normal result, not an error or a delisted company. Each row carries "source" ("polygon" | "computed" | "sec_10k" | "fmp") because float quality varies by provider — weigh rows accordingly rather than treating all sources as equal. Charged per your API tier.get_historical_pricesGet historical OHLCV price candles for a stock. Supports daily, weekly, and monthly resolutions. Use period shorthand (1M, 3M, 6M, 1Y, 5Y, ALL) or explicit from/to UNIX timestamps. Default is 1 year of daily candles. Use this to compute price returns, chart price history, or analyze volume trends over time.get_stock_price_changeGet percentage price changes for a stock across multiple timeframes: 1D, 5D, 1M, 3M, 6M, YTD, 1Y, 3Y, 5Y, 10Y, and MAX. Use this for quick "how much is it up/down" answers without fetching full candle data.get_financialsGet income statement, balance sheet, and cash flow data for a company. Supports annual, quarterly, and trailing-twelve-month views. Use when analyzing revenue, profitability, debt, or cash position.get_earningsGet historical earnings data for a company including EPS actual vs estimate, revenue actual vs estimate, and surprise percentages. Use when analyzing earnings beats/misses or upcoming earnings expectations.get_executivesGet key executives and officers of a company including name, title, compensation, and tenure. Use when researching company leadership or management quality.get_stock_quoteReal-time quote snapshot for ONE stock: last price, day change ($ and %), open, previous close, day range, 52-week range, volume and average volume, market cap, beta, trailing P/E, EPS, dividend yield, and sector/industry/website.
Use for "what's the price of X" or a quick single-stock snapshot. For several stocks side by side use compare_stocks; for the full company profile use get_company_info; for a past price series use get_historical_prices.
Returns Markdown by default, or structured JSON when response_format='json'. An unknown ticker or an upstream/rate-limit error returns a short error message rather than raising.
get_historical_pricesHistorical OHLCV price series for one stock over a chosen period/interval, plus summary stats (highest/lowest/average close, average volume) and total return over the window.
Use for performance, trends, or charting ("how has X done over the last year"). For a single current price use get_stock_quote; for dividend/split events use get_dividends_splits. Note: intraday intervals (1m-90m) are only available for short recent periods, and long periods return many rows, so prefer JSON or a shorter period if the output is truncated.
Returns Markdown (summary stats plus the last 10 rows) by default, or the full series as JSON when response_format='json'. An empty or unsupported period/interval combination returns a short message.
get_company_infoDetailed company profile for one stock: long business summary, sector/industry, key executives, headquarters/website/employee count, and valuation & financial-highlight stats (market cap, P/E, margins, and similar).
Use for "what does X do", company background, or a business overview. For the statement-level numbers (income/balance/cash flow) use get_financial_statements; for just the live price use get_stock_quote.
Returns Markdown by default, or JSON when response_format='json'. An unknown ticker or upstream error returns a short error message.
get_financial_statementsAnnual financial statements for one company: income statement, balance sheet, and cash flow statement, each with multiple years of data.
Use for revenue, earnings, assets/liabilities, cash flow, or fundamental analysis. For headline ratios only use get_company_info; for forward projections use get_analyst_estimates. Quarterly data is not returned; request JSON for the complete machine-readable export.
Returns Markdown by default, or JSON when response_format='json'. Companies without filed statements (for example some ETFs or ADRs) return empty sections or a short message.
compare_stocksSide-by-side comparison of 2-10 stocks across key metrics (price, market cap, P/E, EPS, dividend yield, 52-week range, and period performance) with brief auto-generated insights.
Use for "which is better, X or Y", peer/relative comparison, or screening a small set. For a deep dive on a single name use get_stock_quote or get_company_info.
Pass 2-10 tickers in the tickers list. Returns a Markdown comparison table by default, or JSON when response_format='json'. A ticker that fails to resolve is reported per-symbol rather than failing the whole call.
get_analyst_recommendationsWall Street analyst view on one stock: price targets (high/mean/low), consensus rating, the buy/hold/sell recommendation-trend breakdown, and recent upgrades/downgrades.
Use for "what do analysts think of X", ratings, or sentiment. For forward EPS/revenue/growth projections use get_analyst_estimates instead: this tool is ratings and targets, that one is the numeric estimates.
Returns Markdown by default, or JSON when response_format='json'. A stock with no analyst coverage returns the available fields as N/A; errors return a short message.
get_market_newsLatest news articles for one stock; each item has a title, publisher/source, publish date, a short summary, and a link.
Use for "what's the latest news on X", recent headlines, or catalysts. Returns news only: for price use get_stock_quote, for fundamentals use the financials tools.
count sets how many articles to return (1-20, default 10). Returns Markdown by default, or JSON when response_format='json'. No recent news returns a short message.
get_options_chainEquity options data for one underlying, in two modes: call with no expiration_date to LIST every available expiration date; call again with a specific 'YYYY-MM-DD' to get that expiration's chain (strike, bid/ask, last, volume, open interest, implied volatility).
Use for options pricing, implied volatility, or open-interest analysis. option_type selects 'calls', 'puts', or 'both'. Always discover the valid dates first (call with no date) before requesting a chain, since only listed expirations work.
Returns Markdown by default, or JSON when response_format='json'. A ticker with no listed options returns a short message.
get_holdersOwnership and insider activity for one stock, selected by holder_type: 'institutional' (top institutional holders), 'mutualfund' (top fund holders), 'major' (insider-vs-institutional ownership % breakdown), or 'insider_transactions' (recent insider buys and sells).
Use for "who owns X", institutional ownership, or insider trading activity. One holder_type per call: call again to get a different view.
Returns Markdown by default, or JSON when response_format='json'. Missing data for the chosen category returns a short message.
get_dividends_splitsFull dividend payment history (with a trailing-period summary) and the stock-split history for one stock.
Use for dividend-income analysis, payment dates and amounts, dividend growth, or past split events. For the current/forward dividend yield use get_stock_quote; for price history use get_historical_prices.
Returns Markdown by default, or JSON when response_format='json'. A stock that pays no dividend or has never split returns a short message noting that none exist.
get_analyst_estimatesForward-looking analyst estimates for one stock: price targets, EPS and revenue estimates by period (current and next quarter and year), and growth estimates.
Use for projected/expected numbers and forecasts. This complements get_analyst_recommendations: that tool returns ratings and the recommendation trend, this one returns the numeric forward estimates.
Returns Markdown by default, or JSON when response_format='json'. A stock without analyst coverage returns the available fields as N/A or a short message.
search_symbolsResolve a company name or keyword to ticker symbols; each match returns the symbol, name, exchange, and instrument type (equity, ETF, and so on).
Use this first when you have a company or brand name but not its ticker, then pass the resolved symbol to the other tools. Not for fetching prices or fundamentals.
query is the name/keyword to search; count caps the number of matches (1-20, default 8). Returns Markdown by default, or JSON when response_format='json'. No matches returns a short message.
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"signal8ai-signal8-mcp": {
"command": "npx",
"args": [
"-y",
"@signal8ai/mcp"
],
"env": {
"SIGNAL8_API_KEY": "YOUR_SIGNAL8_API_KEY_HERE"
}
}
}
}
{
"mcpServers": {
"yahoo-finance": {
"command": "npx",
"args": [
"-y",
"yahoo-finance-mcp-server"
]
}
}
}