I noticed that for some board games, simple Monte Carlo Tree Search is surprisingly powerful. Very shortly (and badly) summarized: just simulate a lot of randomly played games starting from the current position, and pick the move that led to the highest percentage of wins.
Depending on how the game logic is implemented (with clear model/view separation), programming such an AI might be doable, though it works best for finite games, and your game definitely looks more complex than the simple games I tried it for.
Also, doing such a brute force approach might take a lot of CPU power, so doing it server side may become expensive. Anyway, it's just an idea that you might find useful...