@mcp-consultant-tools/azure-devops-admin 27.0.0-beta.4 → 28.0.0-beta.10
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/build/AzureDevOpsAdminService.d.ts +47 -1
- package/build/AzureDevOpsAdminService.d.ts.map +1 -1
- package/build/AzureDevOpsAdminService.js +345 -11
- package/build/AzureDevOpsAdminService.js.map +1 -1
- package/build/cli/commands/index.d.ts +8 -0
- package/build/cli/commands/index.d.ts.map +1 -0
- package/build/cli/commands/index.js +9 -0
- package/build/cli/commands/index.js.map +1 -0
- package/build/cli/commands/pipeline-commands.d.ts +7 -0
- package/build/cli/commands/pipeline-commands.d.ts.map +1 -0
- package/build/cli/commands/pipeline-commands.js +191 -0
- package/build/cli/commands/pipeline-commands.js.map +1 -0
- package/build/cli/output.d.ts +11 -0
- package/build/cli/output.d.ts.map +1 -0
- package/build/cli/output.js +10 -0
- package/build/cli/output.js.map +1 -0
- package/build/cli.d.ts +9 -0
- package/build/cli.d.ts.map +1 -0
- package/build/cli.js +27 -0
- package/build/cli.js.map +1 -0
- package/build/context-factory.d.ts +4 -0
- package/build/context-factory.d.ts.map +1 -0
- package/build/context-factory.js +78 -0
- package/build/context-factory.js.map +1 -0
- package/build/index.d.ts +7 -11
- package/build/index.d.ts.map +1 -1
- package/build/index.js +60 -924
- package/build/index.js.map +1 -1
- package/build/services/admin-client.d.ts +19 -0
- package/build/services/admin-client.d.ts.map +1 -0
- package/build/services/admin-client.js +97 -0
- package/build/services/admin-client.js.map +1 -0
- package/build/services/agent-pool-service.d.ts +21 -0
- package/build/services/agent-pool-service.d.ts.map +1 -0
- package/build/services/agent-pool-service.js +118 -0
- package/build/services/agent-pool-service.js.map +1 -0
- package/build/services/artifact-feed-service.d.ts +21 -0
- package/build/services/artifact-feed-service.d.ts.map +1 -0
- package/build/services/artifact-feed-service.js +83 -0
- package/build/services/artifact-feed-service.js.map +1 -0
- package/build/services/classification-service.d.ts +23 -0
- package/build/services/classification-service.d.ts.map +1 -0
- package/build/services/classification-service.js +163 -0
- package/build/services/classification-service.js.map +1 -0
- package/build/services/environment-service.d.ts +25 -0
- package/build/services/environment-service.d.ts.map +1 -0
- package/build/services/environment-service.js +160 -0
- package/build/services/environment-service.js.map +1 -0
- package/build/services/index.d.ts +12 -0
- package/build/services/index.d.ts.map +1 -0
- package/build/services/index.js +12 -0
- package/build/services/index.js.map +1 -0
- package/build/services/pipeline-service.d.ts +37 -0
- package/build/services/pipeline-service.d.ts.map +1 -0
- package/build/services/pipeline-service.js +500 -0
- package/build/services/pipeline-service.js.map +1 -0
- package/build/services/service-connection-service.d.ts +29 -0
- package/build/services/service-connection-service.d.ts.map +1 -0
- package/build/services/service-connection-service.js +147 -0
- package/build/services/service-connection-service.js.map +1 -0
- package/build/services/variable-group-service.d.ts +22 -0
- package/build/services/variable-group-service.d.ts.map +1 -0
- package/build/services/variable-group-service.js +136 -0
- package/build/services/variable-group-service.js.map +1 -0
- package/build/tool-examples.d.ts +83 -0
- package/build/tool-examples.d.ts.map +1 -0
- package/build/tool-examples.js +106 -0
- package/build/tool-examples.js.map +1 -0
- package/build/tools/agent-pool-tools.d.ts +7 -0
- package/build/tools/agent-pool-tools.d.ts.map +1 -0
- package/build/tools/agent-pool-tools.js +133 -0
- package/build/tools/agent-pool-tools.js.map +1 -0
- package/build/tools/artifact-feed-tools.d.ts +7 -0
- package/build/tools/artifact-feed-tools.d.ts.map +1 -0
- package/build/tools/artifact-feed-tools.js +47 -0
- package/build/tools/artifact-feed-tools.js.map +1 -0
- package/build/tools/classification-tools.d.ts +7 -0
- package/build/tools/classification-tools.d.ts.map +1 -0
- package/build/tools/classification-tools.js +202 -0
- package/build/tools/classification-tools.js.map +1 -0
- package/build/tools/environment-tools.d.ts +7 -0
- package/build/tools/environment-tools.d.ts.map +1 -0
- package/build/tools/environment-tools.js +194 -0
- package/build/tools/environment-tools.js.map +1 -0
- package/build/tools/index.d.ts +13 -0
- package/build/tools/index.d.ts.map +1 -0
- package/build/tools/index.js +36 -0
- package/build/tools/index.js.map +1 -0
- package/build/tools/pipeline-tools.d.ts +7 -0
- package/build/tools/pipeline-tools.d.ts.map +1 -0
- package/build/tools/pipeline-tools.js +292 -0
- package/build/tools/pipeline-tools.js.map +1 -0
- package/build/tools/service-connection-tools.d.ts +7 -0
- package/build/tools/service-connection-tools.d.ts.map +1 -0
- package/build/tools/service-connection-tools.js +140 -0
- package/build/tools/service-connection-tools.js.map +1 -0
- package/build/tools/variable-group-tools.d.ts +7 -0
- package/build/tools/variable-group-tools.d.ts.map +1 -0
- package/build/tools/variable-group-tools.js +138 -0
- package/build/tools/variable-group-tools.js.map +1 -0
- package/build/types.d.ts +62 -0
- package/build/types.d.ts.map +1 -0
- package/build/types.js +2 -0
- package/build/types.js.map +1 -0
- package/package.json +5 -3
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared service context factory - used by both MCP server and CLI.
|
|
3
|
+
*/
|
|
4
|
+
import { AdminClient } from './services/admin-client.js';
|
|
5
|
+
import { PipelineService } from './services/pipeline-service.js';
|
|
6
|
+
import { ServiceConnectionService } from './services/service-connection-service.js';
|
|
7
|
+
import { VariableGroupService } from './services/variable-group-service.js';
|
|
8
|
+
import { AgentPoolService } from './services/agent-pool-service.js';
|
|
9
|
+
import { EnvironmentService } from './services/environment-service.js';
|
|
10
|
+
import { ClassificationService } from './services/classification-service.js';
|
|
11
|
+
import { ArtifactFeedService } from './services/artifact-feed-service.js';
|
|
12
|
+
export function createServiceContext() {
|
|
13
|
+
let client = null;
|
|
14
|
+
function getClient() {
|
|
15
|
+
if (!client) {
|
|
16
|
+
const missingConfig = [];
|
|
17
|
+
if (!process.env.AZUREDEVOPS_ORGANIZATION)
|
|
18
|
+
missingConfig.push('AZUREDEVOPS_ORGANIZATION');
|
|
19
|
+
if (!process.env.AZUREDEVOPS_PAT)
|
|
20
|
+
missingConfig.push('AZUREDEVOPS_PAT');
|
|
21
|
+
if (!process.env.AZUREDEVOPS_PROJECTS)
|
|
22
|
+
missingConfig.push('AZUREDEVOPS_PROJECTS');
|
|
23
|
+
if (missingConfig.length > 0) {
|
|
24
|
+
throw new Error(`Missing required Azure DevOps configuration: ${missingConfig.join(', ')}`);
|
|
25
|
+
}
|
|
26
|
+
const config = {
|
|
27
|
+
organization: process.env.AZUREDEVOPS_ORGANIZATION,
|
|
28
|
+
pat: process.env.AZUREDEVOPS_PAT,
|
|
29
|
+
projects: process.env.AZUREDEVOPS_PROJECTS.split(',').map(p => p.trim()).filter(p => p),
|
|
30
|
+
apiVersion: process.env.AZUREDEVOPS_API_VERSION || '7.1',
|
|
31
|
+
enablePipelineUpsert: process.env.AZUREDEVOPS_ENABLE_PIPELINE_UPSERT === 'true',
|
|
32
|
+
enablePipelineDelete: process.env.AZUREDEVOPS_ENABLE_PIPELINE_DELETE === 'true',
|
|
33
|
+
enableServiceConnUpsert: process.env.AZUREDEVOPS_ENABLE_SERVICE_CONN_UPSERT === 'true',
|
|
34
|
+
enableServiceConnDelete: process.env.AZUREDEVOPS_ENABLE_SERVICE_CONN_DELETE === 'true',
|
|
35
|
+
enableVariableGroupUpsert: process.env.AZUREDEVOPS_ENABLE_VARIABLE_GROUP_UPSERT === 'true',
|
|
36
|
+
enableVariableGroupDelete: process.env.AZUREDEVOPS_ENABLE_VARIABLE_GROUP_DELETE === 'true',
|
|
37
|
+
enableAgentPoolUpsert: process.env.AZUREDEVOPS_ENABLE_AGENT_POOL_UPSERT === 'true',
|
|
38
|
+
enableAgentPoolDisable: process.env.AZUREDEVOPS_ENABLE_AGENT_POOL_DISABLE === 'true',
|
|
39
|
+
enableEnvironmentUpsert: process.env.AZUREDEVOPS_ENABLE_ENVIRONMENT_UPSERT === 'true',
|
|
40
|
+
enableEnvironmentDelete: process.env.AZUREDEVOPS_ENABLE_ENVIRONMENT_DELETE === 'true',
|
|
41
|
+
enableClassificationNodeUpsert: process.env.AZUREDEVOPS_ENABLE_CLASSIFICATION_NODE_UPSERT === 'true',
|
|
42
|
+
enableClassificationNodeDelete: process.env.AZUREDEVOPS_ENABLE_CLASSIFICATION_NODE_DELETE === 'true',
|
|
43
|
+
feeds: process.env.AZUREDEVOPS_FEEDS
|
|
44
|
+
? process.env.AZUREDEVOPS_FEEDS.split(',').map(f => f.trim()).filter(f => f)
|
|
45
|
+
: undefined,
|
|
46
|
+
};
|
|
47
|
+
client = new AdminClient(config);
|
|
48
|
+
console.error('Azure DevOps Admin service initialized');
|
|
49
|
+
}
|
|
50
|
+
return client;
|
|
51
|
+
}
|
|
52
|
+
const tierFlags = {
|
|
53
|
+
enablePipelineUpsert: process.env.AZUREDEVOPS_ENABLE_PIPELINE_UPSERT === 'true',
|
|
54
|
+
enablePipelineDelete: process.env.AZUREDEVOPS_ENABLE_PIPELINE_DELETE === 'true',
|
|
55
|
+
enableServiceConnUpsert: process.env.AZUREDEVOPS_ENABLE_SERVICE_CONN_UPSERT === 'true',
|
|
56
|
+
enableServiceConnDelete: process.env.AZUREDEVOPS_ENABLE_SERVICE_CONN_DELETE === 'true',
|
|
57
|
+
enableVariableGroupUpsert: process.env.AZUREDEVOPS_ENABLE_VARIABLE_GROUP_UPSERT === 'true',
|
|
58
|
+
enableVariableGroupDelete: process.env.AZUREDEVOPS_ENABLE_VARIABLE_GROUP_DELETE === 'true',
|
|
59
|
+
enableAgentPoolUpsert: process.env.AZUREDEVOPS_ENABLE_AGENT_POOL_UPSERT === 'true',
|
|
60
|
+
enableAgentPoolDisable: process.env.AZUREDEVOPS_ENABLE_AGENT_POOL_DISABLE === 'true',
|
|
61
|
+
enableEnvironmentUpsert: process.env.AZUREDEVOPS_ENABLE_ENVIRONMENT_UPSERT === 'true',
|
|
62
|
+
enableEnvironmentDelete: process.env.AZUREDEVOPS_ENABLE_ENVIRONMENT_DELETE === 'true',
|
|
63
|
+
enableClassificationNodeUpsert: process.env.AZUREDEVOPS_ENABLE_CLASSIFICATION_NODE_UPSERT === 'true',
|
|
64
|
+
enableClassificationNodeDelete: process.env.AZUREDEVOPS_ENABLE_CLASSIFICATION_NODE_DELETE === 'true',
|
|
65
|
+
};
|
|
66
|
+
return {
|
|
67
|
+
get client() { return getClient(); },
|
|
68
|
+
get pipelines() { return new PipelineService(getClient()); },
|
|
69
|
+
get serviceConnections() { return new ServiceConnectionService(getClient()); },
|
|
70
|
+
get variableGroups() { return new VariableGroupService(getClient()); },
|
|
71
|
+
get agentPools() { return new AgentPoolService(getClient()); },
|
|
72
|
+
get environments() { return new EnvironmentService(getClient()); },
|
|
73
|
+
get classification() { return new ClassificationService(getClient()); },
|
|
74
|
+
get artifactFeeds() { return new ArtifactFeedService(getClient()); },
|
|
75
|
+
tierFlags,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=context-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-factory.js","sourceRoot":"","sources":["../src/context-factory.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts
CHANGED
|
@@ -3,18 +3,14 @@
|
|
|
3
3
|
* @mcp-consultant-tools/azure-devops-admin
|
|
4
4
|
*
|
|
5
5
|
* MCP server for Azure DevOps admin operations - pipelines, service connections,
|
|
6
|
-
* variable groups, agent pools, and
|
|
6
|
+
* variable groups, agent pools, environments, classification nodes, and artifact feeds.
|
|
7
|
+
* Entry point: MCP server startup + backward-compatible registerAzureDevOpsAdminTools().
|
|
7
8
|
*/
|
|
8
|
-
import { AzureDevOpsAdminService } from "./AzureDevOpsAdminService.js";
|
|
9
9
|
/**
|
|
10
|
-
* Register
|
|
11
|
-
*
|
|
12
|
-
* @param adminService - Optional pre-configured AzureDevOpsAdminService (for testing or custom configs)
|
|
10
|
+
* Register Azure DevOps Admin tools to an MCP server.
|
|
11
|
+
* Backward-compatible API for the meta package.
|
|
13
12
|
*/
|
|
14
|
-
export declare function registerAzureDevOpsAdminTools(server: any
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
*/
|
|
18
|
-
export { AzureDevOpsAdminService } from "./AzureDevOpsAdminService.js";
|
|
19
|
-
export type { AzureDevOpsAdminConfig } from "./AzureDevOpsAdminService.js";
|
|
13
|
+
export declare function registerAzureDevOpsAdminTools(server: any): void;
|
|
14
|
+
export { AdminClient } from './services/admin-client.js';
|
|
15
|
+
export type { AzureDevOpsAdminConfig, ServiceContext, TierFlags } from './types.js';
|
|
20
16
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AA8FH;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAG/D;AAGD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,YAAY,EAAE,sBAAsB,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC"}
|