I'd not to put information about an implementation of renderer into shader storage format.
My vision:
Renderer has a part of it which manages the uniforms.
Shader contains information which uniforms it needs. Position, matrix, etc. Renderer knows that say "position" is 3d vector and "MVP" is 4x4 matrix. And renderer also knows where to get the corresponding value and with which routine to bind it.
So even uniform name is enough for binding.
If a uniform is not a standard one, i.e. renderer doesn't know what it is, there should be a special handler for THIS shader (lets call it Effect) which knows it.
Actually, effect (if exists) queried first, than checked for standard list and if no match an error is raised.