I don't know about the Metadata API, but it's certainly possible using the Partner API. You'd have to do the DescribeGlobal call to get all of the objects, which includes an array of fields on each object. Then, it's just a loop within a loop to look at each field.
ORRRRRRR you could use SDDC, which already does exactly what you're looking for. You can export every last field in your Salesforce org to a spreadsheet, either into separate tabs per object OR squish it all into a single Schema tab like you asked about. And you can filter the fields by Standard/Custom/Managed, and even Read/Write status (eg, show me all Custom fields that are not read-only). Also, SDDC includes FIELD DESCRIPTIONS!!
SDDC is made by yours truly, released into the wild just this morning actually. https://aegissoftworks.com