Read-only MCP server for Freqtrade codebase introspection. Helps LLMs write better Freqtrade strategy code by providing access to method signatures, docstrings, type hints, enums, and configuration schemas.
freqtrade-mcp is a read-only introspection server with 12 well-named tools. All tools follow verb_noun naming (freqtrade_list_*, freqtrade_get_*, freqtrade_search_*). Descriptions are comprehensive (140-280 chars typical), explaining WHAT each tool does and WHEN to use it. Input schemas are present and properly typed with Pydantic Field constraints (max_length, default values, enums for constrained inputs). Tool annotations are correctly applied (readOnlyHint=True, destructiveHint=False, idempotentHint=True, openWorldHint=False), signaling safety to LLMs. Output schemas are documented (all return dict[str, Any] with model_dump() calls). However, there are gaps: (1) Output structures are not formally documented in descriptions, LLMs don't know what fields to expect; (2) Error handling is minimal, no guidance on how to interpret failures or what to do next; (3) Some parameter descriptions could better explain valid input formats (e.g., freqtrade_search_codebase's 'query' parameter mentions glob patterns but doesn't explain why safe patterns matter); (4) Several tools accept optional 'filter' or 'section' parameters without enums, inviting hallucinated values. These are not critical flaws, but they prevent the server from reaching the 80+ range.
Get detailed info about a strategy callback method. Returns the full signature, parameters with types, return type, and docstring for a strategy callback like bot_start, custom_stake_amount, custom_stoploss, etc.
Inspect any freqtrade class. Returns class docstring, method resolution order (MRO), public methods, and class-level attributes for a given fully-qualified class path.
Get the Freqtrade configuration schema. Returns all available configuration keys with their descriptions. Optionally filter by configuration section (e.g., 'exchange', 'pairlists', 'stoploss').
Get DataFrame column definitions used in Freqtrade strategies. Returns known column names and descriptions for strategy DataFrames. Optionally filter by context (e.g., 'ohlcv', 'entry', 'exit', 'indicators').
Get the full text of a documentation topic. Returns the complete markdown content of a documentation file. Optionally extract a single section by heading, or retrieve content in chunks using the offset parameter. The response includes a list of available sections for easy reference.
Output schemas not formally documented. Tools return dict[str, Any] via model_dump(), but descriptions do not explain what fields to expect in responses. LLMs cannot plan downstream tool calls or extract specific fields without knowing the response structure.
Minimal error handling and recovery guidance. Tools do not describe error cases or what the LLM should do if a lookup fails (e.g., 'class not found', 'symbol not found', 'doc topic not found'). No guidance on retryability or alternative actions.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 68 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 50 | - | v1 |
Get all values of a specific freqtrade enum. Returns every member of the enum with its name and value.
Get full signature of a specific IStrategy method. Returns the complete method signature including all parameters with their types, default values, return type, and the full docstring.
List available Freqtrade documentation topics. Returns topic names, titles, file paths, and byte sizes of all available freqtrade documentation. Optionally filter by keyword.
List all trading-related enums from freqtrade. Returns enum names, their module paths, docstrings, and member counts. Use the optional filter to narrow results.
List all overridable methods from IStrategy. Returns method names with brief descriptions. Use the optional filter parameter to narrow results by keyword (e.g., "entry", "exit", "indicator", "callback", "custom").
Search for symbols in the freqtrade codebase by name pattern. Searches for classes, functions, constants, and enums matching the given pattern. Supports safe glob-style wildcards: ``*`` for any sequence, ``?`` for one character, and optional leading ``^`` / trailing ``$`` anchors. The legacy ``.*`` spelling is accepted as an alias for ``*``. The response reports completeness explicitly. Check ``truncated`` before concluding that a symbol does not exist: a broad pattern such as ".*" matches thousands of symbols and only the first ``max_results`` are returned. Check ``skipped_modules`` too — a non-empty list means part of the freqtrade tree could not be parsed and was never searched.
Full-text search across Freqtrade documentation. Searches all documentation content and returns matching snippets with context lines. Multiple query words use AND logic.
Filter/section parameters are unconstrained strings. 'filter' in freqtrade_list_strategy_methods, freqtrade_list_enums, freqtrade_list_docs accepts arbitrary keywords. 'section' in freqtrade_get_config_schema, freqtrade_get_dataframe_columns, freqtrade_get_doc could accept invalid values. Descriptions mention examples but lack enums or valid value lists.
freqtrade_search_codebase description mentions 'safe glob-style wildcards' and 'legacy .*' spelling but does not explain WHY safety matters or what unsafe patterns could do. LLMs reading this may not understand the constraint boundaries.
Large result sets (freqtrade_search_codebase returns up to 500 symbols, freqtrade_search_docs returns up to 50 snippets) may exceed context windows. Descriptions mention 'truncated' and 'skipped_modules' fields but do not explain what the LLM should do if results are partial or how to refine queries.