What you're saying is that you'd want some type of "CLI" or command structure to access the various parameters through a single characteristic. I think that's definitely doable and you can use the already existing BLE UART examples provided by companies like Nordic in their SDK.
You'll definitely have to think about how your commands will be structured. For instance.
[Command][Command ID3][Command ID2][Command ID1][Command ID0]
Where each bracket is 1 byte. The first byte would be a "read" command and the remaining would be the parameter of what piece of the 300 params you want to access. I feel like there has to be some good libraries out there that help with this but I can't find any from a quick googling (in the past I've used home-grown ones)
You would use the same UUID as provided by the vendor for the UART characteristic. The problem here is, especially if you care about more "real time" results, is that you wouldn't be able to subscribe for notifications to this characteristic and then know what exactly changed.
The solution for that would to create a new service and have as many characteristics as necessary to notify that something has changed and it should be read over the BLE UART characteristic/service. Choosing a UUID for this is literally using a random generated UUID that doesn't fall in the Bluetooth SIG reserved UUID range.
Remember, the more services and characteristics you add, the more it weighs down on the resources of the uC. Depending on whatever else is going on in your code, you may have to be mindful of that!