A cryptocurrency market data analysis MCP server that provides tools for fetching token prices, comparing cryptocurrencies, and analyzing multi-timeframe trends using CoinGecko API
Three tools with basic verb-noun naming (get_, compare_, analyze_). All have descriptions (194 - 250 chars, within baseline range). Input schemas present with type declarations. However, critical gaps: no output schemas documented, descriptions lack WHEN/WHY guidance, no error recovery hints, no parameter constraints (enums, ranges), and responses are unstructured text rather than structured JSON. Tools return formatted strings instead of typed objects, forcing LLMs to parse free-form output. No pagination support despite potential for large result sets. Security: no secrets exposed, but no permission gates or audit logging.
Fetch multi-timeframe trend analysis for a cryptocurrency, including trend classification per timeframe, overall alignment, and 24h volatility range.
Compare multiple cryptocurrencies side by side using CoinGecko market data.
Get current price and market data for a cryptocurrency from CoinGecko.
No output schemas documented. All tools return unstructured text strings instead of typed JSON objects. LLMs cannot parse results reliably or chain outputs to downstream tools.
Input parameter 'symbol' lacks constraints. No enum, regex pattern, or length limit. Description says 'e.g. bitcoin, ethereum' but LLMs may pass invalid CoinGecko IDs, causing API errors with no recovery guidance.
No error recovery guidance. When a symbol is not found, tools return Chinese error messages ('找不到幣種') but do not suggest alternatives or recovery steps. LLMs cannot self-correct.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
compare_tokens accepts unbounded array of symbols. No documented limit. Large requests could exceed API rate limits or return thousands of rows, blowing context window.
Descriptions use example values ('bitcoin', 'ethereum') in text. LLMs tend to reuse examples literally. Should use formal constraints (enum or pattern) instead.