Routing problem is one of the most important issues to a wireless sensor network (WSN), and multicast communication has become necessary to support some new applications. In the paper, we propose an energy-aware multicast routing algorithm for WSNs. The algorithm is based on geographic routing, and defines the multicast region as rectangle that has smallest area but covers all destination nodes, where an access point is selected as a gateway. The whole routing process includes two phases. The first phase is to seek a minimal energy path from the sink to the access point based on the idea of dynamic programming. The second phase is to search for a broadcast tree between the access point and the destination nodes in the multicast region. Experiments indicate that our algorithm has better performance on energy expends and success rate of tree setup.