feat(mcp): add idx-mcp, a stdio MCP server over idx-core

Phase 4 of docs/DESIGN.md. Eleven grouped tools (quotes, history, screen,
company, analysis, compare, shareholders, investor holdings, search,
ownership changes, status); ownership_sync is listed only with
--allow-sync. Live results keep the Fetched envelope, errors use the CLI's
{error, code, message} body, and investor tools on an empty database
point at the sync path.

idx-core gains Period/Interval FromStr, Investor::status, a ticker
filter on changes, and Display for ErrorCode (now used by the CLI too).
CLI output and goldens are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
hermes 2026-10-14 18:19:04 +00:00
commit cda12fe2db
18 changed files with 1546 additions and 38 deletions

View file

@ -15,12 +15,11 @@ history lives in git.
## Workflow
- `watchlist`: named symbol sets usable by other commands
- `alerts`: price alerts with a daemon
- CSV/TSV and JSONL output
- Stdin symbol input for chaining (`... | idx stocks fundamental --stdin`)
- CSV/TSV output
- Additional providers (Alpha Vantage, Twelve Data, IDX official)
## Agent integration
- MCP server exposing the existing commands as tools (planned as `idx-mcp`)
- Publish `idx-mcp` (crates.io, npm, release assets); see `docs/DESIGN.md` phase 5
- JSON Schema export for command output
- Composite `analyze` command (quote, fundamentals, ownership, sentiment)
@ -29,5 +28,7 @@ history lives in git.
can still fail.
- `stocks technical` reports the SMA200 trend as unavailable when fewer than
200 daily candles are returned.
- MSN's `low-pe` screen returned no priced stocks on 2026-10-14 (upstream;
other filters work).
- MSN history for IDX is price-only (`1mo`, `3mo`, `1y`); Yahoo stays the
default OHLCV source.