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

@ -1,7 +1,8 @@
# AGENTS.md
`idx-cli` is a Rust CLI (binary `idx`) for Indonesian stock market analysis
(`stocks`) and KSEI shareholder ownership (`ownership`).
(`stocks`) and KSEI shareholder ownership (`ownership`), plus an MCP server
(binary `idx-mcp`) over the same library.
## Navigation
```text
@ -19,6 +20,8 @@ crates/idx-cli/ binary `idx`
├── src/config.rs IdxConfig: output format and color resolution
├── src/output/ table.rs, json.rs, style.rs
└── tests/ cli.rs (behavior), golden.rs + golden/ (output parity)
crates/idx-mcp/ binary `idx-mcp`: stdio MCP tools (server.rs), inputs (params.rs)
└── tests/mcp.rs JSON-RPC over stdio against the mock provider
scripts/ smoke, installer, and ownership snapshot publisher
```