bull-milker-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ENABLE_PROD_EXECUTION | No | Set to 'true' to allow real-money orders (requires ENABLE_TRADE_EXECUTION=true). | false |
| MOOMOO_TRADE_PASSWORD | No | Legacy plaintext trading password. Used only if the encrypted vault is not set up. | |
| TAX_AUDIT_ENABLE_LIVE | No | Set to 'true' to enable live tax reporting tools (off by default). | false |
| ENABLE_TRADE_EXECUTION | No | Set to 'true' to enable order placement tools (off by default). | false |
| BULL_MILKER_VAULT_PASSPHRASE | No | Master passphrase for the encrypted credential vault. Used to unlock the vault when placing orders. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| check_healthA | Check whether moomoo OpenD is reachable and logged in. Read-only — cannot place, modify, or cancel orders. |
| get_market_snapshotA | Get current price, volume, % change, and other live data for one or more stock codes (e.g. 'US.AAPL', 'US.TSLA'). Read-only — cannot place, modify, or cancel orders. |
| get_account_positionsA | Get current positions in the connected moomoo account. Read-only — cannot place, modify, or cancel orders. Does not by itself confirm whether the connected account is paper or live; cross-check with check_health if that matters for the current task. |
| get_portfolio_sector_exposureA | Compute sector/symbol concentration for the current portfolio. Returns total market value, breakdown by sector and symbol, and a list of concentration_flags for any position exceeding a 25% threshold. This is a deterministic calculation, not a model estimate. Read-only. |
| run_bull_milker_screenerA | Run the Bull Milker screener: turnover ratio, volume, and % change filters. Defaults are turnover 2-10%, volume 500k-5M, change 1-8% — override any bound to widen or narrow the scan. market is 'US', 'HK', 'SH', or 'SZ'. Read-only — returns candidates for you to evaluate, never places any order. |
| run_bull_milker_extended_screenerA | Bull Milker screener plus PE ratio filtering and short-interest enrichment (short_sell_rate, short_available_volume) per result. Each result includes an |
| get_quarterly_transaction_summary_toolA | Compiles filled trades into quarterly buckets labeled Q126, Q226, Q326, Q426, etc. (Q<2-digit year>). Each quarter includes trade count, buy/sell split, gross notional traded, and symbols traded. No cost-basis matching — for realized gains/losses use get_quarterly_tax_summary instead. start/end are 'YYYY-MM-DD' strings. If start is omitted, moomoo's default lookback (~90 days) applies and older quarters will be incomplete — the response includes a '_lookback_warning' field in that case. Read-only, works on paper trading (defaults to SIMULATE). |
| get_quarterly_tax_summary_toolA | Realized capital gain/loss by quarter (Q126 format), split into short-term and long-term, using FIFO cost-basis matching against your LIVE trading account's deal history. IMPORTANT — LIVE ACCOUNT, NOT TAX ADVICE:
start/end are 'YYYY-MM-DD' strings — for a full tax year, pass an explicit start (e.g. start='2026-01-01'), since the ~90-day default lookback will otherwise silently miss earlier quarters. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Each tool has a clearly distinct purpose: health check, market snapshot, account positions, portfolio exposure, two screeners (basic vs extended), and two quarterly summaries (transactions vs tax). The screeners and summaries are differentiated by their specific scope and outputs, so an agent should have no trouble selecting the right tool.
Most tools follow a consistent verb_noun pattern with lowercase and underscores (check_, get_, run_). However, the two quarterly summary tools end with '_tool', which breaks the pattern slightly, and the use of 'run_' for screeners versus 'get_' for others is a minor deviation. Overall, the naming is predictable and readable.
With 8 tools, the server is well-scoped for its apparent purpose of trading analysis and portfolio monitoring. Each tool serves a distinct function without redundancy, and the count falls comfortably within the typical range for a focused MCP server.
The server covers the core workflows: health check, market data, position reading, portfolio concentration, screening (basic and advanced), and quarterly reporting. Minor gaps exist, such as no historical price data or individual order lookup, but these are not critical given the server's explicit read-only and analysis-oriented focus. The tax summary's caveats are well-documented, and the presence of both screeners adds flexibility.