MCP server for accessing Taiwan stock market data from Fubon Securities, with local caching and historical data retrieval capabilities
Single tool 'historical_candles' has a valid input schema with three string parameters (symbol, from_date, to_date), each with descriptions. However, the tool description is in Chinese and mixes implementation details ('優先使用本地數據,如果本地沒有再使用 API') with parameter documentation. No output schema is documented, the function returns a dict with 'status', 'data', 'message' fields, but the structure of 'data' (list of dicts with OHLCV fields) is never formally specified. Parameter descriptions lack format constraints (e.g., date regex, symbol format rules beyond examples). No error handling guidance, failures return generic error dicts without recovery hints. Tool name 'historical_candles' is acceptable (verb_noun pattern) but lacks clarity on whether it returns candles, bars, or raw OHLCV. The resource 'twstock://{symbol}/historical' is defined but never integrated with the tool.
獲取歷史數據,優先使用本地數據,如果本地沒有再使用 API Args: symbol (str): 股票代碼,必須為文字格式,例如: '2330'、'00878' from_date (str): 開始日期,格式: YYYY-MM-DD to_date (str): 結束日期,格式: YYYY-MM-DD
No output schema documented. Tool returns dict with 'status', 'data', 'message' but structure of 'data' array (OHLCV fields, computed columns like vol_value, price_change, change_ratio) is never formally specified. LLMs cannot plan downstream operations without knowing response structure.
Tool description is in Chinese and conflates implementation strategy with functional description. English descriptions are required for LLM comprehension. Description should state WHAT the tool does (fetch historical stock prices), WHEN to use it (when you need OHLCV data for a date range), and WHAT it returns (list of candles with open/high/low/close/volume).
Parameter descriptions lack format constraints. 'symbol' says '股票代碼,必須為文字格式,例如: 2330、00878' (in Chinese) but does not specify: length (4-5 chars?), character set (digits only?), or validation rules. 'from_date' and 'to_date' say 'YYYY-MM-DD' but no regex pattern or min/max date bounds. LLMs cannot validate inputs without explicit constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
Error handling returns generic dicts ('status': 'error', 'message': '...') without recovery guidance. When API fails or local data is missing, the tool does not tell the LLM what to do next (retry? use fallback? ask user?). Errors should be categorized as retryable vs. fatal and include actionable next steps.
Tool description and parameter descriptions are in Chinese, not English. MCP servers must use English for LLM compatibility. Non-English descriptions severely limit agent usability across multilingual LLM deployments.