MCP server that provides access to Chinese stock market data using akshare
Two tools with complete input schemas and descriptions, but significant gaps in output documentation and error handling. Tool names follow verb_noun pattern (get_hist_data, get_realtime_data). Descriptions are present (60-80 chars) but lack context on when to use each tool or what data structure is returned. Parameters are well-typed with enums and constraints (interval, adjust, output_format), but output schemas are not documented, callers cannot know what fields to expect from the returned DataFrame. No error handling guidance visible. The server supports multiple output formats (json, csv, xml, excel, markdown, html) but does not document the structure of each format's response.
获取指定的股票历史行情数据及技术指标
获取指定的股票实时行情数据
Output schema not documented. Tools return formatted strings (json, csv, xml, etc.) but callers cannot know the field structure. For json output, what fields does the DataFrame contain? Are there required fields? This forces LLMs to guess or make exploratory calls.
No error handling or recovery guidance. If akshare fails, if symbol is invalid, if date range is malformed, what does the tool return? No error messages visible in code to guide LLM recovery.
Tool descriptions lack context on when to use each. get_hist_data and get_realtime_data both fetch stock data, what is the semantic difference? When should an LLM choose one over the other? Descriptions do not answer this.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
indicators_list parameter accepts both string and list types with complex union type. Description is 300+ chars and includes example values ('SMA,EMA'). Use enum constraints instead.
No idempotency or retry guidance. If an LLM retries get_hist_data with the same symbol and date range, will it return the same result or fetch fresh data? No documentation of idempotency or side effects.