团队城 MCP 服务器
一个模型控制协议(MCP)服务器,将AI编码助手与JetBrains TeamCity CI/CD服务器相接,将TeamCity操作暴露为MCP工具.
[注] 项目状况(2026年10月):稳定,低调维护. 这是它所要做的事情,现在已不再在积极发展之中。 它仍然有效,仍然可以安装;问题和PR可能会得到缓慢或没有反应,而安全修复是最佳的.
JetBrains现在为TeamCity(TeamCity)搭载了官方AI集成——一个MCP服务器被建入TeamCity 2026.1+和 团队城市CLI 具有可安装的代理技能——这是大多数工作流程更好的默认. 见 比起JetBrains的官方工具 以下为收养前.
概览
TeamCity MCP Server允许使用AI动力编码助理(Claude Code, Cursor, Windsurf)的开发者通过MCP工具直接从开发环境与TeamCity互动.
从1.x升级? 2.0.0版本将15个工具从Dev移动到Full模式,包括队列管理,代理兼容性检查,以及服务器健康监测等. 如果您在 Dev 模式中依赖于这些工具, 请切换到
MCP_MODE=full或使用运行时模式切换(v2.1.0+). 见 变动情况 详细情况.
特征
双业务模式
-
开发模式 (默认):安全 CI/CD 操作(31个工具,~14k上下文符)
- 触发器构建并监视状态
- 获取构建日志并检查测试失败
- 列出工程、配置和队列
- 读取参数并调查问题
-
完整模式: 完成基础设施管理(87个工具,~26k上下文符)
- 所有 Dev 模式特性, 外加 :
- 创建和克隆构建配置
- 管理构建步骤、触发和依赖
- 配置 VCS 根和代理
- 参数的完整 CRUD( 构建配置、 项目和输出参数)
- 队列管理和服务器管理
运行时间模式切换(v2.1.0+): 运行时在模式间切换 get_mcp_mode 财务报告和审定财务报表 set_mcp_mode 工具 - 不需要重新启动 。 支持通知的MCP客户端会自动看到工具列表更新.
见 工具模式矩阵 用于87个工具的完整清单及其按模式的可用性.
关键能力
- 触发和监视器构建、获取日志并检查测试失败
- 基于 Token 对 TeamCity 的认证; 在日志中编辑的敏感值
- 现代架构:简单,有单通客户端的直接执行
- 性能意识:快速启动,间接费用最低
- 模块界限明确的清洁编码库
比起JetBrains的官方工具
截止2026年10月 (TeamCity 2026.2,TeamCity CLI 1.6),JetBrains为AI代理的两条一线航道,两者均普遍可用并获得官方支持:
- 内建的 MCP 服务器 – 每个 TeamCity 2026.1+ 服务器( Cloud and On-Premises) 都会在
<server-url>/app/mcp,所以没有安装。 这是一个刻意的小工具: 建立日志,通用 REST APIGET编号 :POST通过工具,以及(自2026.2)管道工具。 默认情况下, 它运行在一个安全模式中, 代理可以读取并排队列个人构建; 一个选择中的“ 勇敢模式” 允许它发送任意 RESTPOST请求并编辑或删除管道。 自2026.2起,您也可以与OAuth签约,而不是粘贴访问符. - 团队城市CLI ——开源
teamcity命令(TeamCity 2020.1+),具有可安装代理技能(teamcity skill installClaude Code, Cursor, 和其他探员的 它覆盖运行,日志,测试,队列,代理,池,项目,VCS根,参数,以及管道,返回到原始的REST访问通过teamcity api,并具有只读模式(TEAMCITY_RO=1JetBrains自己的文件将其描述为两个选项中更广泛的.
teamcity-mcp 预示着工具化和重合性很强. 官方工具是今天更好的默认. MCP仍然提供什么 比以前更狭窄:
- 一个MCP服务器,服务于2026.1. 如果您的客户端只说MCP,而您的TeamCity服务器在内置端点之前就已经存在,这仍然可行(TeamCity 2020.1+).
- 目的性制造的MCP工具,而不是REST通过. 它暴露出87个打字工具(由 Dev/Full 模式指定),因此代理商不需要了解REST路径和定位器——它涵盖了由支持的操作
PUT编号 :DELETE(例如赋能剂或删除参数),内置的MCP通用GET编号 :POST工具无法到达.
JetBrains的工具正在迅速演变,因此与其在这里按特点进行对比(它会很快被扭曲),不如检查当前的文件并选择合适的:
- 2026.2号城市公告 ——管道工具,勇者模式,以及内置MCP的OAuth
- TeamCity 2026.1 公告 ——官方AI整合首发地
- AI 代理集成文件 ——内置的MCP,其工具,安全与勇敢模式
- 团队城市 CLI 文件 财务报告和审定财务报表 代理技能 ——终端+代理技能路径
如果你对JetBrains的CLI很满意,你可能根本不需要这个项目. 它仍然有麻省理工学院的许可,并且可以安装,不管内置设施还没有达到什么——如果你想自己更进一步,就把它叉开.
安装
先决条件
- 节点.js >= 20.1.0 (LTS版本20,22,24在CI测试)
- TeamCity Server 2020.1+ 有 REST API 访问权限
- TeamCity 认证符
快速启动
# Clone the repository
git clone https://github.com/Daghis/teamcity-mcp.git
cd teamcity-mcp
# Install dependencies
npm install
# Configure environment
cp .env.example .env
# Edit .env with your TeamCity URL and token
# Run in development mode
npm run dev
npm 软件包
通过npx运行MCP服务器(需要node 20.x). 设置您的 TeamCity 环境变量内置或通过 .env 在工作目录中.
# One-off run (inline envs)
TEAMCITY_URL="https://teamcity.example.com" \
TEAMCITY_TOKEN="<your_token>" \
MCP_MODE=dev \
npx -y @daghis/teamcity-mcp
# Or rely on .env in the current directory
npx -y @daghis/teamcity-mcp
克劳德代码
- 添加 MCP( 依赖
.env用于配置 :claude mcp add teamcity -- npx -y @daghis/teamcity-mcp
- 带有env vars(如果不使用.env):
claude mcp add teamcity -e TEAMCITY_URL="https://teamcity.example.com" -e TEAMCITY_TOKEN="tc_<your_token>" -- npx -y @daghis/teamcity-mcp
- 带有 CLI 参数( 建议用于 Windows ):
claude mcp add teamcity -- npx -y @daghis/teamcity-mcp --url "https://teamcity.example.com" --token "tc_<your_token>" --mode dev
- 添加
-s user以安装全用户范围而不是工程范围(默认) - 上下文使用量(Opus 4.1,估计数):
- Dev (默认): MCP 工具的 ~ 14k 令牌
- 完整( E)
MCP_MODE=full: MCP 工具的 ~ 26k 令牌
窗口用户
在 Windows 上, Claude 代码的 MCP 配置 可能无法正确合并环境变量。使用 CLI 参数作为变通:
{
"mcpServers": {
"teamcity": {
"command": "npx",
"args": [
"-y",
"@daghis/teamcity-mcp",
"--url",
"https://teamcity.example.com",
"--token",
"YOUR_TOKEN"
]
}
}
}
或使用配置文件来改善安全性( 在进程列表中无法显示) :
{
"mcpServers": {
"teamcity": {
"command": "npx",
"args": ["-y", "@daghis/teamcity-mcp", "--config", "C:\\path\\to\\teamcity.env"]
}
}
}
配置
环境与Zod统一验证. 支持的变量和默认值 :
# Server Configuration
PORT=3000
NODE_ENV=development
LOG_LEVEL=info
# TeamCity Configuration (aliases supported)
TEAMCITY_URL=https://teamcity.example.com
TEAMCITY_TOKEN=your-auth-token
# Optional aliases:
# TEAMCITY_SERVER_URL=...
# TEAMCITY_API_TOKEN=...
# MCP Mode (dev or full)
MCP_MODE=dev
# Optional advanced TeamCity options (defaults shown)
# Connection
# TEAMCITY_TIMEOUT=30000
# TEAMCITY_MAX_CONCURRENT=10
# TEAMCITY_KEEP_ALIVE=true
# TEAMCITY_COMPRESSION=true
# Extra headers attached to every TeamCity request — useful when TeamCity
# sits behind a reverse proxy that gates access on custom headers (e.g.
# Cloudflare Zero Trust service tokens). One env var per header; the part
# after `TEAMCITY_HEADER_` is used verbatim as the HTTP header name.
# Example (note the literal hyphens — most shells need quoting):
# TEAMCITY_HEADER_CF-Access-Client-Id=<id>
# TEAMCITY_HEADER_CF-Access-Client-Secret=<secret>
# Retry
# TEAMCITY_RETRY_ENABLED=true
# TEAMCITY_MAX_RETRIES=3
# TEAMCITY_RETRY_DELAY=1000
# TEAMCITY_MAX_RETRY_DELAY=30000
# Pagination
# TEAMCITY_PAGE_SIZE=100
# TEAMCITY_MAX_PAGE_SIZE=1000
# TEAMCITY_AUTO_FETCH_ALL=false
# Circuit Breaker
# TEAMCITY_CIRCUIT_BREAKER=true
# TEAMCITY_CB_FAILURE_THRESHOLD=5
# TEAMCITY_CB_RESET_TIMEOUT=60000
# TEAMCITY_CB_SUCCESS_THRESHOLD=2
这些值在 src/config/index.ts 消耗量 src/teamcity/config.ts 通过帮助获得者.
用法实例
与您的 AI 编码助理合并后 :
"Build the frontend on feature branch"
"Why did last night's tests fail?"
"Deploy staging with the latest build"
"Create a new build config for the mobile app"
工具响应和插座
- 答复:工具现在返回一致的MCP内容. 对于列表/操作
content[0].text包含一个JSON字符串。 示例形状 :{ "items": [...], "pagination": { "page": 1, "pageSize": 100 } }或者说{ "items": [...], "pagination": { "mode": "all", "pageSize": 100, "fetched": 250 } }。 。 。 . - PGination: 大多数列表QQ 工具被接受
pageSize, (中文(简体) ),maxPages,以及all数字 :pageSize每页控制项.all: true获取多页maxPages。 。 。 .- 遗产
count打开list_builds用于兼容,但pageSize优先选择.
校验和错误
- 输入验证: 用 Zod schemas 验证工具输入; 无效输入返回响应内容中的结构化错误有效载荷( JSON string) 与
success: false财务报告和审定财务报表error.code = VALIDATION_ERROR。 。 。 . - 设定错误: 通过全局处理器格式化错误 。 在制作中,消息可能进行分泌;敏感值(如信使等)被重新刻入日志.
API 使用量
import { TeamCityAPI } from '@/api-client';
// Get the API client instance
const api = TeamCityAPI.getInstance();
// List projects
const projects = await api.listProjects();
// Get build status
const build = await api.getBuild('BuildId123');
// Trigger a new build
const newBuild = await api.triggerBuild('BuildConfigId', {
branchName: 'main',
});
说明: 从
src/teamcity/index.ts仅用于兼容性,并包括占位符执行。 优先使用MCP工具(见上文链接的参考资料)或TeamCityAPI自动工作流程时显示在此 .
发展
# Run tests
npm test
# Run tests with coverage
npm run test:coverage
# Lint code
npm run lint
# Format code
npm run format
# Type check
npm run typecheck
# Build for production
npm run build
# Analyze bundle for Codecov
npm run build:bundle
CI 中的装订分析
CI 工作流程运行 npm run build:bundle 并上传生成的 coverage/bundles 使用 JSON 软件 codecov/codecov-action 与 javascript-bundle 插件 .
项目结构
teamcity-mcp/
├── src/ # Source code
│ ├── tools.ts # All 87 MCP tool definitions
│ ├── server.ts # MCP server setup
│ ├── api-client.ts # TeamCity API singleton
│ ├── config/ # Configuration with Zod validation
│ ├── teamcity/ # Domain logic (build, agent, config managers)
│ ├── teamcity-client/ # Auto-generated OpenAPI client
│ ├── types/ # TypeScript type definitions
│ └── utils/ # Logger, MCP helpers, pagination
├── tests/ # Unit and integration tests
├── docs/ # Documentation
└── scripts/ # Build and maintenance scripts
API 文档
MCP服务器曝光了TeamCity操作的工具. 每个工具对应特定的TeamCity REST API端点:
房舍管理
TriggerBuild- 排队新的建筑GetBuildStatus- 检查建设进度FetchBuildLog- 获取建立日志ListBuilds- 根据标准建立搜索系统
测试分析
ListTestFailures- 测试失败GetTestDetails- 详细测试信息AnalyzeBuildProblems- 查明失败原因
配置( 完全模式)
create_build_config- 创建新的TeamCity构建配置,并全力支持:- VCS 根 (Git, SVN, Perforce) 认证
- 构建阶梯( 标语、 Maven、 Gradle、 npm、 Docker、 PowerShell)
- 触发器(VCS, 调度, 完成建造, maven- snapshot)
- 参数和基于模板的配置
- 见 MCP 工具参考 用于参数细节和补充选项.
clone_build_config- 将现有配置复制到任何项目,保留步骤、触发器和参数.update_build_config- 调整名称、描述、文物规则和配置的暂停状态.manage_build_steps- 通过单一工具表面添加、更新、去除或重排构建步骤.manage_build_triggers- 以全部属性支持添加或删除构建触发器.create_vcs_root打开add_vcs_root_to_build- 定义VCS根并附以构建配置.
另见: docs/TEAMCITY_MCP_TOOLS_GUIDE.md (c) 扩大工作流程和实例,使之与当前的多边CP执行相一致.
捐款
我们欢迎捐款! 请看 捐款额 详细情况.
警卫
托肯管理
- 配置
TEAMCITY_TOKEN通过环境变量或配置文件(参见.env.example; 从不执行真实的标志 - 使用最小权限的指使; 只读指使为大多数 Dev 模式操作工作
- 仅基于托肯认证; MCP 服务器不支持用户名/ 密码字
- 日志编辑敏感值,包括符号
模式选择
- 偏爱 开发模式 除非明确需要完全模式——这限制了任何配置错误或迅速注射的爆炸半径
- 完整模式可以实现无法轻易消除的破坏性操作(项目删除、代理管理)
网络安全
- 总是使用 HTTPS 进行TeamCity 连接; 服务器不执行,而是强烈推荐
- MCP 服务器只连接到配置的 TeamCity URL; 没有进行其他网络呼叫
AI 助理考虑
- AI 助手可以通过在构建日志、测试输出或其他TeamCity数据中的即时注入来被操纵
- Dev 模式的有限工具集可以减少这种攻击的影响
- 所有动作都出现在 TeamCity 的相关用户下的审计日志中
- 构建日志和测试失败细节可能包含AI助手可见的敏感信息(机密,路径,内部URL)
仓库安全
此寄存器已启用 GitHub 秘密扫描和推取保护 。 见 警卫 脆弱性报告.
支助
- GitHub 问题 : 报告错误或请求特性
- 文号:
docs/此仓库中的文件夹
承认
- 优秀CI/CD平台城市
- 用于示范控制议定书规格的
- 持续支持的开源社区
- 见 第三次议会 NoTICES.md 第三方许可证
为喜欢高效 CI/ CD 工作流程的开发者所建 QQ