I've spent a couple of hours building an issue tracker integration plugin for TFS. Here the main issue is that TFS provides only an official .NET API to interact with it, so I went down the route of creating a .NET web service which the TC plugin talks to. After trying to figure out why my work items weren't being shown in TC I read the documentation a little more carefully and I realized than you need the check-in comment to contain the ID of the work item for it to work.
This is a requirement which entails changes to our current process and I'm wondering why TC cannot ask the issue tracker plugin by changeset number instead of parsing the check-in comment.
I am aware that the current ITI plugin infrastructure is built to be general-purpose, and this would work only if you are using TFS for both source control and issue tracking, but well, that would be a great optimization for those using both together.