Metamask is great for client side interactions with smart contracts and their functions. If installed, you can access the web3 that is injected into your browser:
// Get the contract instance using your contract's abi and address:
const contractInstance = web3.eth.contract(abi).at(contractAddress);
// Call a function of the contract:
contractInstance.someFunction({ from: sender, value: someValue, gas: limit },
(err, res) => { /** do something with results **/ });
You can even access the currently selected account in metamask with web3.eth.accounts[0]
.
This will require some front end development, but it's pretty straight forward.
The other alternative is to use Ethereum Wallet > Contracts > Watch Contract.
Again, enter the contract address and abi, and you can access all of the contract's functions through Ethereum Wallet's UI.