You’ll need a powerful throwing action in order to develop a powerful serve. While many people talk about the fact that the service action is similar to the baseball pitching action, which is kind of true in as much as they are both throwing actions, there is one key difference.
The baseball pitch is a flat/level throw, whereas the tennis serve is an upwards throwing action that would deliver the ball into the air if it were a baseball pitch.
Simply throwing tennis balls over the net will improve this skill, but you must make sure that you throw not only for distance but for height as well.
Try to throw the ball as far and as high as you can to really make this simple skill tennis specific.
Too many players struggle with their ball toss. While it may look simple, without it your serve will never reach supersonic proportions.
You simply need to line your straight arm up with the net post (to your right if right handed, left if left handed) and release -- not throw or chuck -- the ball when your hand reaches eye level. This should ensure that the ball comes out of your hand in a good position and slightly forward into the court.
The forward direction is vital because it means that you can drive your weight (and your built up momentum) forward into the ball and into the direction of the serve.
A good way to practice is to place a spare racket on the court in front of you with the handle just on the baseline and the head inside the court at a small angle (45 degrees right if you are right handed, left if you are left handed).
Go through your service action as normal, but let the ball fall to the ground instead of serving. The ball should land on or near the racket head. Depending on where the ball lands, you will quickly see if you have any bad patterns emerging.