This doesn't even occur to some people, so I thank you--as a citizen of this world--for thinking along these lines. It is so important that children grow with a sense of community.
He is at the age where it's normal for him to be a bit selfish, so that's not a bad thing. Let him see you donating and otherwise giving. That "sense of community"--make it part of your everyday vocabulary and activity. Don't just give blankets and food at Christmas and Thanksgiving times. Don't make a big production of donating toys, and don't wait until you've a sack full. Let him see and hear you being concerned for how others are doing. Donate things as you come across them, so he sees it as a way of being and not an event. Maybe when you can, you should buy for others when you shop (little things are okay) so it doesn't look to him like you only give when you've finished with it. You know?
In your home, you can embrace and promote a sense of community when you're preparing dinner. Before drinking the last of the juice, ask someone to share it; help each other do things around the house. He won't get it all right now, but that's the foundation. Have him clean his room because that's his share of taking care of the family home, not because his toys might be broken if they remain in the floor. You know? Instead of saying, "If you don't pick up your toys, they'll be broken and you won't have them anymore," teach him that picking up his toys is his part in keeping the house clean, and everyone has a part. The consequences might feel personal, but the reason should not be just about his pleasure.
I rambled a little bit, but I hope that that helps.