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.
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.
- 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`
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.
One command plus a key — docker run --rm -i -e TC_URL -e TC_TOKEN itcaat/teamcity-mcp:latest --transport stdio, then supply credentials
