How to let the server response to button click on client side?

Hey guys, I am learning the new network system of Unity. I was trying to build a game where one player creates a server, other players need to connect to the server, and the server player will click “start” button to start the game.

So there is one button on the screen, server player will see it as the “start button”, client players will it as “ready” button. The server player should not be able to click the “start” button until all client players are ready.

But I failed to let the server response the button click on client side.
Here is my code, basically what I have is: the onClickStartBtn() is called when the button is clicked, if it is clicked by a client, it will call the command, which will change the color of the button on the server side. But it is not working.

What am I missing here, help please!

ps: This is not a script for the player prefab, it is a script that dealing with UI changes.

Thanks a lot!

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
using UnityEngine.UI;

public class UIManagerScript : NetworkBehaviour {

    Button StartBtn;
    int clicked = 0;

	// Use this for initialization
	void Start () {
        StartBtn = GameObject.Find("StartBtn").GetComponent<Button>();
        if (StartBtn == null)
        {
            Debug.Log("Cannot find the button.");
        }
        else if (isServer)
        {
            StartBtn.GetComponentInChildren<Text>().text = "Start Game";
            StartBtn.image.color = Color.red;
            StartBtn.enabled = false;
        }
        else if (isClient)
        {
            StartBtn.GetComponentInChildren<Text>().text = "Ready";
            StartBtn.image.color = Color.red;
        }
    }
    public void OnClickStartBtn()
            {
                clicked += 1;
                clicked = clicked % 2;
                
                if (isClient)
                {
                    if (clicked == 1)
                    {
                        CmdClientReady(true);
                        StartBtn.image.color = Color.green;
                    }
                    else if(clicked == 0)
                    {
                        CmdClientReady(false);
                        StartBtn.image.color = Color.red;
                    }
                }
                
            }
        
    [Command]
    void CmdClientReady(bool ClientIsReady)
    {
        Debug.Log("command received");
        StartBtn.enabled = ClientIsReady;
        if (ClientIsReady)
        {
            StartBtn.image.color = Color.blue;
        }
            else
        {
            StartBtn.image.color = Color.grey;
        }
    }

I have same problem.