Freqtrade-MCP
# Freqtrade-MCP
An MCP server that integrates with the [Freqtrade](https://www.freqtrade.io/) cryptocurrency trading bot via its REST API, enabling seamless AI agent interaction for automated trading operation.
For more crypto-related MCP servers, see the [Kukapay MCP servers](https://github.com/kukapay/kukapay-mcp-servers).



## Installation
### Prerequisites
- **Python 3.13+**: Ensure Python is installed on your system.
- **Freqtrade**: A running Freqtrade instance with the REST API enabled (see [Freqtrade Docs](https://www.freqtrade.io/en/stable/rest-api/)).
- **Git**: For cloning the repository.
### Steps
1. **Clone the Repository**:
```bash
git clone https://github.com/kukapay/freqtrade-mcp.git
cd freqtrade-mcp
```
2. **Install Dependencies**:
Using `pip`:
```bash
pip install freqtrade-client mcp[cli]
```
Or with `uv` (optional):
```bash
uv add freqtrade-client "mcp[cli]"
```
3. **Client Configuration**:
```
"mcpServers": {
"freqtrade-mcp": {
"command": "uv",
"args": [
"--directory", "/your/path/to/freqtrade-mcp",
"run",
"__main__.py"
],
"env": {
"FREQTRADE_API_URL": "http://127.0.0.1:8080",
"FREQTRADE_USERNAME": "your_username",
"FREQTRADE_PASSWORD": "your_password"
}
}
}
```
4. **Freqtrade Configuration**:
Enable the rest API by adding the api_server section to your configuration and setting api_server.enabled to true.
Sample configuration:
```
"api_server": {
"enabled": true,
"listen_ip_address": "127.0.0.1",
"listen_port": 8080,
"verbosity": "error",
"enable_openapi": false,
"jwt_secret_key": "somethingrandom",
"CORS_origins": [],
"username": "Freqtrader",
"password": "SuperSecret1!",
"ws_token": "sercet_Ws_t0ken"
},
```
Check the document [here](https://www.freqtrade.io/en/stable/rest-api/#configuration).
## Usage
### Available Tools
The server exposes the following Freqtrade API endpoints as MCP tools:
| Tool | Description | Parameters |
|-----------------------|--------------------------------------|-------------------------------------|
| `fetch_market_data` | Fetch OHLCV data for a pair | `pair: str`, `timeframe: str` |
| `fetch_bot_status` | Get open trade status | None |
| `fetch_profit` | Get profit summary | None |
| `fetch_balance` | Get account balance | None |
| `fetch_performance` | Get performance metrics | None |
| `fetch_whitelist` | Get whitelist of pairs | None |
| `fetch_blacklist` | Get blacklist of pairs | None |
| `fetch_trades` | Get trade history | None |
| `fetch_config` | Get bot configuration | None |
| `fetch_locks` | Get trade locks | None |
| `place_trade` | Place a buy/sell trade | `pair: str`, `side: str`, `stake_amount: float` |
| `start_bot` | Start the bot | None |
| `stop_bot` | Stop the bot | None |
| `reload_config` | Reload bot configuration | None |
| `add_blacklist` | Add pair to blacklist | `pair: str` |
| `delete_blacklist` | Remove pair from blacklist | `pair: str` |
| `delete_lock` | Delete a trade lock | `lock_id: int` |
| `run_backtest` | Start backtest via REST API | `strategy: str`, `enable_protections: bool`, optional `timerange`, `timeframe` |
| `fetch_backtest_status` | Get current backtest status/result | None |
| `fetch_backtest_history` | List backtest history | optional `filename: str` |
| `abort_backtest` | Abort currently running backtest | None |
| `reset_backtest` | Reset backtest state/result | None |
### Example Prompts
1. **Fetch Market Data**:
- "Show me the hourly price data for BTC/USDT."
- "What’s the 5-minute chart for ETH/BTC like?"
- "Give me the latest candlestick data for XRP/USDT over the past hour."
2. **Fetch Bot Status**:
- "What’s the current status of my open trades?"
- "Are there any active trades right now?"
- "Tell me about the bot’s trading activity at the moment."
3. **Fetch Profit**:
- "How much profit have I made so far?"
- "What’s the total profit summary for the bot?"
- "Can you show me my trading gains?"
4. **Fetch Balance**:
- "What’s my account balance?"
- "How much money do I have in the trading account?"
- "Tell me the current balance of my Freqtrade wallet."
5. **Fetch Performance**:
- "How well has the bot been performing?"
- "What are the performance metrics for my trades?"
- "Show me the trading stats."
6. **Fetch Whitelist**:
- "Which pairs are on the whitelist?"
- "What trading pairs is the bot allowed to use?"
- "List the whitelisted pairs for me."
7. **Fetch Blacklist**:
- "Which pairs are blacklisted?"
- "What trading pairs are blocked right now?"
- "Tell me about the blacklist."
8. **Fetch Trades**:
- "What’s the history of my closed trades?"
- "Show me all the trades the bot has completed."
- "Can you list my past trades?"
9. **Fetch Config**:
- "What’s the current bot configuration?"
- "Show me the settings the bot is using."
- "Tell me about the Freqtrade config."
10. **Fetch Locks**:
- "Are there any trade locks active?"
- "What locks are currently in place?"
- "Show me the list of trading locks."
11. **Place Trade**:
- "Buy 0.01 BTC/USDT right now."
- "Sell 0.05 ETH/USDT immediately."
- "Place a buy order for 0.1 XRP/USDT."
12. **Start Bot**:
- "Start the trading bot."
- "Turn on the Freqtrade bot."
- "Get the bot running now."
13. **Stop Bot**:
- "Stop the trading bot."
- "Shut down the Freqtrade bot."
- "Pause the bot’s trading."
14. **Reload Config**:
- "Reload the bot’s configuration."
- "Update the bot settings."
- "Refresh the Freqtrade config."
15. **Add Blacklist**:
- "Blacklist ETH/USDT."
- "Add BTC/ETH to the blacklist."
- "Block trading for XRP/USDT."
16. **Delete Blacklist**:
- "Remove ETH/USDT from the blacklist."
- "Unblock BTC/ETH for trading."
- "Take XRP/USDT off the blacklist."
17. **Delete Lock**:
- "Delete the trade lock with ID 123."
- "Remove lock number 45."
- "Unlock the trade with ID 7."
## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
TDQS
Scored across 22 tools
Most tools have distinct purposes targeting specific resources like blacklist, backtest, or bot operations, with clear boundaries. However, some fetch tools like fetch_bot_status and fetch_trades might be slightly overlapping in providing trade-related information, but descriptions help differentiate them.
Tools follow a highly consistent verb_noun pattern throughout, such as fetch_balance, add_blacklist, and run_backtest. All names use snake_case with clear verbs, making them predictable and easy to understand.
With 22 tools, the count is borderline high for a trading bot server, potentially feeling heavy. While it covers many aspects, some tools might be consolidated or omitted without losing core functionality, indicating a slight over-scoping.
The tool set provides comprehensive coverage for the Freqtrade domain, including CRUD operations for blacklist/locks, bot lifecycle management, data fetching, and backtesting. No obvious gaps are present; agents can handle full workflows from configuration to trading and analysis.