idx
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@idxcompare BBCA and BBRI on price, P/E, and dividend yield"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
idx stocks quote BBCA,BBRI,TLKM╭────────┬──────────────────────────────┬───────┬──────┬─────────┬───────┬───────┬───────┬───────────────┬─────────┬───────┬────────╮
│ Symbol ┆ Name ┆ Price ┆ Chg ┆ Chg % ┆ Open ┆ High ┆ Low ┆ Volume ┆ Mkt Cap ┆ P/E ┆ Div % │
╞════════╪══════════════════════════════╪═══════╪══════╪═════════╪═══════╪═══════╪═══════╪═══════════════╪═════════╪═══════╪════════╡
│ BBCA ┆ PT Bank Central Asia Tbk ┆ 5,175 ┆ -900 ┆ -14.81% ┆ 5,825 ┆ 5,825 ┆ 5,175 ┆ 1,241,098,200 ┆ 635.7T ┆ 10.96 ┆ 6.27% │
│ BBRI ┆ PT Bank Rakyat Indonesia (P… ┆ 2,640 ┆ -460 ┆ -14.84% ┆ 2,640 ┆ 2,890 ┆ 2,640 ┆ 1,193,916,400 ┆ 397.8T ┆ 6.49 ┆ 13.48% │
│ TLKM ┆ Perusahaan Perseroan (Perse… ┆ 1,900 ┆ -330 ┆ -14.80% ┆ 1,900 ┆ 1,985 ┆ 1,900 ┆ 963,614,200 ┆ 187.3T ┆ 10.98 ┆ 10.01% │
╰────────┴──────────────────────────────┴───────┴──────┴─────────┴───────┴───────┴───────┴───────────────┴─────────┴───────┴────────╯
Last trade 2026-10-16 16:14 WIB · market closed · delayed dataidx -o json stocks quote BBCA | jq '.data[0] | {price, change_pct, pe_trailing, dividend_yield_pct}'{ "price": 5175.0, "change_pct": -14.814815, "pe_trailing": 10.963983, "dividend_yield_pct": 6.27 }Free data, no keys. Yahoo Finance and MSN Money for prices and fundamentals, the exchange's own idx.co.id summaries for foreign flow, member activity, indices and the corporate-action calendar, IDX's monthly KSEI register for ownership, Indo Premier's broker summary for who bought and sold (read as bandarmology by
idx bandar) and its corporate-action pages, Kontan and CNBC Indonesia feeds for news. Every source sits behind aProvidertrait, so one breaking does not take the tool down, andautofills gaps in one source's fundamentals from the other.Built for agents.
-o jsonemits a stable, schema-documented envelope (idx schema quotes). Exit codes mean something.idx mcpexposes every command as a typed MCP tool that returns the very same JSON.Works offline. Responses are cached with per-endpoint TTLs;
--offlineserves the cache instead of failing when the network is gone.Ownership, not just prices. KSEI's monthly register of holders above 1 % is imported into local SQLite with normalised entity names, so "who owns more than 1 % of BBCA" and "what did this fund change last month" are one command each. The monthly IDX files are mirrored to GitHub, so neither you nor the web terminal imports anything by hand.
Single static binary. Rust, no runtime, Linux / macOS / Windows.
Install
The package is called ihsg-cli; the command it installs is idx
(npm also adds ihsg-cli as an alias).
cargo install ihsg-cli # crates.io, builds from source (Rust 1.88+)
npm install -g github:fzn0x/idx # npm, straight from this repository
npx github:fzn0x/idx stocks quote BBCA # npm, no install
curl -fsSL https://raw.githubusercontent.com/fzn0x/idx/main/install.sh | sh # Linux, macOSnpm installs a small launcher from this repository; the first idx command
downloads the prebuilt binary for your platform from the matching GitHub
release and checks it against the release's SHA256SUMS (so does
install.sh). The binary is stored next to the launcher, or in a per-user
cache when the global npm folder is not writable. On npm 12, which only
installs from git when allowed, add --allow-git=all to the command.
Windows without npm: download idx-<version>-x86_64-pc-windows-msvc.zip from
the releases page. Static Linux
binaries are musl builds and run on any distribution. The development version installs
with cargo install --git https://github.com/fzn0x/idx.
Shell completions:
idx completions bash > ~/.local/share/bash-completion/completions/idx
idx completions zsh > ~/.zfunc/_idx
idx completions fish > ~/.config/fish/completions/idx.fish
idx completions powershell | Out-String | Invoke-ExpressionRelated MCP server: jv-idx-mcp
Commands
command | what it does |
| Delayed quote for one or many tickers ( |
| OHLCV candles with a summary line. Periods |
| Sector, industry, description, size, headquarters, management |
| Income statement, balance sheet, cash flow |
| Quarterly EPS vs estimates with surprise, yearly revenue/earnings, next earnings date and consensus |
| Every cash dividend (ex-date, split-adjusted amount) and split; yearly totals, TTM total and yield, payout streak |
| 1w/1m/3m/6m/YTD/1y/3y/5y returns, CAGR, volatility, max drawdown, best/worst day, 52-week position, and excess over IHSG |
| One page: quote, verdict, signal, returns vs IHSG, dividends, top holders, headlines, with plain-language key points |
| P/E, P/B, PEG, EV/EBITDA, ROE, ROA, margins, leverage, growth, dividend, analyst targets, plus a plain-language verdict that lists every rule it applied |
| RSI, MACD, SMA/EMA 20/50/200, Bollinger, ATR, volume, support/resistance, trend, buy/sell/neutral signal with reasons |
| Side-by-side fundamentals for two or more tickers |
| Screener over ~950 IDX tickers: one batch quote for valuation/size/dividend keys, per-company fundamentals for the rest (capped, largest first) |
| Headlines from Kontan and CNBC Indonesia RSS. With a ticker, the company's headlines come first, then market context fills the limit |
| Aggregate lexicon sentiment over the matching headlines, with counts, terms and the strongest headlines |
| Corporate actions from IPOT, upcoming ones included: cash and stock dividends, splits, bonus shares, rights issues (amount, ratio old:new, cum, ex, recording and payment dates, status, announcement), shareholders' meetings (RUPS: time, venue, agenda), listed warrants and rights |
| Foreign buying and selling per session from idx.co.id (shares, as IDX publishes them), net, net × close, totals and the net-buy/net-sell streak |
| Listed stocks from idx.co.id with listing board, listing date and shares; the bundled universe stands in offline |
| Import KSEI's monthly ">1 % holders" register (XLSX or PDF) into local SQLite. |
| Holders above 1 % of a ticker |
| Every position of a person or institution, spelling variants grouped |
| Broker summary: the top 10 buyers and sellers of a ticker (ranked by lots), with broker name, class (local, foreign, BUMN), lots, value and average price, plus total value and foreign net. Latest session with trades by default; |
| Bandarmology: are the top brokers accumulating or distributing? The top 1/3/5/10 buyers against as many sellers (bandar value and volume), net as a share of the value traded, the phase against the price move, the top buyers' average against the price, foreign flow; |
| Bandarmology screener over the 100 most traded stocks by value: presets |
| Broker activity: where one broker (e.g. |
| IHSG, breadth, turnover, gainers, losers, most traded, heavyweights from one pass over the universe |
| Top foreign net buying and net selling across every stock for one session (idx.co.id), with the market's foreign totals |
| Every exchange member's trading for one session, ranked, with each member's share of all members' value |
| Every IDX index (IHSG, LQ45, IDX30, sector and thematic) for one session: close, change, range, constituents, value, market cap |
| The exchange calendar: dividend and rights dates (cum, ex, recording, payment), RUPS, public exposes, listings; bonds and buyback reports with |
| Trading holidays (Kalender Libur Bursa, bundled), the year's trading days, whether today is a trading day and the next one |
| Exchange members (broker codes) with names and licences |
| New holders, exits and position changes between two months, paged, with a summary (counts, foreign vs local net, by investor type, issuer flow, top moves) over every match |
| Disclosed foreign (KSEI |
| Plain-text watchlist next to the config; |
| Imported months, files published on idx.co.id, database path |
| MCP server over stdio or streamable HTTP, and the registration recipe for 25 agent harnesses. 36 tools: |
| JSON Schema for every payload ( |
| Config file management |
| Response cache management |
| bash, zsh, fish, powershell, elvish |
| Version, build and default paths |
Global flags work anywhere on the line:
flag | env | meaning |
|
| Output format: tables for people, the JSON envelope for programs, CSV rows of the payload's main list for spreadsheets |
|
| Data source ( |
|
| Never touch the network |
|
| Ignore cached responses |
|
| Per-request timeout (default 15) |
|
| Plain tables |
|
| Diagnostics on stderr, including every URL requested |
| The loading line on stderr ( |
For scripts and agents
idx -o json stocks history TLKM --period 1y --interval 1wk \
| jq '.data.summary.change_pct'stdout carries exactly one JSON document; everything else goes to stderr.
The envelope records
provider,fetched_at,cached,staleandwarnings.Fields the source did not return are
null. Nothing is estimated.Exit codes:
0ok ·2usage ·3network/provider ·4not found ·5offline cache miss ·6config.
Full field reference: docs/json-output.md. Configuration and cache: docs/configuration.md.
MCP server
idx mcp serves the Model Context Protocol over stdio, which is what every
local agent launches. idx mcp --http serves the same tools over streamable
HTTP for products that only connect to a URL. idx mcp setup <client> prints
the exact command or config snippet for your agent with the absolute path of
the binary filled in, because GUI apps rarely inherit your shell PATH:
idx mcp setup --list # every supported client
idx mcp setup codex # prints: codex mcp add idx -- /abs/path/idx mcp
idx mcp setup muse # prints the settings.json block Meta's Muse Code expectsagent | register idx |
Claude Code |
|
Claude Desktop |
|
OpenAI Codex (CLI, IDE extension, app) |
|
Meta Muse Code |
|
Google Antigravity (IDE, CLI) |
|
Gemini CLI |
|
GitHub Copilot CLI |
|
VS Code (Copilot agent mode) |
|
Cursor · Windsurf · JetBrains · Warp · Trae · Augment | paste |
Kiro (IDE and CLI, formerly Amazon Q Developer CLI) |
|
Zed |
|
Cline · Roo Code · Kilo Code | MCP Servers → Configure → |
Continue |
|
OpenCode |
|
Goose |
|
Factory Droid |
|
Mistral Vibe |
|
Qwen Code |
|
Crush |
|
ChatGPT · Claude.ai · Perplexity · Devin · Manus | remote only: |
A bare idx in the table assumes the binary is on PATH; idx mcp setup
substitutes the absolute path, and --npx swaps in
npx -y ihsg-cli mcp (npm registry; from this repository use
npx -y github:fzn0x/idx mcp). Each entry's remote (HTTP) form and the
config file locations are in docs/mcp.md.
The server lists 36 tools with typed input schemas kept to the subset every
harness accepts (no nullable type arrays, no format or default keywords)
and one-paragraph descriptions. idx_brief is the one-call starting point;
each tool returns the same envelope as -o json, so an agent that learned the
CLI already knows the tools. Failures come back as tool errors carrying
{error: {code, message}, exit_code}.
Bandarmology
"Bandar" is market slang for the big, concentrated money that moves a stock.
idx bandar reads it from the IPOT broker summary, whose top 10 buyers and
top 10 sellers are ranked by lots. For N = 1, 3, 5 and 10 the top N buyers'
value minus the top N sellers' value is the bandar value (in lots, the bandar
volume); its share of all value traded is the reading, with the headline on
the top 5 (--top):
Top-N net, % of value | Signal | Phase when the price over the range is... |
+15 or more |
| up more than 2 %: |
+5 to +15 |
| as above |
-5 to +5 |
|
|
-15 to -5 |
| down more than 2 %: |
-15 or less |
| as above |
Quiet accumulation is the usual "bandar buying quietly": concentrated buying
while the price stalls or falls. Each reading also gives the top buyers'
average price against the last price (bandar_gain_pct: below zero they sit
under water), how much of the value the top buyers took, the foreign net
flow, and the rules in plain words (reasons). --daily adds the session
series with its cumulative net and streak. The thresholds were set against
the 40 most traded stocks in October 2026, where about half of single
sessions read neutral. They are heuristics, not advice.
idx bandar detect BBCA # last week, top 5 vs top 5
idx bandar detect BBRI --period 1m --daily # with the bandar movement
idx bandar screen --preset quiet-accumulation # buying while the price stalls
idx bandar screen -f 'acc>=5,fpct>=5,gain<0' # with foreigners, under the bandar's averageData sources
source | used for | auth | notes |
Yahoo Finance | history, quote fallback | none | IDX tickers carry the |
Yahoo Finance | quotes | anonymous cookie + crumb, cached 6 h | Falls back to the chart endpoint (fewer fields) if rejected |
Yahoo Finance | profile, fundamentals, earnings | same session | Statement modules are empty at the source, so they are not used |
Yahoo Finance | financials | none | Annual, quarterly and TTM statement items |
idx.co.id "Data Kepemilikan Saham" page + | ownership (KSEI monthly register) | none, but Cloudflare bot protection | Mirrored three times a day by GitHub Actions to the |
Indo Premier (IPOT) | broker summary | none | Top 10 buyers and sellers per range, ranked by lots; figures of a million and more are rounded to one decimal by the source ( |
idx.co.id JSON endpoints behind its pages ( | foreign flow, member activity, indices, the exchange calendar, listed stocks, members | none, but Cloudflare bot protection | Foreign trading is published in shares only; |
Indo Premier (IPOT) | corporate actions, RUPS, warrants and rights | none | Same module and spurious-404 retry as the broker summary; repeated rows are dropped |
idx.co.id trading-holiday calendar (published as an image per year) | trading holidays | none | Transcribed into |
Kontan RSS ( | news, sentiment | none | Bisnis.com refuses non-browser clients; listed as an opt-in source |
MSN Money | quotes, profile, fundamentals, analyst targets | MSN's own public web key (shipped; override with | Tickers resolve to MSN ids through its autosuggest service, filtered to exchange |
Stockbit | realtime quote, history, live order book + foreign flow | your own Stockbit session, captured by | The one source that needs a credential and the one not in the |
Prices from the free sources are delayed as published; Stockbit is realtime for your own account. This tool is for research and tooling; it is not investment advice and not affiliated with IDX, KSEI, Yahoo, Microsoft or Stockbit.
Web terminal
https://ihsg.midoriresearch.com/terminal runs the same commands in a
browser, no install: brief BBCA, quote BBCA,BBRI, returns BBCA BBRI,
screen pe<10,div>5,mcap>5T --sort div, news ASII, ownership ticker BBCA,
ownership foreign, bandar BBCA --daily, bandar screen --preset big-accumulation, bandar broker YP, actions BBCA, holidays --upcoming,
list --search bank, members, and tools (all 33 MCP tools as buttons). The idx.co.id
commands (foreign flow, top brokers, the calendar, indices) are CLI and MCP
only, because idx.co.id refuses requests from Cloudflare Workers. quote with one symbol also draws a price chart (1D, 5D,
1M, 6M, YTD, 1Y, 5Y) with volume, the previous close and a crosshair readout.
The web bandar screen reads a scan the Worker runs after each close over the
session's 100 most traded stocks; the CLI scans live.
A Cloudflare Worker refreshes a D1 snapshot of the whole
IDX board every minute in trading hours and serves /api/* with the exact JSON
envelopes the CLI prints; everything else is fetched on demand and cached. The
Worker lives in web/ and answers on the custom domain only
(workers_dev = false, Host check in the Worker).
Ownership data pipeline
Nobody imports the KSEI register by hand, and nothing outside the repository can write it:
.github/workflows/ownership.ymlruns at 08:17, 14:17 and 20:17 WIB. It fetches the IDX "Data Kepemilikan Saham" page through a browser-impersonating client, downloads any new or re-published "Pemegang Saham di Atas 1%" workbook, imports every month withidxto prove it parses, and publishes the files plusindex.jsonand parsed JSON parts to theownership-dataprerelease. idx.co.id blocks cloud networks, GitHub's own runners included, so the job runs on a self-hosted runner (an always-on machine with an ordinary connection; set the repository variableOWNERSHIP_RUNNERtoself-hosted). On GitHub's runners it keeps the mirror as is and turns red once the newest register is 45 days old.The web terminal's Worker reads that release on its minute cron: it checks
index.jsonevery 30 minutes, verifies each part's SHA-256 and loads one part per minute into D1. A month appears only once all its rows are in and the count matches. The newest six months are kept. The Worker has no write endpoint at all.idx ownership import --lateston your machine tries idx.co.id and, when Cloudflare refuses it, downloads the same file from the mirror and checks its SHA-256.IDX_OWNERSHIP_SOURCE=mirrorskips idx.co.id.
Development
cargo build
cargo test # recorded fixtures, no network
cargo clippy --all-targets -- -D warnings
./scripts/smoke.sh # live providersArchitecture, conventions and "how to add a provider" live in AGENTS.md. Contributions: CONTRIBUTING.md.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
A Model Context Protocol server exposing real-time and historical Colombo Stock Exchange (CSE) data to AI agents and LLM applications. Provides quotes and OHLCV price history, full financial statements (income, balance sheet, cash flow), pre-computed technicals (moving averages, RS ratings, volume signals), macroeconomic indicators, corporate actions, and rule-based screening across CSE stocks and sector indices, everything needed to build CSE-aware trading assistants, research tools, and market-analysis agents. This is the official MCP server of www.ceyloncharts.com
Live crypto + IDX stock market intelligence for AI agents — 19 tools, no API key.
Financial data MCP server for Claude, ChatGPT, Cursor and Codex. Real-time stock quotes, financial statements, options flow, SEC filings, insider trades, 13F holdings, macro data and market news from gloom.sh, the open-source Bloomberg Terminal alternative.
Your agent needs markets — prices and fundamentals for listed companies, the filings behind them, crypto, and what the prediction markets put the odds at. **What you can ask for** • "Pull this company's income statement, cash flow and balance sheet for the last 8 quarters." • "What did insiders buy or sell, and when?" • "Snapshot prices for these 50 tickers, then the OHLC history for the three that moved." • "What are the current odds on this event across Kalshi and Polymarket?" • "Screen for companies matching these financial criteria." **How to use it** Point any MCP client at https://mcp.aisa.one/finance/mcp and sign in with OAuth — there is no key to create or paste. 49 tools: prices and snapshots, income statements, balance sheets and cash flows, metrics and ratios, earnings and analyst estimates, filings and line-item search, insider trades, macro interest rates, news, a screener; CoinGecko spot prices, market tables, OHLC, per-venue tickers and trending; Kalshi and Polymarket markets and trades; plus EDINET filings for Japan. **Why this rather than the source** Equities, crypto and event markets behind one account, so a cross-asset question is one conversation. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Read the number here, then ask the same agent what X is saying about the ticker today — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/marketpulse/mcp · /crypto-market-data/mcp · /prediction-market-data/mcp · /stock-pulse/mcp for one slice each.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI assistants to access Indonesian stock market data, including real-time quotes, historical data from 2019, and technical analysis for 958 IDX-listed stocks.931 npmMIT
- FlicenseNot gradedqualityDmaintenanceMCP server exposing Indonesia Stock Exchange (IDX) market data as tools — fundamentals, broker flow, company profiles, and technical analysis via TA-Lib.2-
- AlicenseAqualityCmaintenanceA local MCP server that lets AI agents research Indonesian equities through your own signed-in Stockbit session using read-only tools for company data, financials, price history, analyst consensus, screening, and more.3Apache 2.0
- AlicenseAqualityCmaintenanceEnables AI agents to access Indonesian Stock Exchange market data, including Level 2 orderbooks, bandarmology, financials, chart pattern recognition, and quantitative risk budgeting.111MIT