I would like a tool to help with ensuring our TFS (Microsoft Team Foundation Server) instance is running and accessible and monitor the appropriate parties if something goes wrong. Does something like this exist? If not it shouldn't be too hard to write since the TFS object model is pretty well exposed in .Net. Is this a task that is better handled by generic server monitoring software? Do people normally worry about monitoring specific apps within a server?
There are a couple of ways you could do this.
Monitor the web UI You could install the web access power tool and test to ensure that the web site is up and available with an existing website monitoring product.
Write a utility as you suggest The TFS API is very simple, easy to use and is well documented. It would be an afternoons work to write something that can check if a user can log into a server you can find some examples here http://www.tfsexamples.com
Rely on users to tell you Developers using TFS rely on it heavily and if the server is unavailable you will know very quickly.
Grant Holliday's reporting services pack is quite useful for eyeballing server health. To get the most out of it you'll need to have upgraded your TFS database to SQL Server 2008, but the 2005 reports can give a general idea of use.
Sure MS Systems Center Operations Manager has a Management Pack for TFS Server. You can download the Management Pack here.
Your question about do people normally worry about monitoring specific applications within a server? It depends, your better shops will have monitoring in place for most applications. They will also have SLA (Service Level Agreement) and OLA (Operational Level Agreement) for applications and the components that makeup the application.