mcpField
T
TeamCity CI/CD

TeamCity CI/CD

本地服务
blog.wentland.io云与基础设施02 周前更新

关于 TeamCity CI/CD

readonly-mcp-teamcity 是面向 JetBrains TeamCity 的只读 MCP 服务,供 AI Agent 检索项目、构建、日志、测试和基础设施信息。其工具只执行 GET 请求,可用于查看和诊断 CI/CD 状态,而不能修改 TeamCity。

主要功能

  1. 01浏览项目和构建配置
  2. 02搜索构建并查看统计信息
  3. 03读取及搜索构建日志
  4. 04诊断失败并检查测试结果
  5. 05查看队列、Agent 和版本变更

适用场景

  1. 01查找指定项目的构建配置
  2. 02排查构建失败原因和错误日志
  3. 03检查失败测试及调查状态
  4. 04查看离线构建 Agent 和等待队列

MCP 相关

该 MCP 服务将 TeamCity 的项目、构建、日志、测试、Agent 和变更信息以只读工具提供给 MCP 客户端。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"desty2k-teamcity": {
"command": "uvx",
"args": [
"readonly-mcp-teamcity"
],
"env": {
"TEAMCITY_BASE_URL": "<TEAMCITY_BASE_URL>",
"TEAMCITY_TOKEN": "<TEAMCITY_TOKEN>"
}
}
}
}
启动命令uvx readonly-mcp-teamcity
需要配置的环境变量
TEAMCITY_BASE_URLTeamCity server base URL (e.g., https://teamcity.example.com)
TEAMCITY_TOKEN密钥TeamCity REST API bearer token (scope it read-only)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypireadonly-mcp-teamcity1.0.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

readonly-mcp-teamcity

CI PyPI Python License: MIT

一个只读的模型上下文协议(MCP)服务,可让 AI Agent 探索 JetBrains TeamCity 服务:项目、构建配置、构建、日志、测试结果、问题、队列、Agent 和 VCS 更改。共 29 个工具,全部只读。

快速开始

安装好 uv 后,无需安装其他内容:

claude mcp add teamcity \
  -e TEAMCITY_BASE_URL=https://teamcity.example.com \
  -e TEAMCITY_TOKEN=your-token \
  -- uvx readonly-mcp-teamcity

uvx 会将软件包下载到缓存的隔离环境中并运行。 需要 Python 3.11 或更高版本。

只读是设计使然。 此服务只会发出 GET 请求(如果 HTTP 客户端新增任何其他方法,测试就会失败)。它无法在 TeamCity 中触发、取消、固定、添加标签或修改任何内容,并且每个工具都标注了 readOnlyHint。请在 TeamCity 端将令牌设为只读,作为第二道防线:参见 令牌。阅读关于此服务的文章以及我为何构建只读 MCP 服务。

令牌

在 Profile → Access Tokens 下创建令牌。将 Permissions scope 设为 Limit per project,选择根项目(或 Agent 应该能查看的项目),并选择 Read-only 预设。即使客户端行为异常,这种范围的令牌也无法更改任何内容。

Read-only 预设会选择 TeamCity 标记为只读的 14 个 VIEW_* 权限,其中包括用于 Agent 详情和服务设置的全局权限。令牌不会获得超出其所有者权限的权限:使用仅拥有 Project viewer 角色的用户所创建的令牌时,Agent 工具仍可正常工作;get_server_health 会报告指标不可用,但仍会返回健康项。已在 TeamCity 2026.2.1 上验证:预设令牌无法固定构建(HTTP 403)。

工具

项目
工具描述
search_projects按名称、ID 或父级搜索项目;浏览层级结构。
get_project_details项目完整信息:子项目、构建配置、参数。
构建配置
工具描述
search_build_configs按项目 ID、构建类型 ID 或暂停状态进行结构化搜索。
find_build_config对配置名称和项目路径进行模糊搜索;标记不明确的匹配项并列出匹配项目。
get_build_config_details步骤、触发器、参数、VCS 根目录、设置、Agent 要求。
get_build_config_branches配置可以构建的分支,以及默认/活动状态。
构建
工具描述
search_builds搜索构建历史记录,可按配置、项目、状态、分支、日期等筛选。
get_build_details单个构建:状态、Agent、修订版本、参数、依赖项、测试摘要、标签。
get_build_statistics数值指标:耗时、测试数量、覆盖率、构件大小。
get_build_chain快照依赖链的上游(依赖项)和下游(依赖者)。
日志
工具描述
get_build_log分页获取日志,支持 tail 和行范围。
search_build_log在构建日志中进行全文搜索,并显示上下文。
测试与问题
工具描述
diagnose_build一次调用即可了解构建失败原因:问题、失败的测试(未静音的优先)以及日志中的错误行。
get_build_test_results构建中的测试记录,可按状态筛选。
get_test_details单个测试记录:失败原因、历史区间、静音/调查状态。
get_build_problems结构化的失败原因(编译、退出代码、依赖项)。
search_investigations按项目、构建配置或负责人查找正在进行的调查。
list_muted_tests当前已静音的测试,以及其范围、静音者和原因。
基础设施
工具描述
get_build_queue正在等待 Agent 的构建,以及等待原因。
search_agents构建 Agent 的连接/授权/启用状态及当前构建。
list_agent_poolsAgent 池及其 Agent 和项目数量。
get_agent_details单个 Agent 的状态,包括启用/授权说明、上次活动时间和当前构建。
list_build_artifacts浏览构建的制品目录树(一级目录)。
get_build_artifact_content读取文本制品(限制大小,支持按行分页)。
search_changes按构建、配置、项目、提交者或起始提交查找 VCS 变更(提交)。
get_change_details单个变更及其完整的已修改文件列表。
resolve_teamcity_url将 TeamCity 网页 URL 解析为项目/构建配置/构建/变更 ID。
get_server_infoTeamCity 版本、构建编号和运行时长。
get_server_health服务器健康状况项目及运行时指标(CPU、内存、队列)。

安装

无需安装即可运行(推荐):

uvx readonly-mcp-teamcity

或者将其安装到环境中:

uv tool install readonly-mcp-teamcity   # or: pip install readonly-mcp-teamcity

Docker

该镜像通过 8080 端口提供可流式 HTTP 传输。此传输没有身份验证,因此只能将其发布到主机的环回地址:

docker run --rm \
  -e TEAMCITY_BASE_URL=https://teamcity.example.com \
  -e TEAMCITY_TOKEN=your-token \
  -p 127.0.0.1:8080:8080 \
  ghcr.io/desty2k/readonly-mcp-teamcity:latest

配置

所有配置均来自 TEAMCITY_* 环境变量。

变量必填默认值描述
TEAMCITY_BASE_URL是—TeamCity 服务基础 URL(例如 https://teamcity.example.com)。
TEAMCITY_TOKEN是—REST API Bearer 令牌。请参阅令牌。
TEAMCITY_TIMEOUT否30HTTP 请求超时时间(秒)。
TEAMCITY_MAX_RETRIES否3对瞬时网络错误/5xx 错误的重试次数。
TEAMCITY_POOL_MAX_CONNECTIONS否20httpx 连接池大小。
TEAMCITY_DEFAULT_LIMIT否50列表工具的默认页面大小。
TEAMCITY_MAX_LIMIT否500最大页面大小。
TEAMCITY_INDEX_REFRESH_INTERVAL否300模糊索引刷新的间隔秒数。加载失败时会更快重试。
TEAMCITY_LOG_CACHE_MAX_BYTES否67108864构建日志缓存的大小上限。运行中的构建日志不会被缓存。
TEAMCITY_LOG_CACHE_TTL否300已完成构建的日志缓存保留秒数。
TEAMCITY_TRANSPORT否stdiostdio、http 或 sse。
TEAMCITY_HTTP_HOST否127.0.0.1http/sse 的绑定地址。这些传输没有身份验证;绑定到非环回地址时会记录警告。
TEAMCITY_HTTP_PORT否8080http/sse 传输的端口。
TEAMCITY_LOG_FORMAT否jsonjson(生产环境)或 text(本地开发)。
TEAMCITY_LOG_LEVEL否INFODEBUG、INFO、WARNING 或 ERROR。

请参阅 .env.example 获取可直接复制粘贴的模板。

OpenTelemetry 跟踪

跟踪为可选功能,禁用时不会执行任何操作。基础安装不包含 OTel SDK;安装额外组件并启用后,即可为每次上游 TeamCity 调用导出 span:

pip install 'readonly-mcp-teamcity[otel]'
export TEAMCITY_OTEL_ENABLED=true
export TEAMCITY_OTEL_ENDPOINT=http://localhost:4317   # optional; falls back to OTEL_EXPORTER_OTLP_ENDPOINT
变量默认值描述
TEAMCITY_OTEL_ENABLEDfalse跟踪总开关。
TEAMCITY_OTEL_SERVICE_NAMEreadonly-mcp-teamcity每个 span 上的 service.name。
TEAMCITY_OTEL_ENDPOINTunsetOTLP 收集器端点。
TEAMCITY_OTEL_PROTOCOLgrpcgrpc 或 http/protobuf。
TEAMCITY_OTEL_CONSOLE_EXPORTfalse同时将 span 输出到 stderr。

MCP 客户端配置

Claude Desktop

将以下内容添加到 claude_desktop_config.json(macOS 上的 ~/Library/Application Support/Claude/,Windows 上的 %APPDATA%\Claude\):

{
  "mcpServers": {
    "teamcity": {
      "command": "uvx",
      "args": ["readonly-mcp-teamcity"],
      "env": {
        "TEAMCITY_BASE_URL": "https://teamcity.example.com",
        "TEAMCITY_TOKEN": "your-token"
      }
    }
  }
}
Claude Code

请参阅快速开始。

对比

截至 2026 年 11 月。依赖这些信息之前,请先查看各项目本身。

本服务JetBrains MCP (2026.1+)Daghis 2.12.12itcaat 1.0.8kate-horshchar 1.4.0
写入操作按设计不支持默认安全模式下可创建个人构建;brave 模式下支持更多操作默认可触发和取消;Agent 可切换到完整模式可触发、取消、固定、添加标签;没有关闭开关无,仅支持 GET
运行位置你的机器TeamCity 服务端(/app/mcp)你的机器你的机器你的机器
根据模糊名称查找配置基于名称和项目路径的模糊索引未说明仅定位器定位器部分匹配不支持
粘贴 TeamCity URL支持现代、简短和旧版 URL未说明不支持不支持不支持

来源:JetBrains AI Agent 集成、 JetBrains/teamcity-mcp、 Daghis/teamcity-mcp、 itcaat/teamcity-mcp、 kate-horshchar/teamcity-qa-mcp。 JetBrains 插件 README 与其帮助页面对 brave 模式是否默认开启说法不一;请检查你的服务设置。

如果你希望 Agent 对 TeamCity 执行操作,请使用内置服务。如果你希望 Agent 只查看信息,请使用此服务。

示例问题

  • “查找 auth 服务的部署流水线。”
  • “显示 Proj_Build 最近 10 次构建,以及哪些构建失败了。”
  • “构建 12345 为什么失败?”(调用一次 diagnose_build)
  • “该构建中哪些测试失败了,错误是什么?”
  • “在构建日志中搜索 OutOfMemoryError。”
  • “目前哪些 Agent 离线?”
  • “构建队列中有哪些内容,为什么在等待?”
  • “谁在调查 Payments 项目中的故障?”
  • “有哪些提交包含在此构建中?”
  • “解析 https://teamcity.example.com/buildConfiguration/Proj_Build/12345。”

开发

git clone https://github.com/desty2k/readonly-mcp-teamcity
cd readonly-mcp-teamcity
uv sync --all-extras
uv run pytest --cov
uv run ruff check .
uv run ruff format --check .

针对真实服务执行实时冒烟测试(从 .env 读取凭据):

uv run python tests/smoke_test.py

许可证

MIT — 参见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。