@daghis/teamcity-mcp 2.0.1 → 2.0.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 +14 -0
- package/dist/index.js +71 -14
- package/package.json +1 -1
- package/server.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.0.3](https://github.com/Daghis/teamcity-mcp/compare/teamcity-mcp-v2.0.2...teamcity-mcp-v2.0.3) (2026-01-05)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* add type parameter to manage_agent_requirements ([#338](https://github.com/Daghis/teamcity-mcp/issues/338)) ([#343](https://github.com/Daghis/teamcity-mcp/issues/343)) ([5545257](https://github.com/Daghis/teamcity-mcp/commit/5545257823f442cf27e9313f11f1dd0b71115af3))
|
|
9
|
+
|
|
10
|
+
## [2.0.2](https://github.com/Daghis/teamcity-mcp/compare/teamcity-mcp-v2.0.1...teamcity-mcp-v2.0.2) (2026-01-05)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* resolve HTTP 406 when updating build configuration fields ([#339](https://github.com/Daghis/teamcity-mcp/issues/339)) ([#341](https://github.com/Daghis/teamcity-mcp/issues/341)) ([16b1dd2](https://github.com/Daghis/teamcity-mcp/commit/16b1dd207978d63ad9824c9b7eecbbd4a9badc94))
|
|
16
|
+
|
|
3
17
|
## [2.0.1](https://github.com/Daghis/teamcity-mcp/compare/teamcity-mcp-v2.0.0...teamcity-mcp-v2.0.1) (2025-12-23)
|
|
4
18
|
|
|
5
19
|
|
package/dist/index.js
CHANGED
|
@@ -1195,7 +1195,7 @@ function debug2(message, meta) {
|
|
|
1195
1195
|
// package.json
|
|
1196
1196
|
var package_default = {
|
|
1197
1197
|
name: "@daghis/teamcity-mcp",
|
|
1198
|
-
version: "2.0.
|
|
1198
|
+
version: "2.0.3",
|
|
1199
1199
|
description: "Model Control Protocol server for TeamCity CI/CD integration with AI coding assistants",
|
|
1200
1200
|
mcpName: "io.github.Daghis/teamcity",
|
|
1201
1201
|
main: "dist/index.js",
|
|
@@ -1487,6 +1487,7 @@ var AgentRequirementsManager = class {
|
|
|
1487
1487
|
const mergedProps = mergeRecords(baseProps, toStringRecord(input.properties));
|
|
1488
1488
|
const payload = {
|
|
1489
1489
|
...existing ?? {},
|
|
1490
|
+
type: input.type ?? existing?.type,
|
|
1490
1491
|
disabled: input.disabled ?? existing?.disabled
|
|
1491
1492
|
};
|
|
1492
1493
|
const properties = recordToProperties(mergedProps);
|
|
@@ -2338,7 +2339,7 @@ var setArtifactRulesWithFallback = async (http, buildTypeId, artifactRules) => {
|
|
|
2338
2339
|
const encodedId = encodeURIComponent(buildTypeId);
|
|
2339
2340
|
try {
|
|
2340
2341
|
await http.put(`/app/rest/buildTypes/${encodedId}/settings/artifactRules`, artifactRules, {
|
|
2341
|
-
headers: { "Content-Type": "text/plain" }
|
|
2342
|
+
headers: { "Content-Type": "text/plain", Accept: "text/plain" }
|
|
2342
2343
|
});
|
|
2343
2344
|
} catch (err) {
|
|
2344
2345
|
if (!isArtifactRulesRetryableError(err)) {
|
|
@@ -2351,7 +2352,7 @@ var setArtifactRulesWithFallback = async (http, buildTypeId, artifactRules) => {
|
|
|
2351
2352
|
});
|
|
2352
2353
|
try {
|
|
2353
2354
|
await http.put(`/app/rest/buildTypes/${encodedId}/artifactRules`, artifactRules, {
|
|
2354
|
-
headers: { "Content-Type": "text/plain" }
|
|
2355
|
+
headers: { "Content-Type": "text/plain", Accept: "text/plain" }
|
|
2355
2356
|
});
|
|
2356
2357
|
} catch (fallbackError) {
|
|
2357
2358
|
debug2("Legacy artifact rules update failed", {
|
|
@@ -2558,14 +2559,16 @@ var BuildConfigurationUpdateManager = class {
|
|
|
2558
2559
|
await this.client.modules.buildTypes.setBuildTypeField(
|
|
2559
2560
|
currentConfig.id,
|
|
2560
2561
|
"name",
|
|
2561
|
-
updates.name
|
|
2562
|
+
updates.name,
|
|
2563
|
+
{ headers: { "Content-Type": "text/plain", Accept: "text/plain" } }
|
|
2562
2564
|
);
|
|
2563
2565
|
}
|
|
2564
2566
|
if (updates.description !== void 0) {
|
|
2565
2567
|
await this.client.modules.buildTypes.setBuildTypeField(
|
|
2566
2568
|
currentConfig.id,
|
|
2567
2569
|
"description",
|
|
2568
|
-
updates.description ?? ""
|
|
2570
|
+
updates.description ?? "",
|
|
2571
|
+
{ headers: { "Content-Type": "text/plain", Accept: "text/plain" } }
|
|
2569
2572
|
);
|
|
2570
2573
|
}
|
|
2571
2574
|
}
|
|
@@ -2578,7 +2581,8 @@ var BuildConfigurationUpdateManager = class {
|
|
|
2578
2581
|
await this.client.modules.buildTypes.setBuildTypeField(
|
|
2579
2582
|
currentConfig.id,
|
|
2580
2583
|
`settings/${setting.name}`,
|
|
2581
|
-
setting.value
|
|
2584
|
+
setting.value,
|
|
2585
|
+
{ headers: { "Content-Type": "text/plain", Accept: "text/plain" } }
|
|
2582
2586
|
);
|
|
2583
2587
|
}
|
|
2584
2588
|
}
|
|
@@ -2599,7 +2603,8 @@ var BuildConfigurationUpdateManager = class {
|
|
|
2599
2603
|
await this.client.modules.buildTypes.setBuildTypeField(
|
|
2600
2604
|
currentConfig.id,
|
|
2601
2605
|
`parameters/${name}`,
|
|
2602
|
-
value
|
|
2606
|
+
value,
|
|
2607
|
+
{ headers: { "Content-Type": "text/plain", Accept: "text/plain" } }
|
|
2603
2608
|
);
|
|
2604
2609
|
}
|
|
2605
2610
|
}
|
|
@@ -42012,14 +42017,16 @@ var FULL_MODE_TOOLS = [
|
|
|
42012
42017
|
await adapter.modules.buildTypes.setBuildTypeField(
|
|
42013
42018
|
typedArgs.buildTypeId,
|
|
42014
42019
|
"name",
|
|
42015
|
-
typedArgs.name
|
|
42020
|
+
typedArgs.name,
|
|
42021
|
+
{ headers: { "Content-Type": "text/plain", Accept: "text/plain" } }
|
|
42016
42022
|
);
|
|
42017
42023
|
}
|
|
42018
42024
|
if (typedArgs.description !== void 0) {
|
|
42019
42025
|
await adapter.modules.buildTypes.setBuildTypeField(
|
|
42020
42026
|
typedArgs.buildTypeId,
|
|
42021
42027
|
"description",
|
|
42022
|
-
typedArgs.description
|
|
42028
|
+
typedArgs.description,
|
|
42029
|
+
{ headers: { "Content-Type": "text/plain", Accept: "text/plain" } }
|
|
42023
42030
|
);
|
|
42024
42031
|
}
|
|
42025
42032
|
if (typedArgs.artifactRules !== void 0) {
|
|
@@ -42035,14 +42042,16 @@ var FULL_MODE_TOOLS = [
|
|
|
42035
42042
|
await adapter.modules.buildTypes.setBuildTypeField(
|
|
42036
42043
|
typedArgs.buildTypeId,
|
|
42037
42044
|
"name",
|
|
42038
|
-
typedArgs.name
|
|
42045
|
+
typedArgs.name,
|
|
42046
|
+
{ headers: { "Content-Type": "text/plain", Accept: "text/plain" } }
|
|
42039
42047
|
);
|
|
42040
42048
|
}
|
|
42041
42049
|
if (typedArgs.description !== void 0) {
|
|
42042
42050
|
await adapter.modules.buildTypes.setBuildTypeField(
|
|
42043
42051
|
typedArgs.buildTypeId,
|
|
42044
42052
|
"description",
|
|
42045
|
-
typedArgs.description
|
|
42053
|
+
typedArgs.description,
|
|
42054
|
+
{ headers: { "Content-Type": "text/plain", Accept: "text/plain" } }
|
|
42046
42055
|
);
|
|
42047
42056
|
}
|
|
42048
42057
|
if (typedArgs.artifactRules !== void 0) {
|
|
@@ -42057,7 +42066,8 @@ var FULL_MODE_TOOLS = [
|
|
|
42057
42066
|
await adapter.modules.buildTypes.setBuildTypeField(
|
|
42058
42067
|
typedArgs.buildTypeId,
|
|
42059
42068
|
"paused",
|
|
42060
|
-
String(typedArgs.paused)
|
|
42069
|
+
String(typedArgs.paused),
|
|
42070
|
+
{ headers: { "Content-Type": "text/plain", Accept: "text/plain" } }
|
|
42061
42071
|
);
|
|
42062
42072
|
}
|
|
42063
42073
|
return json({ success: true, action: "update_build_config", id: typedArgs.buildTypeId });
|
|
@@ -42330,9 +42340,33 @@ var FULL_MODE_TOOLS = [
|
|
|
42330
42340
|
type: "string",
|
|
42331
42341
|
description: "Requirement ID (required for update/delete)"
|
|
42332
42342
|
},
|
|
42343
|
+
type: {
|
|
42344
|
+
type: "string",
|
|
42345
|
+
enum: [
|
|
42346
|
+
"exists",
|
|
42347
|
+
"not-exists",
|
|
42348
|
+
"equals",
|
|
42349
|
+
"does-not-equal",
|
|
42350
|
+
"more-than",
|
|
42351
|
+
"less-than",
|
|
42352
|
+
"no-more-than",
|
|
42353
|
+
"no-less-than",
|
|
42354
|
+
"ver-more-than",
|
|
42355
|
+
"ver-less-than",
|
|
42356
|
+
"ver-no-more-than",
|
|
42357
|
+
"ver-no-less-than",
|
|
42358
|
+
"contains",
|
|
42359
|
+
"does-not-contain",
|
|
42360
|
+
"starts-with",
|
|
42361
|
+
"ends-with",
|
|
42362
|
+
"matches",
|
|
42363
|
+
"does-not-match"
|
|
42364
|
+
],
|
|
42365
|
+
description: "Requirement type (e.g., exists, equals, contains, starts-with, matches)"
|
|
42366
|
+
},
|
|
42333
42367
|
properties: {
|
|
42334
42368
|
type: "object",
|
|
42335
|
-
description: "Requirement properties (e.g. property-name,
|
|
42369
|
+
description: "Requirement properties (e.g. property-name, property-value)"
|
|
42336
42370
|
},
|
|
42337
42371
|
disabled: { type: "boolean", description: "Disable or enable the requirement" }
|
|
42338
42372
|
},
|
|
@@ -42340,10 +42374,31 @@ var FULL_MODE_TOOLS = [
|
|
|
42340
42374
|
},
|
|
42341
42375
|
handler: async (args) => {
|
|
42342
42376
|
const propertyValue = import_zod4.z.union([import_zod4.z.string(), import_zod4.z.number(), import_zod4.z.boolean()]);
|
|
42377
|
+
const requirementTypes = [
|
|
42378
|
+
"exists",
|
|
42379
|
+
"not-exists",
|
|
42380
|
+
"equals",
|
|
42381
|
+
"does-not-equal",
|
|
42382
|
+
"more-than",
|
|
42383
|
+
"less-than",
|
|
42384
|
+
"no-more-than",
|
|
42385
|
+
"no-less-than",
|
|
42386
|
+
"ver-more-than",
|
|
42387
|
+
"ver-less-than",
|
|
42388
|
+
"ver-no-more-than",
|
|
42389
|
+
"ver-no-less-than",
|
|
42390
|
+
"contains",
|
|
42391
|
+
"does-not-contain",
|
|
42392
|
+
"starts-with",
|
|
42393
|
+
"ends-with",
|
|
42394
|
+
"matches",
|
|
42395
|
+
"does-not-match"
|
|
42396
|
+
];
|
|
42343
42397
|
const schema = import_zod4.z.object({
|
|
42344
42398
|
buildTypeId: import_zod4.z.string().min(1),
|
|
42345
42399
|
action: import_zod4.z.enum(["add", "update", "delete"]),
|
|
42346
42400
|
requirementId: import_zod4.z.string().min(1).optional(),
|
|
42401
|
+
type: import_zod4.z.enum(requirementTypes).optional(),
|
|
42347
42402
|
properties: import_zod4.z.record(import_zod4.z.string(), propertyValue).optional(),
|
|
42348
42403
|
disabled: import_zod4.z.boolean().optional()
|
|
42349
42404
|
}).superRefine((value, ctx) => {
|
|
@@ -42365,6 +42420,7 @@ var FULL_MODE_TOOLS = [
|
|
|
42365
42420
|
case "add": {
|
|
42366
42421
|
const result = await manager.addRequirement({
|
|
42367
42422
|
buildTypeId: typed.buildTypeId,
|
|
42423
|
+
type: typed.type,
|
|
42368
42424
|
properties: typed.properties,
|
|
42369
42425
|
disabled: typed.disabled
|
|
42370
42426
|
});
|
|
@@ -42379,6 +42435,7 @@ var FULL_MODE_TOOLS = [
|
|
|
42379
42435
|
case "update": {
|
|
42380
42436
|
const result = await manager.updateRequirement(typed.requirementId, {
|
|
42381
42437
|
buildTypeId: typed.buildTypeId,
|
|
42438
|
+
type: typed.type,
|
|
42382
42439
|
properties: typed.properties,
|
|
42383
42440
|
disabled: typed.disabled
|
|
42384
42441
|
});
|
|
@@ -42441,7 +42498,7 @@ var FULL_MODE_TOOLS = [
|
|
|
42441
42498
|
{
|
|
42442
42499
|
headers: {
|
|
42443
42500
|
"Content-Type": "text/plain",
|
|
42444
|
-
Accept: "
|
|
42501
|
+
Accept: "text/plain"
|
|
42445
42502
|
}
|
|
42446
42503
|
}
|
|
42447
42504
|
);
|
package/package.json
CHANGED
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.0.
|
|
10
|
+
"version": "2.0.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.0.
|
|
16
|
+
"version": "2.0.3",
|
|
17
17
|
"runtimeHint": "npx",
|
|
18
18
|
"runtimeArguments": [
|
|
19
19
|
{
|