A local MCP server suite for Crypto trading, Portfolio tracking, and LLM reasoning. Provides tools for CCXT exchange integration, CoinGecko price data, Freqtrade bot control, portfolio management, technical analysis, on-chain data, and trading notifications.
The Crypto MCP Server has 24 tools across three subsystems (CCXT/exchange trading, CoinGecko market data, Freqtrade bot management). While parameter schemas are present and mostly structured, there are critical gaps in descriptions, naming clarity, and error handling. Three tools are named 'ping' (tools 1, 12, 18), creating ambiguity. Many descriptions lack context about WHEN to use tools, prerequisites, or what data they return. Parameter descriptions are minimal and often generic. No tool descriptions explain recovery paths or distinguish tools from similar functionality. The server exposes sensitive trading operations (create_order, execute_approved_order, cancel_order) but descriptions do not adequately warn about irreversibility or require approval flows. Error handling guidance is absent across all tools. Output schemas are not documented, LLMs cannot infer what fields to expect from responses, making downstream chaining difficult. The server includes read-only tools alongside write/irreversible tools without clear categorization in descriptions.
Cancel an open order on an exchange
Fetch detailed information about a coin from CoinGecko
Creates an order. IMPORTANT: This does NOT execute immediately. It sends a pending request to the dashboard for human approval.
Internal tool called by the backend to actually execute the order after human approval.
Fetch account balance for an exchange
Fetch OHLCV (candlestick) data for a symbol
Three tools named 'ping' (tools 1, 12, 18) create severe ambiguity. LLMs cannot distinguish which subsystem each ping targets without reading descriptions, and descriptions are branding text, not functional.
create_order and execute_approved_order are marked IRREVERSIBLE/WRITE but descriptions do not adequately document recovery paths, failure modes, or compensation flows. Agents may attempt retries that double-execute or leave positions dangling.
No tool descriptions include output/response schemas. LLMs cannot infer what fields to expect from responses, making it impossible to plan downstream tool chains. E.g., does get_ticker return bid/ask/last, or just last? Does fetch_balance return per-asset or aggregated?
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 62 | 2026-07-28+ | v2 |
Fetch all open orders for an exchange or a specific symbol
Fetch the order book (L2) for a given symbol.
Fetch the list of recent trades for a given symbol.
Fetch the list of coin markets sorted by market cap.
Fetch ticker information for a symbol on a given exchange
List available trading strategies on a Freqtrade bot
Logs the AI's reasoning for a specific pending trade or general market observation. Must be called BEFORE executing a trade or immediately after a dry_run.
Fetch market chart data (prices, volumes) for a coin from CoinGecko
ccxt_mcp alive — Crypto MCP Server (Corax CoLAB - The Future of Edge AI & Blockchain)
coingecko_mcp alive — Crypto MCP Server (Corax CoLAB - The Future of Edge AI & Blockchain)
freqtrade_mcp alive (rest={FREQTRADE_REST_URL}) — Crypto MCP Server (Corax CoLAB - The Future of Edge AI & Blockchain)
Fetch current price of a coin from CoinGecko
Reload the configuration of a Freqtrade bot
Start a Freqtrade trading bot
Fetch the status of a running Freqtrade bot
Stop a running Freqtrade trading bot
Fetch trade history from a Freqtrade bot
Fetch trending coins from CoinGecko
Parameter descriptions are minimal and generic. Many lack critical details: valid value ranges, required formats, error conditions, and what happens on edge cases. E.g., 'exchange' param appears across tools but no description explains how to obtain a valid exchange name or what happens if invalid.
No error handling guidance. Tools lack descriptions that tell LLMs what to do if a call fails: is it retryable? Should the user be asked? Tools like cancel_order and price do not document failure modes (order not found, coin not found, rate limit exceeded).
Duplicate tool naming by function: 'fetch_balance', 'fetch_ohlcv', 'fetch_trades', 'fetch_order_book', 'trades' (Freqtrade) all use 'fetch' or implied fetch, but 'price', 'coin_info' do not follow the same pattern. Inconsistent naming confuses LLM tool selection.
'status' (Freqtrade) is a generic name that does not follow verb_noun pattern. LLMs conflate it with other status-like tools. Should be 'get_bot_status' or 'fetch_bot_status'.
'trending' and 'trades' (Freqtrade) do not follow verb_noun naming. 'trending' is a noun; 'trades' should be 'fetch_trades' to match the naming convention of similar tools in other subsystems.
Parameter 'exchange' appears across multiple tools (get_ticker, fetch_ohlcv, fetch_balance, create_order, cancel_order, fetch_open_orders, fetch_order_book, fetch_trades) but is not described as an enum or with guidance on valid values. LLMs must guess or rely on external knowledge. No discovery tool (list_exchanges) exists.
Parameter 'symbol' lacks clear format documentation. Is it 'BTC/USDT' or 'btc/usdt' or 'BTC-USDT'? Different exchanges may use different formats. No guidance on how to discover valid symbols for a given exchange.
Parameter 'coin_id' in CoinGecko tools is not intuitive. LLMs cannot infer that 'bitcoin' is the correct ID vs 'btc' or 'Bitcoin'. No lookup tool (search_coins) exists to help agents find valid coin IDs.
create_order description states approval is required but does not integrate that into the tool interface. LLMs see 'create_order' and may not realize a second approve/execute step is needed. The tool should be named 'request_order' or description should be more explicit.
Parameter 'price' in create_order defaults to null with description 'Price for limit orders'. But if type='market', what happens? Null is sent? Description does not clarify mutual exclusivity of market vs limit, or whether price is required/forbidden in each case.
Tools lack descriptions of when to use one over another. E.g., get_ticker vs fetch_ohlcv, or trending vs get_coins_markets. LLMs must guess which is appropriate, risking redundant or unnecessary tool calls.