MCPcopy Create free account
hub / github.com/KingOfBugbounty/enumrust / handle_call_tool_request

Method handle_call_tool_request

enumrust-mcp/src/main.rs:31–91  ·  view source on GitHub ↗
(
        &self,
        params: CallToolRequestParams,
        _runtime: Arc<dyn McpServer>,
    )

Source from the content-addressed store, hash-verified

29 }
30
31 async fn handle_call_tool_request(
32 &self,
33 params: CallToolRequestParams,
34 _runtime: Arc<dyn McpServer>,
35 ) -> std::result::Result<CallToolResult, CallToolError> {
36 let tool: tools::EnumRustTools = params.try_into()?;
37 let output = match &tool {
38 tools::EnumRustTools::SubdomainEnumTool(t) => {
39 let mut cmd = t.call_tool();
40 cmd.output().map_err(CallToolError::new)?
41 }
42 tools::EnumRustTools::DnsResolveTool(t) => {
43 let mut cmd = t.call_tool();
44 cmd.output().map_err(CallToolError::new)?
45 }
46 tools::EnumRustTools::IpScanTool(t) => {
47 let mut cmd = t.call_tool();
48 cmd.output().map_err(CallToolError::new)?
49 }
50 tools::EnumRustTools::HttpProbeTool(t) => {
51 let mut cmd = t.call_tool();
52 cmd.output().map_err(CallToolError::new)?
53 }
54 tools::EnumRustTools::JsCrawlTool(t) => {
55 let mut cmd = t.call_tool();
56 cmd.output().map_err(CallToolError::new)?
57 }
58 tools::EnumRustTools::AdminFinderTool(t) => {
59 let mut cmd = t.call_tool();
60 cmd.output().map_err(CallToolError::new)?
61 }
62 tools::EnumRustTools::SecretsScanTool(t) => {
63 let mut cmd = t.call_tool();
64 cmd.output().map_err(CallToolError::new)?
65 }
66 tools::EnumRustTools::VulnScanTool(t) => {
67 let mut cmd = t.call_tool();
68 cmd.output().map_err(CallToolError::new)?
69 }
70 tools::EnumRustTools::WordPressScanTool(t) => {
71 let mut cmd = t.call_tool();
72 cmd.output().map_err(CallToolError::new)?
73 }
74 tools::EnumRustTools::InfoDisclosureTool(t) => {
75 let mut cmd = t.call_tool();
76 cmd.output().map_err(CallToolError::new)?
77 }
78 tools::EnumRustTools::FullScanTool(t) => {
79 let mut cmd = t.call_tool();
80 cmd.output().map_err(CallToolError::new)?
81 }
82 };
83
84 if output.status.success() {
85 let stdout = String::from_utf8_lossy(&output.stdout).to_string();
86 Ok(CallToolResult::text_content(vec![TextContent::from(stdout)]))
87 } else {
88 let stderr = String::from_utf8_lossy(&output.stderr).to_string();

Callers

nothing calls this directly

Calls 1

call_toolMethod · 0.80

Tested by

no test coverage detected