"I think Sen. Cruz is free to do whatever he wants within the rules of the Senate," McCain said on CNN. "I will again state unequivocally that this is not something that we can succeed."
The House is set to vote Friday on legislation that would fund the government through Dec. 15 but would defund ObamaCare.
Senate Democrats plan to strip the ObamaCare defunding language from the measure, and send a clean government-funding bill back to the House.
A number of GOP senators, including McCain, have come out forcefully against the House measure, saying it could lead to a government shutdown and hurt the Republican brand.
“In the U.S. Senate, we will not defund ObamaCare,” McCain said. “And to think we can is not rational.”
McCain did not blame Speaker John Boehner (R-Ohio) for the plan, saying Boehner was forced to bow to conservative pressure.
“I don’t know, except that it’s pretty obvious that he has great difficulties within his own conference,” McCain said. “But I can’t second-guess John Boehner.”
Senate Democrats have devised a plan to vote on stripping the ObamaCare provision from the spending bill with a simple majority vote, which could complicate a Cruz-led filibuster.
—This post was updated at 6:19 p.m.