MKV is just a container. It can contain a huge array of audio and video formats but is most often used to hold h264 video and AC3/DTS audio. Accordingly, you will need a method of splitting the MKV container into its audio and video streams and appropriate codecs for those audio and video streams.
I recommend using FFDShow to handle the audio and video streams. You can get it at the link below, it will handle almost every codec in existence including those which are hardware accelerated.
These are both system level directshow filters and will work with any application that uses directshow to get its filters. Self contained solutions such as XBMC and VLC contain their own demuxer and codec set. I've always found VLC to be an abhorrent buggy mess and XBMC is designed for a home theater.