McCoy attended Bullard High School in Fresno, California. As a senior, he had 70 receptions for 1,210 yards and 15 touchdowns as a tight end and wide receiver and 65 tackles and 14 sacks as defensive lineman.
As a freshman in 2006, McCoy played in only four games due to an injury and did not have a reception. As a sophomore in 2007 he played in all 13 games as a backup tight end and on special teams. He finished the season with two receptions for 18 yards and a touchdown. As a junior in 2008, McCoy started all 13 games at tight end, making 22 receptions for 256 yards and a touchdown.
During his senior year in 2009, McCoy started all 10 games for USC. He missed two games due to nagging injuries, and was named academically ineligible during the season finale against Boston College in the Emerald Bowl. McCoy finished the season with 22 catches for 457 yards and one touchdown. His most productive performance of his senior year came in the game against rival Notre Dame, catching 5 passes for 153 yards. McCoy left USC with 46 career catches, 731 career yards, and three career touchdowns.
McCoy was considered one of the top tight end prospects for the 2010 NFL Draft. He ended up being selected in the sixth round, 185th overall, by the Seattle Seahawks. The move reunited him with his college head coach from USC Pete Carroll who in 2010 took the head coaching job with Seattle.
On May 21, 2013, McCoy suffered a torn Achilles' during organized team activities, and underwent surgery three days later. His recovery was expected to take about six to nine months, prompting the Seahawks to waive him injured on May 28. After clearing waivers the following day, McCoy reverted to the reserve/injured list.
On July 29, 2014 McCoy suffered another torn Achilles' during training camp, his second in just over a year. The injury resulted in him missing the entire season and postseason.
On September 5, 2015, as part of the cutdown to a 53-man roster, the Seahawks terminated McCoy's contract.
McCoy signed with the Washington Redskins on September 7, 2015. He was waived on November 23, 2015.
The Seahawks re-signed him on December 9, 2015.