MCP server for cryptocurrency information, providing tools to fetch token prices, announcements, and coin details from Bitget API
This server has 3 tools with significant quality gaps. Tool names follow verb_noun convention (getTokenPrice, getAnnoucements, getCoinInfo) which is good, but descriptions vary widely in quality. Parameter descriptions are largely absent or minimal. Input schemas exist but lack depth. No output schemas are documented. Error handling is minimal, raw exceptions are thrown without recovery guidance. The server lacks security considerations (API keys in environment variables is correct, but no permission gates or audit logging). Composition is reasonable (each tool does one thing), but chaining is not well-supported since output schemas are not documented.
Search for cryptocurrency announcements within one month .parameter anType is announcement type Announcement type latest_news: Latest events coin_listings: New coin listings trading_competitions_promotions: Trading competitions and promotions maintenance_system_updates: maintenance/system upgrades symbol_delisting: Delisting information empty string for all announcements
Get spot coin information。Parameter:coin - Coin name Response Parameters - coin: Token name - transfer: Transferability - chains: Support chain list - chain: Chain name - needTag: Need tag - withdrawable: Withdrawal supported - rechargeable: Deposit supported - withdrawFee: Withdrawal transaction fee - extraWithdrawFee: Extra charge (e.g., 0.1 means 10% on-chain destruction) - browserUrl: Blockchain explorer address - contractAddress: Coin contract address - withdrawStep: Withdrawal count step (if not 0, withdrawal size must be a multiple of this value; if 0, no such limit) - withdrawMinScale: Decimal places of withdrawal amount - congestion: Chain network status (normal: normal, congested: congestion)
get the current price of cryptocurrency
No input parameter descriptions. The 'token' parameter in getTokenPrice has no description explaining what format is expected (e.g., 'BTC', 'USDT'). The 'anType' enum in getAnnoucements is self-documenting but lacks a brief description. The 'coin' parameter in getCoinInfo has no guidance.
No output schemas documented. All three tools return raw API responses (JSON strings or numbers) with no structured schema declared. LLMs cannot plan downstream calls or validate returned fields. The getCoinInfo description mentions response fields (coin, transfer, chains, etc.) but this is embedded in plain text, not a formal schema.
Minimal error handling and no recovery guidance. All three tools wrap API calls in try-catch blocks that log errors to console but throw raw exceptions. Error responses do not tell the LLM what to do next (e.g., 'Token symbol not found. Try alternative symbols like BTC, ETH, USDT.'). No categorization of retryable vs. fatal errors.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 35 | - | v1 |
Tool naming has inconsistencies. 'getAnnoucements' is spelled with a typo ('Annoucements' instead of 'Announcements'). While camelCase is used throughout, this typo suggests lack of code review.
Descriptions lack WHEN/WHY context. The getTokenPrice description is just 'get the current price of cryptocurrency', it does not explain when to use it vs. other price tools, what format the 'token' parameter must be, or what precision is returned. The getAnnoucements description is verbose but formatted as raw enumeration of types, which LLMs may struggle to parse.
No pagination or result limits enforced. The getAnnoucements and getCoinInfo tools do not accept limit/offset/page parameters, and there is no documented cap on results returned. If the API returns large lists, the LLM context could be exhausted.
Raw API responses returned without filtering. The getCoinInfo tool returns JSON.stringify(data) which includes all API fields. The description lists relevant fields (coin, transfer, chains, etc.) but the implementation does not filter, so the response may include irrelevant metadata that wastes tokens and dilutes signal.