Hummingbot MCP is an open-source toolset that lets you control and monitor your Hummingbot trading bots through AI-powered commands and automation.
15 Tools
Version 4.43 or later needs to be installed to add the server automatically
Use cases
About
Hummingbot MCP is an open-source toolset that lets you control and monitor your Hummingbot trading bots through AI-powered commands and automation.
Attribute | Details |
---|---|
Docker Image | hummingbot/hummingbot-mcp |
Author | hummingbot |
Repository | https://github.com/hummingbot/mcp |
Docker Image built by|hummingbot Docker Scout Health Score|Not available Verify Signature|Not available Licence|Apache License 2.0
Tools provided by this Server | Short Description |
---|---|
deploy_bot_with_controllers | Deploy a bot with specified controller configurations. |
explore_controllers | Explore and understand controllers and their configs. |
get_active_bots_status | Get the status of all active bots. |
get_candles | Get the real-time candles for a trading pair on a specific exchange connector. |
get_funding_rate | Get the latest funding rate for a trading pair on a specific exchange connector. |
get_order_book | Get order book data for a trading pair on a specific exchange connector, if the query type is different than snapshot, you need to provide query_value and is_buy |
get_orders | Get the orders manged by the connected accounts. |
get_portfolio_balances | Get portfolio balances and holdings across all connected exchanges. |
get_positions | Get the positions managed by the connected accounts. |
get_prices | Get the latest prices for the specified trading pairs on a specific exchange connector. |
modify_controllers | Create, update, or delete controllers and their configurations. |
place_order | Place a buy or sell order (supports USD values by adding at the start of the amount $). |
set_account_position_mode_and_leverage | Set position mode and leverage for an account on a specific exchange. |
setup_connector | Setup a new exchange connector for an account with credentials using progressive disclosure. |
stop_bot_or_controllers | Stop and archive a bot forever or stop the execution of a controller of a runnning bot. |
deploy_bot_with_controllers
Deploy a bot with specified controller configurations.
Parameters | Type | Description |
---|---|---|
bot_name | string | Name of the bot to deploy |
controllers_config | array | List of controller configs to use for the bot deployment. |
account_name | string optional | Account name to use for the bot (default: master_account) |
image | string optional | Docker image to use for the bot (default: "hummingbot/hummingbot:latest") |
max_controller_drawdown_quote | string optional | Maximum drawdown per controller in quote currency (optional) defaults to None. |
max_global_drawdown_quote | string optional | Maximum global drawdown in quote currency (optional) defaults to None. |
explore_controllers
Explore and understand controllers and their configs.
Use this tool to discover what's available and understand how things work.
Progressive flow:
1. action="list" → List all controllers and their configs
2. action="list" + controller_type → List controllers of that type with config counts
3. action="describe" + controller_name → Show controller code + list its configs + explain parameters
4. action="describe" + config_name → Show specific config details + which controller it uses
Common Enum Values for Controller Configs:
Position Mode (position_mode):
- "HEDGE" - Allows holding both long and short positions simultaneously
- "ONEWAY" - Allows only one direction position at a time
- Note: Use as string value, e.g., position_mode: "HEDGE"
Trade Side (side):
- 1 or "BUY" - For long/buy positions
- 2 or "SELL" - For short/sell positions
- 3 - Other trade types
- Note: Numeric values are required for controller configs
Order Type (order_type, open_order_type, take_profit_order_type, etc.):
- 1 or "MARKET" - Market order
- 2 or "LIMIT" - Limit order
- 3 or "LIMIT_MAKER" - Limit maker order (post-only)
- 4 - Other order types
- Note: Numeric values are required for controller configs
Parameters | Type | Description |
---|---|---|
action | string | "list" to list controllers or "describe" to show details of a specific controller or config. |
config_name | string optional | Name of the config to describe (optional, only required for describe specific config). |
controller_name | string optional | Name of the controller to describe (optional, only required for describe specific controller). |
controller_type | string optional | Type of controller to filter by (optional, e.g., 'directional_trading', 'market_making', 'generic'). |
get_active_bots_status
Get the status of all active bots. Including the unrealized PnL, realized PnL, volume traded, latest logs, etc.
get_candles
Get the real-time candles for a trading pair on a specific exchange connector.
Parameters | Type | Description |
---|---|---|
connector_name | string | Exchange connector name (e.g., 'binance', 'binance_perpetual') |
trading_pair | string | Trading pair to get candles for (e.g., 'BTC-USDT') |
days | integer optional | Number of days of historical data to retrieve (default: 30). |
interval | string optional | Candle interval (default: '1h'). Options include '1m', '5m', '15m', '30m', '1h', '4h', '1d'. |
get_funding_rate
Get the latest funding rate for a trading pair on a specific exchange connector. Only works for perpetual connectors so the connector name must have _perpetual in it.
Parameters | Type | Description |
---|---|---|
connector_name | string | Exchange connector name (e.g., 'binance_perpetual', 'hyperliquid_perpetual') |
trading_pair | string | Trading pair to get funding rate for (e.g., 'BTC-USDT') |
get_order_book
Get order book data for a trading pair on a specific exchange connector, if the query type is different than snapshot, you need to provide query_value and is_buy
Parameters | Type | Description |
---|---|---|
connector_name | string | Connector name (e.g., 'binance', 'binance_perpetual') |
query_type | string | Order book query type ('snapshot', 'volume_for_price', 'price_for_volume', 'quote_volume_for_price', |
trading_pair | string | Trading pair (e.g., BTC-USDT) |
is_buy | boolean optional | Only required if query_type is not 'snapshot'. Is important to see what orders of the book analyze. |
query_value | string optional | Only required if query_type is not 'snapshot'. The value to query against the order book. |
get_orders
Get the orders manged by the connected accounts.
Parameters | Type | Description |
---|---|---|
account_names | string optional | List of account names to filter by (optional). If empty, returns all accounts. |
connector_names | string optional | List of connector names to filter by (optional). If empty, returns all connectors. |
cursor | string optional | Cursor for pagination (optional, should be used if another request returned a cursor). |
end_time | string optional | End time (in seconds) to filter by (optional). |
limit | string optional | Number of orders to return defaults to 500, maximum is 1000. |
start_time | string optional | Start time (in seconds) to filter by (optional). |
status | string optional | Order status to filter by can be OPEN, PARTIALLY_FILLED, FILLED, CANCELED, FAILED (is optional). |
trading_pairs | string optional | List of trading pairs to filter by (optional). If empty, returns all trading pairs. |
get_portfolio_balances
Get portfolio balances and holdings across all connected exchanges.
Returns detailed token balances, values, and available units for each account. Use this to check your portfolio,
see what tokens you hold, and their current values. If passing accounts and connectors it will only return the
filtered accounts and connectors, leave it empty to return all accounts and connectors.
You can also get the portfolio distribution by setting `as_distribution` to True, which will return the distribution
of tokens and their values across accounts and connectors and the percentage of each token in the portfolio.
Parameters | Type | Description |
---|---|---|
account_names | string optional | List of account names to filter by (optional). If empty, returns all accounts. |
as_distribution | boolean optional | If True, returns the portfolio distribution as a percentage of each token in the portfolio and |
connector_names | string optional | List of connector names to filter by (optional). If empty, returns all connectors. |
get_positions
Get the positions managed by the connected accounts.
Parameters | Type | Description |
---|---|---|
account_names | string optional | List of account names to filter by (optional). If empty, returns all accounts. |
connector_names | string optional | List of connector names to filter by (optional). If empty, returns all connectors. |
limit | string optional | Number of positions to return defaults to 100, maximum is 1000. |
get_prices
Get the latest prices for the specified trading pairs on a specific exchange connector.
Parameters | Type | Description |
---|---|---|
connector_name | string | Exchange connector name (e.g., 'binance', 'binance_perpetual') |
trading_pairs | array | List of trading pairs to get prices for (e.g., ['BTC-USDT', 'ETH-USD']) |
modify_controllers
Create, update, or delete controllers and their configurations. If bot name is provided, it can only modify the config in the bot deployed with that name.
IMPORTANT: When creating a config without specifying config_data details, you MUST first use the explore_controllers tool
with action="describe" and the controller_name to understand what parameters are required. The config_data must include
ALL relevant parameters for the controller to function properly.
Controllers = are essentially strategies that can be run in Hummingbot.
Configs = are the parameters that the controller uses to run.
Parameters | Type | Description |
---|---|---|
action | string | "upsert" (create/update) or "delete" |
target | string | "controller" (template) or "config" (instance) |
bot_name | string optional | |
config_data | string optional | For config creation, MUST contain all required controller parameters. Use explore_controllers first! |
config_name | string optional | |
confirm_override | boolean optional | Required True if overwriting existing |
controller_code | string optional | |
controller_name | string optional | |
controller_type | string optional |
place_order
Place a buy or sell order (supports USD values by adding at the start of the amount $).
Parameters | Type | Description |
---|---|---|
amount | string | Order amount (is always in base currency, if you want to use USD values, add a dollar sign at the start, e.g., '$100') |
connector_name | string | Exchange connector name (e.g., 'binance', 'binance_perpetual') |
trade_type | string | Order side ('BUY' or 'SELL') |
trading_pair | string | Trading pair (e.g., BTC-USDT, ETH-USD) |
account_name | string optional | Account name (default: master_account) |
order_type | string optional | Order type ('MARKET' or 'LIMIT') |
position_action | string optional | Position action ('OPEN', 'CLOSE'). Defaults to 'OPEN' and is useful for perpetuals with HEDGE mode where you |
price | string optional | Price for limit orders (required for limit orders) |
set_account_position_mode_and_leverage
Set position mode and leverage for an account on a specific exchange. If position mode is not specified, will only set the leverage. If leverage is not specified, will only set the position mode.
Parameters | Type | Description |
---|---|---|
account_name | string | Account name (default: master_account) |
connector_name | string | Exchange connector name (e.g., 'binance_perpetual') |
leverage | string optional | Leverage to set (optional, required for HEDGE mode) |
position_mode | string optional | Position mode ('HEDGE' or 'ONE-WAY') |
trading_pair | string optional | Trading pair (e.g., ETH-USD) only required for setting leverage |
setup_connector
Setup a new exchange connector for an account with credentials using progressive disclosure.
This tool guides you through the entire process of connecting an exchange with a four-step flow:
1. No parameters → List available exchanges
2. Connector only → Show required credential fields
3. Connector + credentials, no account → Select account from available accounts
4. All parameters → Connect the exchange (with override confirmation if needed)
Parameters | Type | Description |
---|---|---|
account | string optional | Account name to add credentials to. If not provided, prompts for account selection. |
confirm_override | string optional | Explicit confirmation to override existing connector. Required when connector already exists. |
connector | string optional | Exchange connector name (e.g., 'binance', 'binance_perpetual'). Leave empty to list available connectors. |
credentials | string optional | Credentials object with required fields for the connector. Leave empty to see required fields first. |
stop_bot_or_controllers
Stop and archive a bot forever or stop the execution of a controller of a runnning bot. If the controllers to stop are not specified, it will stop the bot execution and archive it forever, if they are specified, will only stop the execution of those controllers and the bot will still be running with the rest of the controllers.
Parameters | Type | Description |
---|---|---|
bot_name | string | Name of the bot to stop |
controller_names | string optional | List of controller names to stop (optional, if not provided will stop the bot execution) |
{
"mcpServers": {
"hummingbot-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"HUMMINGBOT_API_URL",
"-e",
"HUMMINGBOT_API_USERNAME",
"-e",
"HUMMINGBOT_API_PASSWORD",
"hummingbot/hummingbot-mcp"
],
"env": {
"HUMMINGBOT_API_URL": "http://localhost:8000",
"HUMMINGBOT_API_USERNAME": "admin",
"HUMMINGBOT_API_PASSWORD": "password"
}
}
}
}
Manual installation
You can install the MCP server using:
Installation for