First there is not much difference between a current source and a current sink.
You could argue that a current source pushes current into something, and a current sink pulls it out on the other end, but in the end the electrons run in circles and it's the same.
Once you realize that, then you can build a standard current sink, with a current measurement shunt, a variable voltage reference (start with a potendio meter, later use filtered PWM, or a DA converter)
The rest is an opamp to compare the voltage over your current mearuement shunt with your setpoint from the potentiometer, and control a switch.
It does not matter much whether you use a NPN transistor or N-channel MosFET, as the opamp will compensate for most of the differences of these semiconductors.
A MosFET can regulate to lower output voltages, but you need some voltage drop over the shunt anyway.
A NPN transistor will always have a voltage drop between Collector and Emitter, even when driven into saturation and under light collector currents.
Transistors tend to have lower leakage currents compared with MosFET's.
With this "standard" current sink you will face a few problems.
The first is to get it stable.
Your 200V input requirement does not add much special to the current sink, you just need a 200V (unregulated) voltage source, and of course need a MosFET or NPN transistor that can withstand those voltages.
The voltage over the current shunt, and therefore also the opamp input will be low, and the output of the opamp will be around 600mV higer than the Shunt voltage (for NPN bipolar transistor) or 2 to 5V higher for a N-channel MosFET.
You can start experimenting from a lower output voltage, for example a 30V lab power supply to get the control loop stable.
If you make sure the microcontroller is solidly grounded, and your 200V supply is fused properly then the whole thing is already starting to look somewhat safe.
But when messin' with higher voltages a bit of extra isolation is advisable. So use a floating power supply for your microcontroller, and ad a few optocouplers for communication.
I2C is a bit complicated for optocouplers, because information goes in two directions through the wires.
Both SPI and UART are easy to do with optocouplers, but UART only needs one optocoupler for each direction.
Another important issue is how to turn the thing on.
If your "device" is not connected yet between the 200V and the current sink, then the setpoint is very likely to be higher then the voltage over the shunt, (Which is 0,0V because there is no current) and the opamp will turn your controlling device fully open, and then, if you give it 200V though your test setup the opamp needs time to react and you will have a high current spike first.