You can't use MetaMask on server-side because window is not defined on Server. A workaround for this is that you can connect to INFURA when you want to use web3 in your React component server-side or without MetaMask support.
Here's how you can use react-web3-provider component.
Add the Web3Provider to your root React component:
import Web3Provider from 'react-web3-provider';
ReactDOM.render(
    <Web3Provider
        defaultWeb3Provider="https://mainnet.infura.io/YOUR_API_KEY"
        loading="Loading..."
    >
        <App />
    </Web3Provider>
)
Then in the component where you want to use Web3:
import { withWeb3 } from 'react-web3-provider';
class MyComponent {
    render() {
        const { web3 } = this.props;
        web3.eth.getAccounts(console.log);
        // Version 1.0.0-beta.35
        return "Web3 version: {web3.version}";
    }
}
export default withWeb3(MyComponent);