Doing volunteer work with your son is a great idea. However, your son's attitude is a stage that most children go thru. The more negative attention you pay to it the more selfish he'll be. If you can show as well as teach him how to be less selfishe, he'll pass thru it more quickly.
To help him get thru this phase is to recognize it for what it is, a developmental step. It's a continuation of learning about sharing. When he was younger he learned to share toys. Hopefully he learned this without being punished. Now he's learning how to share in a different way.
Being punished for wanting things for themselves and wanting to be the center of attention can lead to two different but equally undesirable personalities. One personality goes out of their way to be unselfish thus becoming martyrs unable to strike a balance in their life. An example is the view that women should take care of everyone else to the detriment of herself. The opposite personality that can develop is to feel like they never got enough and continue to work at getting it all for themselves. These adults are the truly selfish people. A six year old is not yet selfish. He's still learning.
This is not to say that you should give in to all of your son's wants. It does mean that rather than disciplining (punishing) him this stage of development requires teaching him how to be selfish in a healthy way as well as how to be unselfish.
Tell him, seriously but in a good natured way, that you want him to learn to share and help others just as you share with him and help others. Let him know it's normal to be self-centered and that eventually he'll be able to think about other people too. When you respond to his "I want" by saying it's Ok to want something but it's not OK to always get what we want, you are telling him he's a good person. When you punish him you're telling him he's a bad person. At this age he hasn't learned the difference between selfish and unselfish. This is an abstract concept.
You could tell him that it's your job as a parent to help him realize that he can't always have what he wants. I repeat the following phrase over and over to my grandchildren. "I know that you want that but I'm not getting it for you" in a good natured voice. Children need to know it's OK to want something. They also need to know that they can't have everything, or even most of what they want because that is the way life is.
Your son is behaving like a normal six year old who hasn't yet learned that we can't have everything. He's only been on this earth 6 years. He still has much to learn. It takes training and maturation to be able to think of others. At six he's still learning how to be aware of himself as a separate being from others. His brain isn't developed enough to think both of himself and others at the same time. He doesn't know how to think of others while still being himself. He is also learning that he has power and how he can use it.
Things that both of you could do together as volunteers in areas that would show him the less fortunate are rare. I learned much about sharing my abilities thru going to church. At church suppers I helped set the table and clear the table while experiencing the pleasure of having fun being helpful because many adults told me what a big girl I was to help. This taught me that it was good to help.
I also learned about the difference between being selfish and unselfish in Sunday School classes. Sunday School instilled values that I continue to practice.
My daughter and her children went to a church in which the youth group helps people in various ways. My daughter volunteered to help the Youth Group leader and was able to take my granddaughter to some of the places. My granddaughter helped rake and sack leaves for an elderly couple. She and some of the younger kids did play some too. They all had a good time together helping someone else.
Do you have a neighbor that could use some help; perhaps because of age or poor health. I volunteered with Metropolitan Family Services. I went to an elderly woman health to pick up her grocery list and then did her shopping. Your son could help you do that. When you get to the approximate location of an item, ask him to find it.
You can help your son feel good about helping others by you volunteering at school. Perhaps have him help you shop for classroom snacks and have him take them to the classroom. Have him help you shelve books in the library after school.
Take toys to agencies that give them to less fortunate children. A mother answered another mother's question by listing several organizations that will accept toys as well as talk with the child about how he is helping.
You can arrange for the two of you to visit a fire station where a fireman can tell him how they help people. Be sure to ask for that sort of tour. Not all firemen are good at talking about their job.
Perhaps you could arrange to vist a nursing home. Have him make card(s) which he could give to specific recommended person(s).
At home, you can ask him to help you with something. Praise him for helping you. Today, my 5 yo grandson was pleased with himself as he put silverware around the table. His face was shining with a big smile.
Is your son invited to birthday parties. Help him pick out a gift. This will be a great opportunity for you to say, "I know you want such and such but today we're shopping for so and so. When it's your birthday you'll get a gift. You'll have to say it over and over. Repetition is a good way to learn.
Help your son make cards and/or gifts for family and friends' birthdays.
You can show him a useful way to use power by giving him an allowance or small amounts for doing certain things around the house. My daughter's babysitter gave her quarters to "dust" the furniture. She saved them up. I gave her small amounts of money. She was then able to buy herself some small thing. She was proud because she had earned the money herself.