Skip to main content

futu_mcp/tools/
indicator.rs

1use std::sync::Arc;
2
3use futu_net::client::FutuClient;
4use rmcp::{RoleServer, handler::server::wrapper::Parameters, service::RequestContext};
5
6use crate::handlers;
7use crate::tool_args::ProtoJsonReq;
8
9use super::FutuServer;
10
11impl FutuServer {
12    async fn futu_get_indicator_list_impl(
13        &self,
14        Parameters(req): Parameters<ProtoJsonReq>,
15        req_ctx: RequestContext<RoleServer>,
16    ) -> std::result::Result<String, String> {
17        let c2s = match handlers::proto_json::parse_c2s_json::<
18            futu_proto::qot_get_indicator_list::C2s,
19        >("indicator-list", &req.c2s_json)
20        {
21            Ok(c2s) => c2s,
22            Err(error) => return FutuServer::tool_err(error),
23        };
24        let client: Arc<FutuClient> = self
25            .read_client_or_err(
26                "futu_get_indicator_list",
27                &req_ctx,
28                req.api_key.as_deref(),
29                None,
30            )
31            .await?;
32        FutuServer::wrap_result(handlers::proto_json::indicator_list(&client, c2s).await)
33    }
34}
35
36include!(concat!(
37    env!("OUT_DIR"),
38    "/generated_mcp_routes_indicator.rs"
39));