TWSE and TPEx institutional flows, chip data and monthly revenue are the part nobody else has, and they answer from a local SQLite file rather than a metered API. The split is the thing to understand before installing: this package is the interface, and the desktop application is where the answers come from.
The MCP layer of Stock Analyzer, a macOS desktop application for Taiwan and US market analysis. This package is the open-source shim: it advertises the tools and proxies each call to the app's local backend, which does the work.
- 95 tools in 15 categories, plus 6 resources you can mention directly in a conversation
- Market (14) — quotes, history, heatmap, sector ranking, news, FX, seasonality, ETF holdings, trading-day status
- Chips (6) — three major institutional flows, fund-flow Sankey, insider alerts, abnormal blocks, margin ranking
- Fundamentals (6), technical (5), macro (8) and sentiment (6) — statements, monthly revenue, dividends, DCF, RSI, MACD, KD, Bollinger, FED policy, yield curve, news and market sentiment
- Portfolio (11), risk (6), backtest (5) and forecast (5) — holdings and P&L, VaR and stress tests, grid-search and Monte Carlo backtests, price probability cones
- AI workflow (7) — including research_stock_deep_dive, where five agents argue a position, and portfolio_daily_briefing
- Resources: saa://portfolio, saa://watchlist, saa://thesis, saa://market/today, saa://reports/recent and saa://system/info
- Every tool declares readOnlyHint, destructiveHint and idempotentHint, and its worst-case LLM cost — most are $0, deep-dive about $0.16
Stock Analyzer running on the same machine: the tools proxy to its local backend at http://localhost:3000/api/*, so the package on its own can advertise them but not answer. Point your client at the bundled bin/saa-mcp wrapper rather than node mcp-server.js, which hits a better-sqlite3 ABI mismatch. SAA_MCP_PROFILE=safe_readonly narrows the surface to 80 read-only tools for a shared or untrusted client.
Build from source — clone the repository and build it, then point your client at the binary
