Colorchange of metaballs or surface
You can create a gradient on separate object with no UV map, by using texture coordinates.
If we use the texture coordinates of another object (like an Empty), we can easily control the position of colors by translating, rotating or scaling the empty.


Add an Empty at the location you want a color change.
In the material of the meta-ball-object, add Texture Coordinate node with the Empty selected as the Object. Separate the Object coordinates and use the first output, the X coordinate. (Adjust this to your objects orientation obviously.) Since we only want the absolute distance on X and not the signed coordinates, add a math node Absolute resulting in values >= 0.


By transforming the empty, we can move and scale the gradient.

To be able to be able to influence the overall strength of the gradient, let's use the objects Z position. To get the same value for all position on our meta-object, subtract our Geometry's position from the Empty's position. I concatenated an Add operation, to offset the 0 position. By moving the empty along its Z axis, we can control a single value.



Combine both results with a multiply operation and use this output as the factor between your desired colors.



The resulting material can be controled using the empty. By moving it along the Z axis we control the overall intensity of the second color, and by moving and scaling the X axis we control the transformation of the gradient.





If you want to alter the transition you can use 


rgb curves

or a color ramp.