You can have your browser issue GET or POST requests to the server. Use GET for status checks and gathering information that doesn't change state like querying the current song. If state can change as a result of the HTTP request, such as a request to play the next item, use POST.
GET is easy:
Code:
<a href="mpc.cgi?var=something&var2=else">link</a>
Your CGI script will need to parse the QUERY_STRING environment variable which will contain "var=something&var2=else". Any unusual characters will be URL encoded. So "/" becomes "%2F" (hexadecimal representation) or spaces transform into "+" or "%20". I don't think you need to worry about URL decoding at this point though. It is perfectly legal to request "mpc.cgi?metadata" where QUERY_STRING would simply be "metadata".
In order to POST, you need a form. For example:
Code:
<form action="mpc.cgi" method="POST">
<input type="text" name="textbox" value="sometext">
<input type="submit" value="Go">
</form>
The default enctype is "application/x-www-form-urlencoded" so your script should read standard input and parse it just like QUERY_STRING for GET. In this case, standard input would contain "textbox=sometext". (There is another enctype "multipart/form-data" that is usually used when uploading files but that is harder to parse and not necessary here.)