func getSubRequest()

in pkg/rules/mcp/server_setup.go [87:149]


func getSubRequest(method mcp.MCPMethod, request *mcpRequest, message any) *mcp.Request {
	switch method {
	case mcp.MethodToolsCall:
		if msg, ok := message.(*mcp.CallToolRequest); ok {
			if request != nil {
				request.operationName = "execute_tool"
				request.methodName = msg.Params.Name
			}
			return &msg.Request
		}
	case mcp.MethodPromptsGet:
		if msg, ok := message.(*mcp.GetPromptRequest); ok {
			if request != nil {
				request.input["prompt_name"] = msg.Params.Name
			}
			return &msg.Request
		}
	case mcp.MethodResourcesRead:
		if msg, ok := message.(*mcp.ReadResourceRequest); ok {
			if request != nil {
				request.input["resources_uri"] = msg.Params.URI
			}
			return &msg.Request
		}
	case mcp.MethodInitialize:
		if msg, ok := message.(*mcp.InitializeRequest); ok {
			if request != nil {
				request.input["client_info_name"] = msg.Params.ClientInfo.Name
				request.input["client_info_version"] = msg.Params.ClientInfo.Version
			}
			return &msg.Request
		}
	case mcp.MethodResourcesList:
		if msg, ok := message.(*mcp.ListResourcesRequest); ok {
			if request != nil {
				request.input["cursor"] = msg.Params.Cursor
			}
			return &msg.Request
		}
	case mcp.MethodResourcesTemplatesList:
		if msg, ok := message.(*mcp.ListResourceTemplatesRequest); ok {
			if request != nil {
				request.input["cursor"] = msg.Params.Cursor
			}
			return &msg.Request
		}
	case mcp.MethodPromptsList:
		if msg, ok := message.(*mcp.ListPromptsRequest); ok {
			if request != nil {
				request.input["cursor"] = msg.Params.Cursor
			}
			return &msg.Request
		}
	case mcp.MethodToolsList:
		if msg, ok := message.(*mcp.ListToolsRequest); ok {
			if request != nil {
				request.input["cursor"] = msg.Params.Cursor
			}
			return &msg.Request
		}
	}
	return nil
}