MCP server providing cryptocurrency market data, price information, K-line charts, funding rates, and news from multiple sources including Binance API and news aggregators
The server defines 9 crypto/weather/search tools with partial but inconsistent quality. All tools have descriptions and input schemas with proper types, but descriptions lack LLM-optimization guidance, lack actionable error recovery hints, and contain example values that LLMs may reuse literally. Parameter descriptions are present but minimal (average ~50 chars vs. baseline 72 chars). No output schema documentation. Error handling returns bare error dicts without actionable guidance (e.g., 'HTTP 错误: 500' tells the LLM nothing about next steps). No tool annotations (readOnlyHint, etc.). Tool names follow verb_noun conventions correctly (fetch_*, query_*), avoiding generic names. Naming is clear and unambiguous. Schemas are properly typed with required field declarations. However, the implementations show input validation (e.g., interval validation in fetch_crypto_klines, limit bounds-checking) that is not reflected in schema constraints or parameter descriptions. This means LLMs cannot self-validate inputs before calling. Tool composition is sound, each tool does one thing; no 'and' patterns detected. Secrets (NEWS_API_KEY) are handled via environment variables, not exposed as parameters, correct. Overall, this is a functional toolkit with passable naming and schemas, but descriptions and error handling lag production baselines.
执行深度网页搜索调研并返回结构化结果,适用于获取最新的市场资料、研究报告等。 :param query: 调研查询关键词或问题 :param max_results: 最大返回结果数量 (1-20,默认 5) :return: 格式化后的调研结果
执行深度搜索,并将搜索结果汇总为 MD 格式调研报告(标注来源 URL)。 :param query: 调研查询关键词或问题 :param max_results: 最大返回结果数量 (1-20,默认 5) :return: MD 格式的调研总结
批量从币安 API 获取多个加密货币价格信息。 :param symbols: 交易对符号列表(如 ["BTCUSDT", "ETHUSDT"]) :return: 价格数据列表;若出错返回包含 error 信息的字典
从币安 API 获取加密货币K线数据。 :param symbol: 交易对符号(如 BTCUSDT) :param interval: 时间周期(如 1m, 5m, 1h, 1d 等常用周期) :param limit: 获取K线数量(最大1000) :return: K线数据列表;若出错返回包含 error 信息的字典
从Odaily API获取加密货币新闻 :param length: 0表示今天新闻,1表示昨天新闻 :return: 新闻数据字典;若出错返回包含error信息的字典
从币安 API 获取加密货币价格信息。 :param symbol: 交易对符号(如 BTCUSDT) :return: 价格数据字典;若出错返回包含 error 信息的字典
No output schemas documented for any tool. LLMs cannot predict response structure, requiring them to infer field names and types from example responses, leading to brittle downstream tool chaining and context waste.
Tool 'deep_search_and_summarize' violates single-responsibility principle by combining search and summarization in one tool. Pattern guidance requires splitting into separate tools so agents can compose them independently.
Input validation logic (enum values, bounds) is implemented in code but not declared in parameter schemas. Prevents LLMs from self-validating inputs before calling and forces runtime errors (e.g., passing interval='99d' to fetch_crypto_klines instead of LLM catching it from schema enum).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 52 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 34 | - | v1 |
从币安 API 获取加密货币资金费率数据。 :param symbol: 交易对符号(如 BTCUSDT) :param limit: 获取记录数量(最大1000) :return: 资金费率数据列表;若出错返回包含 error 信息的字典
从NewsAPI搜索加密货币相关新闻 :param query: 搜索关键词(如"bitcoin", "加密货币", "区块链") :param api_key: NewsAPI密钥,如果为None则使用从命令行参数解析的默认密钥 :param language: 语言代码(zh中文, en英文等) :param page_size: 返回新闻数量(1-100,默认20) :param sort_by: 排序方式(publishedAt发布时间, relevancy相关度, popularity热度) :return: 新闻数据字典;若出错返回包含error信息的字典
输入指定城市的英文名称,返回今日天气查询结果。 :param city: 城市名称(需使用英文) :return: 格式化后的天气信息
Error responses are bare dicts ('error': 'HTTP 错误: 500') with no actionable recovery guidance. Patterns require errors to state WHAT the LLM should do next (e.g., 'Try with a different symbol' or 'rate_limited: retry after 60s').
Tool descriptions are below the 50 - 200 char LLM-optimization baseline. Average length 55 chars (baseline 194 chars). Many lack context on WHEN to use the tool vs. similar alternatives, forcing LLMs to reason by trial-and-error.
Parameter descriptions are sparse (average ~50 chars vs. baseline 72 chars) and lack dependency hints or format/constraint guidance. Example: 'symbol: 交易对符号(如 BTCUSDT)' provides an example but not a pattern or allowed range.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are marked READ_ONLY risk in metadata, but schema does not carry this flag. Agents cannot programmatically detect safe retry boundaries or rollback requirements.
Tool 'query_weather' appears out-of-scope for a crypto-focused agent. Reduces toolset coherence and adds irrelevant branching. Consider removing or clarifying the use case (e.g., weather impact on energy prices).