I don't think it's that hard. I gave that a bit of thought when I finished my degree. At the time, I had written an M:tG expert system, for my end-of-year project, that included a rules engine and an ability text parser [1]. The parser was written in Prolog with Definite Clause Grammars so it could
generate new ability text as easy as it could recognise it [2].
I realised that all it would take to make a community version of Magic would be to change all the parts of ability text that are IP in my grammar [3]. For example "tapping", "kavu", "merfolk" and "phyrexian mana" would be out. But other than that, about 60% of the game could be basically replicated. That's 60% because it was just a degree project and so incomplete (e.g. Planeswalkers had just come out and they weren't implemented).
Alternatively the entire engine and its language could be re-written from scratch, though that would take a lot more work.
As to having actual cards to play with, I thought it would be a great idea to let the players make their own cards, just like many casual players make their own proxies of published cards. That would add a creative element to the hobby, similar to modelling in Warhammer games, that I thought would make it into something entirely new.
Suffice it to say, after my degree I never had the time to actively pursue this. But I still think it's perfectly possible.
Edit: just to be clear, the reason why it's interesting to have a generator for rules text is that you can generate, and validate, new cards automagickally. Then you can let the players script their own cards and validate them against the parser. So the entire game is completely decentralised with the only authority being the parser (and its maintenance team). Game balance is a problem but that, too, can be dealt with by tweaking the parser so it won't generate or accept imba cards.
_______________
[1] M:tG Arena uses the same idea today, but that was back in 2011. To clarify, the idea is that the ability text on cards is parsed and interpreted just like a scripting language. The interpreter, then, is the rules engine. The alternative is to code each individual card separately, which was done by earlier systems but is complete madness given the thousands of M:tG cards that have to be treated this way.
[2] Prolog programs can be "run backwards" under some conditions, so a parser is also a generator.
[3] Again this was in Prolog so the grammar was the parser. Definite Clause Grammars are syntactic sugar for Prolog so they're executable as any Prolog program. So you write a grammar, you have a parser, and it's also a generator.