Here is how I do it:
Setup variables in your Character blueprint for managing the state of your animations (i.e. IsCrouching).
Set these variables to Replication: Replicated.
When the crouch key is pressed on the client, call a function on the server and change the value of the replicated variable in the Character blueprint on the server side. (Variables only replicate from Server to Client, they do not replicate from Client to Server).
The server function in the Character blueprint should be set to Replicates: “Run on Server” and the Reliable checkbox should be checked.
In your Animation blueprint use these replicated variables to set the variables that control your state machine. Set the variables using the Event Blueprint Update Animation node.