trigger_buildLABSCO SUMMARY
Search that actually filters, and a clock.
Two things set it apart from a thin API wrapper. search_builds takes status, branch, user, date range and tags together, which is the query you actually want when something broke overnight. And get_current_time exists because models otherwise date-reason from training data — a small tool that stops a whole class of wrong answers about recent builds.
What it is
A Go MCP server that exposes JetBrains TeamCity as tools and resources. It speaks JSON-RPC 2.0 over HTTP or stdio, authenticates to TeamCity with an API token, and caches API responses briefly so repeated questions do not hammer the server. Everything is configured through the environment; there is no config file.
What you get
- Builds started, stopped, pinned and labelled —
trigger_build(with an optional branch and build properties),cancel_build,pin_build,set_build_tag - Build history searched across status, branch, user, date and tags rather than one page at a time —
search_builds - Build configurations found by search, so you can go from a name you half-remember to a
buildTypeId—search_build_configurations - A build's log and its test results pulled back for analysis —
fetch_build_log,get_test_results - Artifacts downloaded from a finished build —
download_artifact - The server's real current date and time, so a model does not reason about "last week" from its training data —
get_current_time - Five read-only resources for browsing:
teamcity://projects,teamcity://buildTypes,teamcity://builds,teamcity://agents,teamcity://runtime
Requirements
Your TeamCity URL in TC_URL and an API token in TC_TOKEN. Optionally SERVER_SECRET to require HMAC authentication from clients, which the HTTP examples send as a bearer header. It listens on LISTEN_ADDR, default :8123, or runs over stdio with --transport. TC_TIMEOUT defaults to 30s, CACHE_TTL to 10s, and TLS_CERT with TLS_KEY turn on TLS. Build it with the included make target, or use the Docker image, the Compose file or the Helm chart.
Setup effort
One command plus a key — docker run --rm -i -e TC_URL -e TC_TOKEN itcaat/teamcity-mcp:latest --transport stdio
USE CASES
Finding out why the nightly build broke
Search builds filtered to the branch and a failing status, pull the log for the one that failed, and read the test results rather than scrolling the web UI.
Kicking off a build on a branch
Find the configuration by name to get its id, then trigger it with the branch and any properties it needs.
Keeping a build around and labelled
Pin the release build so cleanup does not take it, and tag it so it is findable later.
Getting an artifact out without a browser
Download the artifact directly from the finished build instead of navigating to it and clicking through.
Asking about "the last few days" and getting it right
Let the model read the server's real date first, then run a date-filtered build search against it.
10 tools
Listed in project docs. Your client may show a different list.
cancel_buildpin_buildset_build_tagdownload_artifactsearch_buildsfetch_build_logsearch_build_configurationsget_current_timeget_test_resultsBEFORE YOU INSTALL
What to know first
Tools you get
10 tools named in the project's documentation.
Requires
- docker on PATH
- TC_TOKEN in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
docker run --rm -i -e TC_URL -e TC_TOKEN itcaat/teamcity-mcp:latest --transport stdioMCP Clients
Cursor
{
"mcpServers": {
"teamcity": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"TC_URL",
"-e",
"TC_TOKEN",
"itcaat/teamcity-mcp:latest",
"--transport",
"stdio"
],
"env": {
"TC_URL": "<YOUR_TC_URL>",
"TC_TOKEN": "<YOUR_TC_TOKEN>"
}
}
}
}