MCP goals

Most MUD clients and servers communicate by an informal protocol: lines of printable ASCII characters separated by newlines. This is closely related to the TELNET protocol, which will in fact interoperate with MUD servers. But TELNET clients don't provide user interface support for even the simplest of MUD tasks. Specialized MUD clients provided these tools.

Once people started to use clients, several realized that intelligence and user interface closer to the user could be exploited by the MUD.

In particular, the LambdaCore editor system allows an option to ship whole documents (to a mud.el variant) to be edited locally, then returned. The $gopher system can direct clients to fetch Gopher text directly (presenting a better UI and avoiding funneling texts through the MOO).

Such "requests" are out of band; that is, they can occur at any point in the interaction between client and server. In particular, client requests may occur while a MOO is using the read() primitive. The MOO server has a compile-time option to process lines starting with a given prefix as if they were truly out of band.

MCP is a simple protocol for transmitting structured messages between client and server. It traffics in "requests", which have types, properties, and optional multi-line extensions. Standard requests exist for local editing, URL display and gopher access.