Skip to main content

futu_mcp/
tools.rs

1//! MCP 工具定义(#[tool] 薄封装,业务逻辑在 handlers/)
2
3mod combo;
4mod market;
5mod qot_3401_plus;
6mod reference;
7mod reference_corporate_short_brokers;
8mod reference_f10;
9mod reference_price_reminder;
10mod reference_screen_unusual;
11mod reference_shareholders_insider;
12mod subscription;
13mod system;
14mod trade_read;
15mod trade_unlock;
16mod trade_write;
17
18use crate::state::ServerState;
19
20// ========== Server ==========
21
22#[derive(Clone)]
23pub struct FutuServer {
24    pub state: ServerState,
25}
26
27impl FutuServer {
28    pub fn new(state: ServerState) -> Self {
29        Self { state }
30    }
31}
32
33impl FutuServer {
34    pub(crate) fn tool_router() -> rmcp::handler::server::router::tool::ToolRouter<Self> {
35        Self::system_tool_router()
36            + Self::market_tool_router()
37            + Self::combo_tool_router()
38            + Self::qot_3401_plus_tool_router()
39            + Self::reference_tool_router()
40            + Self::reference_corporate_short_brokers_tool_router()
41            + Self::reference_f10_tool_router()
42            + Self::reference_price_reminder_tool_router()
43            + Self::reference_screen_unusual_tool_router()
44            + Self::reference_shareholders_insider_tool_router()
45            + Self::subscription_tool_router()
46            + Self::trade_read_tool_router()
47            + Self::trade_unlock_tool_router()
48            + Self::trade_write_tool_router()
49    }
50}
51
52#[rmcp::tool_handler(router = Self::tool_router())]
53impl rmcp::ServerHandler for FutuServer {}
54
55#[cfg(test)]
56mod tests;