Webull AU MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Webull AU MCPShow me the stock snapshot for AAPL"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Webull AU OpenAPI MCP
A slim MCP server for the Webull Australia OpenAPI. It exposes exactly what
the AU platform supports — US stock and ETF market data and trading — and
nothing else. Region is hardcoded to au; there is no multi-region, options,
futures, crypto, event-contract, combo, strategy or algo code.
Built on fastmcp and the official webull-openapi-python-sdk (≥ 2.0.12, which
is the first line to bundle AU production endpoints).
For reference only; not investment advice. Trading involves risk. Review every order before confirming.
Install
cd webull-au-mcp
uv sync # or: pip install -e .Related MCP server: tastytrade-mcp
Configure
webull-au-mcp init # writes .env
# edit .env → set WEBULL_APP_KEY / WEBULL_APP_SECRET
webull-au-mcp status # sanity-check configFor a zero-setup trial, use a public UAT test account from the AU SDK docs (no application, no 2FA):
WEBULL_ENVIRONMENT=uat
WEBULL_APP_KEY=c8d29a52a41c03cb76ebe1f680bada3c
WEBULL_APP_SECRET=40424c891fca1aa68c0aeef862de2ee7
WEBULL_ACCOUNT_ID=1234113618547593216Configuration
Variable | Description | Default |
| App key (required) | — |
| App secret (required) | — |
|
|
|
| Default account for tools that need one | — |
|
|
|
| Max single-order value (USD) |
|
| Max single-order share quantity |
|
| Allowed symbols (comma-sep); empty = any | — |
| 2FA token store directory |
|
| Append order audit records here | stderr only |
| SDK log level |
|
Trading is off by default. The default toolset is read-only. Add trading
to WEBULL_TOOLSETS to enable order placement, ideally alongside a tight
WEBULL_SYMBOL_WHITELIST and notional/quantity caps.
Authenticate (prod only)
UAT test tokens need no 2FA. For a live account:
webull-au-mcp auth # approve the request in your Webull app
webull-au-mcp serveClient configuration
{
"mcpServers": {
"webull-au": {
"command": "uvx",
"args": ["--from", "/path/to/webull-au-mcp", "webull-au-mcp", "serve"],
"env": {
"WEBULL_APP_KEY": "your_app_key",
"WEBULL_APP_SECRET": "your_app_secret",
"WEBULL_ENVIRONMENT": "prod",
"WEBULL_TOOLSETS": "account,market-data,instrument,trading",
"WEBULL_SYMBOL_WHITELIST": "AAPL,MSFT,VOO",
"WEBULL_MAX_ORDER_NOTIONAL_USD": "5000"
}
}
}
}Pass credentials via the client's env field rather than a .env file in your
workspace, so the model can't read them.
Docker
The image runs the server over HTTP transport (a long-running networked
endpoint at http://<host>:8000/mcp), which suits a homelab far better than
stdio.
cp .env.example .env # fill in credentials
docker compose up -d --buildFor a prod account, cache the 2FA token once (interactive) before starting —
the token persists in the ./conf volume:
docker compose run --rm webull-au-mcp auth
docker compose up -dPoint an HTTP-capable MCP client at http://<homelab-ip>:8000/mcp. For a local
stdio client instead of the networked service, run the image directly:
docker run -i --rm --env-file .env -e WEBULL_MCP_TRANSPORT=stdio webull-au-mcp:latestVariable | Description | Default (image) |
|
|
|
| Bind address (http transports) |
|
| Bind port (http transports) |
|
| MCP endpoint path (http transports) |
|
Tools
Account (account): get_account_list, get_account_balance, get_account_positions
Instrument (instrument): get_instrument
Market data (market-data): get_stock_snapshot, get_stock_quotes,
get_stock_tick, get_stock_bars
Trading (trading): preview_stock_order, place_stock_order,
replace_stock_order, cancel_order, get_open_orders, get_order_history,
get_order_detail
Order tools hardcode the AU invariants (market=US, instrument_type=EQUITY,
entrust_type=QTY, combo_type=NORMAL) and auto-generate the client_order_id,
so the model only supplies symbol, side, quantity, order type and price. Every
order passes quantity, notional and whitelist guards before submission; rejected
orders never reach the broker. place_stock_order returns the client_order_id
you need for replace/cancel/get_order_detail.
Order types: MARKET, LIMIT, STOP_LOSS, STOP_LOSS_LIMIT. Time in force:
DAY, GTC.
CLI
webull-au-mcp init [--env-file PATH] [--force]
webull-au-mcp auth [--env-file PATH]
webull-au-mcp serve [--env-file PATH]
webull-au-mcp status [--env-file PATH]
webull-au-mcp tools [--env-file PATH]AU-specific notes
SDK ≥ 2.0.12 is required. Earlier releases (including the 2.0.5 the multi-region upstream pins) only bundle
us/hk/jpendpoints, so anauclient fails region resolution. UAT hosts are injected explicitly by this server regardless.The upstream server also registers screener/watchlist/fundamental tools. The AU API reference do
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nickp27/webull-au-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server