An investment analysis MCP server that provides financial data retrieval and company snapshot analysis for Chinese A-share stocks using Baostock
Single tool 'get_company_snapshot' has a reasonable name and description, but critical gaps undermine quality. The input schema is present with proper type and description for the 'symbol' parameter. However, the output schema is completely undocumented, the function returns a complex nested dict with 'meta', 'financials', 'valuation', 'market_data', and 'coverage' fields, but no schema is provided to the MCP server definition. Error handling is minimal: exceptions are caught but responses lack actionable recovery guidance. The tool accepts both formats ('600519' and 'sh.600519') but this flexibility is not documented in the parameter description. No pagination, no rate limiting, no per-field error reporting. The implementation calls external Baostock API but exposes no timeout, retry, or partial-failure handling to the agent.
Get a structured company financial, valuation, and market snapshot
Output schema completely undocumented. Function returns nested dict with meta/financials/valuation/market_data/coverage, but MCP tool definition provides no return type schema. LLM cannot plan downstream operations or extract specific fields.
Parameter description does not document accepted formats. Symbol accepts both '600519' and 'sh.600519', but description only mentions format examples without stating auto-detection behavior or format rules.
Error handling lacks recovery guidance. Exceptions (Baostock login failure, missing data fields) are caught but responses do not tell the LLM what to do next or whether errors are retryable.
No timeout or rate-limit handling. Tool calls external Baostock API without explicit timeout, retry logic, or rate-limit awareness. Hung requests block the agent.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Partial failures not handled gracefully. If price data fails but valuation succeeds, the response includes both but does not clearly indicate which fields are missing or unreliable.