Skip to main content

futu_mcp/
tools.rs

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