@daghis/teamcity-mcp 2.4.1 → 2.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.4.3](https://github.com/Daghis/teamcity-mcp/compare/teamcity-mcp-v2.4.2...teamcity-mcp-v2.4.3) (2026-03-18)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * use individual property PUTs in update_vcs_root_properties to prevent wiping existing properties ([#431](https://github.com/Daghis/teamcity-mcp/issues/431)) ([85bac24](https://github.com/Daghis/teamcity-mcp/commit/85bac244cb55f458bc2d22844c993d7f0446ea57)), closes [#428](https://github.com/Daghis/teamcity-mcp/issues/428)
9
+ * use z.coerce.number() to accept string-encoded numeric params ([#432](https://github.com/Daghis/teamcity-mcp/issues/432)) ([6de9aa4](https://github.com/Daghis/teamcity-mcp/commit/6de9aa4c9b11e9c78a261c57381fc44e5f3ffd7b)), closes [#429](https://github.com/Daghis/teamcity-mcp/issues/429)
10
+
11
+ ## [2.4.2](https://github.com/Daghis/teamcity-mcp/compare/teamcity-mcp-v2.4.1...teamcity-mcp-v2.4.2) (2026-03-17)
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * apply npm audit fix for transitive dependency vulnerabilities ([#426](https://github.com/Daghis/teamcity-mcp/issues/426)) ([74fc355](https://github.com/Daghis/teamcity-mcp/commit/74fc355b0501a3a23a9a667b0d75f72bdc656cdb))
17
+
3
18
  ## [2.4.1](https://github.com/Daghis/teamcity-mcp/compare/teamcity-mcp-v2.4.0...teamcity-mcp-v2.4.1) (2026-03-13)
4
19
 
5
20
 
package/dist/index.js CHANGED
@@ -1205,7 +1205,7 @@ function debug2(message, meta) {
1205
1205
  // package.json
1206
1206
  var package_default = {
1207
1207
  name: "@daghis/teamcity-mcp",
1208
- version: "2.4.1",
1208
+ version: "2.4.3",
1209
1209
  description: "Model Control Protocol server for TeamCity CI/CD integration with AI coding assistants",
1210
1210
  mcpName: "io.github.Daghis/teamcity",
1211
1211
  main: "dist/index.js",
@@ -38770,7 +38770,7 @@ var isReadableStream = (value) => typeof value === "object" && value !== null &&
38770
38770
  var isAxios4042 = (error3) => (0, import_axios36.isAxiosError)(error3) && error3.response?.status === 404;
38771
38771
  var buildIdentifierSchema = import_zod4.z.object({
38772
38772
  buildId: import_zod4.z.string().min(1).optional(),
38773
- buildNumber: import_zod4.z.union([import_zod4.z.string().min(1), import_zod4.z.number().int()]).optional(),
38773
+ buildNumber: import_zod4.z.union([import_zod4.z.string().min(1), import_zod4.z.coerce.number().int()]).optional(),
38774
38774
  buildTypeId: import_zod4.z.string().min(1).optional()
38775
38775
  }).superRefine((value, ctx) => {
38776
38776
  if (!value.buildId && value.buildNumber === void 0) {
@@ -39142,8 +39142,8 @@ var DEV_TOOLS = [
39142
39142
  const schema = import_zod4.z.object({
39143
39143
  locator: import_zod4.z.string().min(1).optional(),
39144
39144
  parentProjectId: import_zod4.z.string().min(1).optional(),
39145
- pageSize: import_zod4.z.number().int().min(1).max(1e3).optional(),
39146
- maxPages: import_zod4.z.number().int().min(1).max(1e3).optional(),
39145
+ pageSize: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
39146
+ maxPages: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
39147
39147
  all: import_zod4.z.boolean().optional(),
39148
39148
  fields: import_zod4.z.string().min(1).optional()
39149
39149
  });
@@ -39245,9 +39245,9 @@ var DEV_TOOLS = [
39245
39245
  buildTypeId: import_zod4.z.string().min(1).optional(),
39246
39246
  branch: import_zod4.z.string().min(1).optional(),
39247
39247
  status: import_zod4.z.enum(["SUCCESS", "FAILURE", "ERROR"]).optional(),
39248
- count: import_zod4.z.number().int().min(1).max(1e3).default(10).optional(),
39249
- pageSize: import_zod4.z.number().int().min(1).max(1e3).optional(),
39250
- maxPages: import_zod4.z.number().int().min(1).max(1e3).optional(),
39248
+ count: import_zod4.z.coerce.number().int().min(1).max(1e3).default(10).optional(),
39249
+ pageSize: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
39250
+ maxPages: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
39251
39251
  all: import_zod4.z.boolean().optional(),
39252
39252
  fields: import_zod4.z.string().min(1).optional()
39253
39253
  });
@@ -39658,12 +39658,12 @@ var DEV_TOOLS = [
39658
39658
  handler: async (args) => {
39659
39659
  const schema = import_zod4.z.object({
39660
39660
  buildId: import_zod4.z.string().min(1).optional(),
39661
- buildNumber: import_zod4.z.union([import_zod4.z.string().min(1), import_zod4.z.number().int().min(0)]).optional(),
39661
+ buildNumber: import_zod4.z.union([import_zod4.z.string().min(1), import_zod4.z.coerce.number().int().min(0)]).optional(),
39662
39662
  buildTypeId: import_zod4.z.string().min(1).optional(),
39663
- page: import_zod4.z.number().int().min(1).optional(),
39664
- pageSize: import_zod4.z.number().int().min(1).max(5e3).optional(),
39665
- startLine: import_zod4.z.number().int().min(0).optional(),
39666
- lineCount: import_zod4.z.number().int().min(1).max(5e3).optional(),
39663
+ page: import_zod4.z.coerce.number().int().min(1).optional(),
39664
+ pageSize: import_zod4.z.coerce.number().int().min(1).max(5e3).optional(),
39665
+ startLine: import_zod4.z.coerce.number().int().min(0).optional(),
39666
+ lineCount: import_zod4.z.coerce.number().int().min(1).max(5e3).optional(),
39667
39667
  tail: import_zod4.z.boolean().optional(),
39668
39668
  encoding: import_zod4.z.enum(["text", "stream"]).default("text"),
39669
39669
  outputPath: import_zod4.z.string().min(1).optional()
@@ -39897,8 +39897,8 @@ var DEV_TOOLS = [
39897
39897
  const schema = import_zod4.z.object({
39898
39898
  locator: import_zod4.z.string().min(1).optional(),
39899
39899
  projectId: import_zod4.z.string().min(1).optional(),
39900
- pageSize: import_zod4.z.number().int().min(1).max(1e3).optional(),
39901
- maxPages: import_zod4.z.number().int().min(1).max(1e3).optional(),
39900
+ pageSize: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
39901
+ maxPages: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
39902
39902
  all: import_zod4.z.boolean().optional(),
39903
39903
  fields: import_zod4.z.string().min(1).optional()
39904
39904
  });
@@ -39987,8 +39987,8 @@ var DEV_TOOLS = [
39987
39987
  handler: async (args) => {
39988
39988
  const schema = buildIdentifierSchema.and(
39989
39989
  import_zod4.z.object({
39990
- pageSize: import_zod4.z.number().int().min(1).max(1e3).optional(),
39991
- maxPages: import_zod4.z.number().int().min(1).max(1e3).optional(),
39990
+ pageSize: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
39991
+ maxPages: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
39992
39992
  all: import_zod4.z.boolean().optional(),
39993
39993
  fields: import_zod4.z.string().min(1).optional()
39994
39994
  })
@@ -40049,8 +40049,8 @@ var DEV_TOOLS = [
40049
40049
  handler: async (args) => {
40050
40050
  const schema = import_zod4.z.object({
40051
40051
  projectId: import_zod4.z.string().min(1).optional(),
40052
- pageSize: import_zod4.z.number().int().min(1).max(1e3).optional(),
40053
- maxPages: import_zod4.z.number().int().min(1).max(1e3).optional(),
40052
+ pageSize: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
40053
+ maxPages: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
40054
40054
  all: import_zod4.z.boolean().optional(),
40055
40055
  fields: import_zod4.z.string().min(1).optional()
40056
40056
  });
@@ -40246,11 +40246,12 @@ var DEV_TOOLS = [
40246
40246
  updated: 0
40247
40247
  });
40248
40248
  }
40249
- await adapter.modules.vcsRoots.setVcsRootProperties(
40250
- typed.id,
40251
- void 0,
40252
- { property: properties },
40253
- { headers: { "Content-Type": "application/json", Accept: "application/json" } }
40249
+ await Promise.all(
40250
+ properties.map(
40251
+ (p) => adapter.modules.vcsRoots.setVcsRootProperty(typed.id, p.name, p.value, {
40252
+ headers: { "Content-Type": "text/plain", Accept: "text/plain" }
40253
+ })
40254
+ )
40254
40255
  );
40255
40256
  return json({
40256
40257
  success: true,
@@ -40287,8 +40288,8 @@ var DEV_TOOLS = [
40287
40288
  handler: async (args) => {
40288
40289
  const schema = import_zod4.z.object({
40289
40290
  locator: import_zod4.z.string().min(1).optional(),
40290
- pageSize: import_zod4.z.number().int().min(1).max(1e3).optional(),
40291
- maxPages: import_zod4.z.number().int().min(1).max(1e3).optional(),
40291
+ pageSize: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
40292
+ maxPages: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
40292
40293
  all: import_zod4.z.boolean().optional(),
40293
40294
  fields: import_zod4.z.string().min(1).optional()
40294
40295
  });
@@ -40698,8 +40699,8 @@ var DEV_TOOLS = [
40698
40699
  handler: async (args) => {
40699
40700
  const schema = import_zod4.z.object({
40700
40701
  locator: import_zod4.z.string().min(1).optional(),
40701
- pageSize: import_zod4.z.number().int().min(1).max(1e3).optional(),
40702
- maxPages: import_zod4.z.number().int().min(1).max(1e3).optional(),
40702
+ pageSize: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
40703
+ maxPages: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
40703
40704
  all: import_zod4.z.boolean().optional(),
40704
40705
  fields: import_zod4.z.string().min(1).optional()
40705
40706
  });
@@ -40757,8 +40758,8 @@ var DEV_TOOLS = [
40757
40758
  },
40758
40759
  handler: async (args) => {
40759
40760
  const schema = import_zod4.z.object({
40760
- pageSize: import_zod4.z.number().int().min(1).max(1e3).optional(),
40761
- maxPages: import_zod4.z.number().int().min(1).max(1e3).optional(),
40761
+ pageSize: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
40762
+ maxPages: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
40762
40763
  all: import_zod4.z.boolean().optional(),
40763
40764
  fields: import_zod4.z.string().min(1).optional()
40764
40765
  });
@@ -40845,13 +40846,13 @@ var DEV_TOOLS = [
40845
40846
  const schema = import_zod4.z.object({
40846
40847
  buildId: import_zod4.z.string().min(1).optional(),
40847
40848
  buildTypeId: import_zod4.z.string().min(1).optional(),
40848
- buildNumber: import_zod4.z.union([import_zod4.z.string().min(1), import_zod4.z.number().int()]).optional(),
40849
+ buildNumber: import_zod4.z.union([import_zod4.z.string().min(1), import_zod4.z.coerce.number().int()]).optional(),
40849
40850
  includeArtifacts: import_zod4.z.boolean().optional(),
40850
40851
  includeStatistics: import_zod4.z.boolean().optional(),
40851
40852
  includeChanges: import_zod4.z.boolean().optional(),
40852
40853
  includeDependencies: import_zod4.z.boolean().optional(),
40853
40854
  artifactFilter: import_zod4.z.string().min(1).optional(),
40854
- maxArtifactSize: import_zod4.z.number().int().min(1).optional(),
40855
+ maxArtifactSize: import_zod4.z.coerce.number().int().min(1).optional(),
40855
40856
  artifactEncoding: import_zod4.z.enum(["base64", "stream"]).default("base64")
40856
40857
  }).superRefine((value, ctx) => {
40857
40858
  const hasBuildId = typeof value.buildId === "string" && value.buildId.trim().length > 0;
@@ -40949,7 +40950,7 @@ var DEV_TOOLS = [
40949
40950
  import_zod4.z.object({
40950
40951
  artifactPath: import_zod4.z.string().min(1),
40951
40952
  encoding: import_zod4.z.enum(["base64", "text", "stream"]).default("base64"),
40952
- maxSize: import_zod4.z.number().int().positive().optional(),
40953
+ maxSize: import_zod4.z.coerce.number().int().positive().optional(),
40953
40954
  outputPath: import_zod4.z.string().min(1).optional()
40954
40955
  })
40955
40956
  );
@@ -41036,7 +41037,7 @@ var DEV_TOOLS = [
41036
41037
  import_zod4.z.object({
41037
41038
  artifactPaths: import_zod4.z.array(artifactInputSchema).min(1),
41038
41039
  encoding: import_zod4.z.enum(["base64", "text", "stream"]).default("base64"),
41039
- maxSize: import_zod4.z.number().int().positive().optional(),
41040
+ maxSize: import_zod4.z.coerce.number().int().positive().optional(),
41040
41041
  outputDir: import_zod4.z.string().min(1).optional().refine((value) => value == null || (0, import_node_path.isAbsolute)(value), {
41041
41042
  message: "outputDir must be an absolute path"
41042
41043
  })
@@ -41227,8 +41228,8 @@ var DEV_TOOLS = [
41227
41228
  locator: import_zod4.z.string().min(1).optional(),
41228
41229
  projectId: import_zod4.z.string().min(1).optional(),
41229
41230
  buildId: import_zod4.z.string().min(1).optional(),
41230
- pageSize: import_zod4.z.number().int().min(1).max(1e3).optional(),
41231
- maxPages: import_zod4.z.number().int().min(1).max(1e3).optional(),
41231
+ pageSize: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
41232
+ maxPages: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
41232
41233
  all: import_zod4.z.boolean().optional(),
41233
41234
  fields: import_zod4.z.string().min(1).optional()
41234
41235
  });
@@ -41297,8 +41298,8 @@ var DEV_TOOLS = [
41297
41298
  locator: import_zod4.z.string().min(1).optional(),
41298
41299
  projectId: import_zod4.z.string().min(1).optional(),
41299
41300
  buildId: import_zod4.z.string().min(1).optional(),
41300
- pageSize: import_zod4.z.number().int().min(1).max(1e3).optional(),
41301
- maxPages: import_zod4.z.number().int().min(1).max(1e3).optional(),
41301
+ pageSize: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
41302
+ maxPages: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
41302
41303
  all: import_zod4.z.boolean().optional(),
41303
41304
  fields: import_zod4.z.string().min(1).optional()
41304
41305
  });
@@ -41373,8 +41374,8 @@ var DEV_TOOLS = [
41373
41374
  locator: import_zod4.z.string().min(1).optional(),
41374
41375
  buildId: import_zod4.z.string().min(1).optional(),
41375
41376
  problemId: import_zod4.z.string().min(1).optional(),
41376
- pageSize: import_zod4.z.number().int().min(1).max(1e3).optional(),
41377
- maxPages: import_zod4.z.number().int().min(1).max(1e3).optional(),
41377
+ pageSize: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
41378
+ maxPages: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
41378
41379
  all: import_zod4.z.boolean().optional(),
41379
41380
  fields: import_zod4.z.string().min(1).optional()
41380
41381
  });
@@ -41454,8 +41455,8 @@ var DEV_TOOLS = [
41454
41455
  projectId: import_zod4.z.string().min(1).optional(),
41455
41456
  buildTypeId: import_zod4.z.string().min(1).optional(),
41456
41457
  assigneeUsername: import_zod4.z.string().min(1).optional(),
41457
- pageSize: import_zod4.z.number().int().min(1).max(1e3).optional(),
41458
- maxPages: import_zod4.z.number().int().min(1).max(1e3).optional(),
41458
+ pageSize: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
41459
+ maxPages: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
41459
41460
  all: import_zod4.z.boolean().optional(),
41460
41461
  fields: import_zod4.z.string().min(1).optional()
41461
41462
  });
@@ -41531,8 +41532,8 @@ var DEV_TOOLS = [
41531
41532
  projectId: import_zod4.z.string().min(1).optional(),
41532
41533
  buildTypeId: import_zod4.z.string().min(1).optional(),
41533
41534
  testNameId: import_zod4.z.string().min(1).optional(),
41534
- pageSize: import_zod4.z.number().int().min(1).max(1e3).optional(),
41535
- maxPages: import_zod4.z.number().int().min(1).max(1e3).optional(),
41535
+ pageSize: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
41536
+ maxPages: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
41536
41537
  all: import_zod4.z.boolean().optional(),
41537
41538
  fields: import_zod4.z.string().min(1).optional()
41538
41539
  });
@@ -41638,8 +41639,8 @@ var DEV_TOOLS = [
41638
41639
  const schema = import_zod4.z.object({
41639
41640
  locator: import_zod4.z.string().min(1).optional(),
41640
41641
  groupId: import_zod4.z.string().min(1).optional(),
41641
- pageSize: import_zod4.z.number().int().min(1).max(1e3).optional(),
41642
- maxPages: import_zod4.z.number().int().min(1).max(1e3).optional(),
41642
+ pageSize: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
41643
+ maxPages: import_zod4.z.coerce.number().int().min(1).max(1e3).optional(),
41643
41644
  all: import_zod4.z.boolean().optional(),
41644
41645
  fields: import_zod4.z.string().min(1).optional()
41645
41646
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@daghis/teamcity-mcp",
3
- "version": "2.4.1",
3
+ "version": "2.4.3",
4
4
  "description": "Model Control Protocol server for TeamCity CI/CD integration with AI coding assistants",
5
5
  "mcpName": "io.github.Daghis/teamcity",
6
6
  "main": "dist/index.js",
package/server.json CHANGED
@@ -7,13 +7,13 @@
7
7
  "source": "github"
8
8
  },
9
9
  "websiteUrl": "https://github.com/Daghis/teamcity-mcp",
10
- "version": "2.4.1",
10
+ "version": "2.4.3",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "registryBaseUrl": "https://registry.npmjs.org",
15
15
  "identifier": "@daghis/teamcity-mcp",
16
- "version": "2.4.1",
16
+ "version": "2.4.3",
17
17
  "runtimeHint": "npx",
18
18
  "runtimeArguments": [
19
19
  {