futu_mcp/tools/
indicator.rs1use 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));