The actual servlet that does not work is hosted at CgiAlt/Cgi.
I am not sure what you mean by "depending on something external to the context".
In Tomcat 6 I just deployed CgiAlt.war started up Tomcat ane everything worked.
Does that answer your question?
What is the file CgiAlt.xml which is being read as per your Tomcat 6 log files are concerned? What is the purpose of this and where is it located? And in your Tomcat 6 logs there's no evidence that a context called "CgiAlt" is deployed successfully either?
And what options you tried deploying the app in Tomcat 7 (i.e.: unpack the WAR inside webapps and restart the tomcat)?