AFAIK, the difference is between having an input stream of type [Char] vs. having a stream of tokens, e.g. [MJVal]. I haven't used Parsec myself, but perhaps you want something of type 'GenParser MJVal s r' for some state s and return type r?
There's an excellent set of lecture notes from a class we have at Utrecht, formerly called Grammars and Parsing and now Languages and Compilers, in which we use parser combinators in Haskell .
http://people.cs.uu.nl/johanj/publications/MAIN.pdf
It's not Parsec, but there's plenty of useful general information in there, cf. 4.5.1, 4.5.2.
Regards,
Sean