This is not so easy. For instance on your Cisco you must first collect all defined VLAN id’s and then you use these id’s as context in your SNMP request.
I have build a MAC inventory for some of our devices.
If you want, you can try this mkp. It is possible that you need to modify the code for your needs. You can say for every manufacturer you need a different approach.
This mkp was build with 1.6 i think. It will not work with 2.0