The way to do it is to take the MCS value denoted as I_MCS in table 22.214.171.124-1 and this gives you I_TBS.
You next have to know whether you're using spatial multiplexing or not. This is learned from DCI format, if is format 0 (uplink grant), or format 1 (1, 1a, 1b, ...) then it's only single layer, and Table 126.96.36.199.1-1 should be consulted. Merely use I_TBS and NPRB as indices into the table.
Of course excepting Format 1C, which uses Table 188.8.131.52.3-1. The TBS is only a function of I_MCS.
If the DCI is of the format 2 variety (2, 2a), then consult Table 184.108.40.206.2-1. This is a little trickier. The important thing to remember is that the goal of spatial multiplexing is to exploit the multipath in the RF environment by transmitting 2 signals on the same resource blocks at the same time, which essentially means that you need 2 different TBS for each spatial "layer" employed. TBS is then obtained as per Section 220.127.116.11.2 of 36.213:
For 1 <= NPRB <= 55, the TBS is given by the ( TBS I , PRB 2