@web-marketing-hr/azure-devops-mcp 2.3.5

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.
Files changed (45) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +238 -0
  3. package/dist/auth.js +117 -0
  4. package/dist/auth.js.map +1 -0
  5. package/dist/index.js +155 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/logger.js +35 -0
  8. package/dist/logger.js.map +1 -0
  9. package/dist/org-tenants.js +79 -0
  10. package/dist/org-tenants.js.map +1 -0
  11. package/dist/prompts.js +21 -0
  12. package/dist/prompts.js.map +1 -0
  13. package/dist/shared/domains.js +126 -0
  14. package/dist/shared/domains.js.map +1 -0
  15. package/dist/shared/tool-validation.js +93 -0
  16. package/dist/shared/tool-validation.js.map +1 -0
  17. package/dist/tools/advanced-security.js +109 -0
  18. package/dist/tools/advanced-security.js.map +1 -0
  19. package/dist/tools/auth.js +64 -0
  20. package/dist/tools/auth.js.map +1 -0
  21. package/dist/tools/core.js +96 -0
  22. package/dist/tools/core.js.map +1 -0
  23. package/dist/tools/pipelines.js +322 -0
  24. package/dist/tools/pipelines.js.map +1 -0
  25. package/dist/tools/repositories.js +938 -0
  26. package/dist/tools/repositories.js.map +1 -0
  27. package/dist/tools/search.js +211 -0
  28. package/dist/tools/search.js.map +1 -0
  29. package/dist/tools/test-plans.js +387 -0
  30. package/dist/tools/test-plans.js.map +1 -0
  31. package/dist/tools/wiki.js +390 -0
  32. package/dist/tools/wiki.js.map +1 -0
  33. package/dist/tools/work-items.js +1007 -0
  34. package/dist/tools/work-items.js.map +1 -0
  35. package/dist/tools/work.js +299 -0
  36. package/dist/tools/work.js.map +1 -0
  37. package/dist/tools.js +30 -0
  38. package/dist/tools.js.map +1 -0
  39. package/dist/useragent.js +21 -0
  40. package/dist/useragent.js.map +1 -0
  41. package/dist/utils.js +94 -0
  42. package/dist/utils.js.map +1 -0
  43. package/dist/version.js +2 -0
  44. package/dist/version.js.map +1 -0
  45. package/package.json +86 -0
@@ -0,0 +1,322 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { apiVersion, getEnumKeys, safeEnumConvert } from "../utils.js";
4
+ import { BuildQueryOrder, DefinitionQueryOrder } from "azure-devops-node-api/interfaces/BuildInterfaces.js";
5
+ import { z } from "zod";
6
+ import { StageUpdateType } from "azure-devops-node-api/interfaces/BuildInterfaces.js";
7
+ import { ConfigurationType, RepositoryType } from "azure-devops-node-api/interfaces/PipelinesInterfaces.js";
8
+ const PIPELINE_TOOLS = {
9
+ pipelines_get_builds: "pipelines_get_builds",
10
+ pipelines_get_build_changes: "pipelines_get_build_changes",
11
+ pipelines_get_build_definitions: "pipelines_get_build_definitions",
12
+ pipelines_get_build_definition_revisions: "pipelines_get_build_definition_revisions",
13
+ pipelines_get_build_log: "pipelines_get_build_log",
14
+ pipelines_get_build_log_by_id: "pipelines_get_build_log_by_id",
15
+ pipelines_get_build_status: "pipelines_get_build_status",
16
+ pipelines_update_build_stage: "pipelines_update_build_stage",
17
+ pipelines_create_pipeline: "pipelines_create_pipeline",
18
+ pipelines_get_run: "pipelines_get_run",
19
+ pipelines_list_runs: "pipelines_list_runs",
20
+ pipelines_run_pipeline: "pipelines_run_pipeline",
21
+ };
22
+ function configurePipelineTools(server, tokenProvider, connectionProvider, userAgentProvider) {
23
+ server.tool(PIPELINE_TOOLS.pipelines_get_build_definitions, "Retrieves a list of build definitions for a given project.", {
24
+ project: z.string().describe("Project ID or name to get build definitions for"),
25
+ repositoryId: z.string().optional().describe("Repository ID to filter build definitions"),
26
+ repositoryType: z.enum(["TfsGit", "GitHub", "BitbucketCloud"]).optional().describe("Type of repository to filter build definitions"),
27
+ name: z.string().optional().describe("Name of the build definition to filter"),
28
+ path: z.string().optional().describe("Path of the build definition to filter"),
29
+ queryOrder: z
30
+ .enum(getEnumKeys(DefinitionQueryOrder))
31
+ .optional()
32
+ .describe("Order in which build definitions are returned"),
33
+ top: z.number().optional().describe("Maximum number of build definitions to return"),
34
+ continuationToken: z.string().optional().describe("Token for continuing paged results"),
35
+ minMetricsTime: z.coerce.date().optional().describe("Minimum metrics time to filter build definitions"),
36
+ definitionIds: z.array(z.number()).optional().describe("Array of build definition IDs to filter"),
37
+ builtAfter: z.coerce.date().optional().describe("Return definitions that have builds after this date"),
38
+ notBuiltAfter: z.coerce.date().optional().describe("Return definitions that do not have builds after this date"),
39
+ includeAllProperties: z.boolean().optional().describe("Whether to include all properties in the results"),
40
+ includeLatestBuilds: z.boolean().optional().describe("Whether to include the latest builds for each definition"),
41
+ taskIdFilter: z.string().optional().describe("Task ID to filter build definitions"),
42
+ processType: z.number().optional().describe("Process type to filter build definitions"),
43
+ yamlFilename: z.string().optional().describe("YAML filename to filter build definitions"),
44
+ }, async ({ project, repositoryId, repositoryType, name, path, queryOrder, top, continuationToken, minMetricsTime, definitionIds, builtAfter, notBuiltAfter, includeAllProperties, includeLatestBuilds, taskIdFilter, processType, yamlFilename, }) => {
45
+ const connection = await connectionProvider();
46
+ const buildApi = await connection.getBuildApi();
47
+ const buildDefinitions = await buildApi.getDefinitions(project, name, repositoryId, repositoryType, safeEnumConvert(DefinitionQueryOrder, queryOrder), top, continuationToken, minMetricsTime, definitionIds, path, builtAfter, notBuiltAfter, includeAllProperties, includeLatestBuilds, taskIdFilter, processType, yamlFilename);
48
+ return {
49
+ content: [{ type: "text", text: JSON.stringify(buildDefinitions, null, 2) }],
50
+ };
51
+ });
52
+ const variableSchema = z.object({
53
+ value: z.string().optional(),
54
+ isSecret: z.boolean().optional(),
55
+ });
56
+ server.tool(PIPELINE_TOOLS.pipelines_create_pipeline, "Creates a pipeline definition with YAML configuration for a given project.", {
57
+ project: z.string().describe("Project ID or name to run the build in."),
58
+ name: z.string().describe("Name of the new pipeline."),
59
+ folder: z.string().optional().describe("Folder path for the new pipeline. Defaults to '\\' if not specified."),
60
+ yamlPath: z.string().describe("The path to the pipeline's YAML file in the repository"),
61
+ repositoryType: z.enum(getEnumKeys(RepositoryType)).describe("The type of repository where the pipeline's YAML file is located."),
62
+ repositoryName: z.string().describe("The name of the repository. In case of GitHub repository, this is the full name (:owner/:repo) - e.g. octocat/Hello-World."),
63
+ repositoryId: z.string().optional().describe("The ID of the repository."),
64
+ repositoryConnectionId: z.string().optional().describe("The service connection ID for GitHub repositories. Not required for Azure Repos Git."),
65
+ }, async ({ project, name, folder, yamlPath, repositoryType, repositoryName, repositoryId, repositoryConnectionId }) => {
66
+ const connection = await connectionProvider();
67
+ const pipelinesApi = await connection.getPipelinesApi();
68
+ const repositoryTypeEnumValue = safeEnumConvert(RepositoryType, repositoryType);
69
+ const repositoryPayload = {
70
+ type: repositoryType,
71
+ };
72
+ if (repositoryTypeEnumValue === RepositoryType.AzureReposGit) {
73
+ repositoryPayload.id = repositoryId;
74
+ repositoryPayload.name = repositoryName;
75
+ }
76
+ else if (repositoryTypeEnumValue === RepositoryType.GitHub) {
77
+ if (!repositoryConnectionId) {
78
+ throw new Error("Parameter 'repositoryConnectionId' is required for GitHub repositories.");
79
+ }
80
+ repositoryPayload.connection = { id: repositoryConnectionId };
81
+ repositoryPayload.fullname = repositoryName;
82
+ }
83
+ else {
84
+ throw new Error("Unsupported repository type");
85
+ }
86
+ const yamlConfigurationType = getEnumKeys(ConfigurationType).find((k) => ConfigurationType[k] === ConfigurationType.Yaml);
87
+ const createPipelineParams = {
88
+ name: name,
89
+ folder: folder || "\\",
90
+ configuration: {
91
+ type: yamlConfigurationType,
92
+ path: yamlPath,
93
+ repository: repositoryPayload,
94
+ variables: undefined,
95
+ },
96
+ };
97
+ const newPipeline = await pipelinesApi.createPipeline(createPipelineParams, project);
98
+ return {
99
+ content: [{ type: "text", text: JSON.stringify(newPipeline, null, 2) }],
100
+ };
101
+ });
102
+ server.tool(PIPELINE_TOOLS.pipelines_get_build_definition_revisions, "Retrieves a list of revisions for a specific build definition.", {
103
+ project: z.string().describe("Project ID or name to get the build definition revisions for"),
104
+ definitionId: z.number().describe("ID of the build definition to get revisions for"),
105
+ }, async ({ project, definitionId }) => {
106
+ const connection = await connectionProvider();
107
+ const buildApi = await connection.getBuildApi();
108
+ const revisions = await buildApi.getDefinitionRevisions(project, definitionId);
109
+ return {
110
+ content: [{ type: "text", text: JSON.stringify(revisions, null, 2) }],
111
+ };
112
+ });
113
+ server.tool(PIPELINE_TOOLS.pipelines_get_builds, "Retrieves a list of builds for a given project.", {
114
+ project: z.string().describe("Project ID or name to get builds for"),
115
+ definitions: z.array(z.number()).optional().describe("Array of build definition IDs to filter builds"),
116
+ queues: z.array(z.number()).optional().describe("Array of queue IDs to filter builds"),
117
+ buildNumber: z.string().optional().describe("Build number to filter builds"),
118
+ minTime: z.coerce.date().optional().describe("Minimum finish time to filter builds"),
119
+ maxTime: z.coerce.date().optional().describe("Maximum finish time to filter builds"),
120
+ requestedFor: z.string().optional().describe("User ID or name who requested the build"),
121
+ reasonFilter: z.number().optional().describe("Reason filter for the build (see BuildReason enum)"),
122
+ statusFilter: z.number().optional().describe("Status filter for the build (see BuildStatus enum)"),
123
+ resultFilter: z.number().optional().describe("Result filter for the build (see BuildResult enum)"),
124
+ tagFilters: z.array(z.string()).optional().describe("Array of tags to filter builds"),
125
+ properties: z.array(z.string()).optional().describe("Array of property names to include in the results"),
126
+ top: z.number().optional().describe("Maximum number of builds to return"),
127
+ continuationToken: z.string().optional().describe("Token for continuing paged results"),
128
+ maxBuildsPerDefinition: z.number().optional().describe("Maximum number of builds per definition"),
129
+ deletedFilter: z.number().optional().describe("Filter for deleted builds (see QueryDeletedOption enum)"),
130
+ queryOrder: z
131
+ .enum(getEnumKeys(BuildQueryOrder))
132
+ .default("QueueTimeDescending")
133
+ .optional()
134
+ .describe("Order in which builds are returned"),
135
+ branchName: z.string().optional().describe("Branch name to filter builds"),
136
+ buildIds: z.array(z.number()).optional().describe("Array of build IDs to retrieve"),
137
+ repositoryId: z.string().optional().describe("Repository ID to filter builds"),
138
+ repositoryType: z.enum(["TfsGit", "GitHub", "BitbucketCloud"]).optional().describe("Type of repository to filter builds"),
139
+ }, async ({ project, definitions, queues, buildNumber, minTime, maxTime, requestedFor, reasonFilter, statusFilter, resultFilter, tagFilters, properties, top, continuationToken, maxBuildsPerDefinition, deletedFilter, queryOrder, branchName, buildIds, repositoryId, repositoryType, }) => {
140
+ const connection = await connectionProvider();
141
+ const buildApi = await connection.getBuildApi();
142
+ const builds = await buildApi.getBuilds(project, definitions, queues, buildNumber, minTime, maxTime, requestedFor, reasonFilter, statusFilter, resultFilter, tagFilters, properties, top, continuationToken, maxBuildsPerDefinition, deletedFilter, safeEnumConvert(BuildQueryOrder, queryOrder), branchName, buildIds, repositoryId, repositoryType);
143
+ return {
144
+ content: [{ type: "text", text: JSON.stringify(builds, null, 2) }],
145
+ };
146
+ });
147
+ server.tool(PIPELINE_TOOLS.pipelines_get_build_log, "Retrieves the logs for a specific build.", {
148
+ project: z.string().describe("Project ID or name to get the build log for"),
149
+ buildId: z.number().describe("ID of the build to get the log for"),
150
+ }, async ({ project, buildId }) => {
151
+ const connection = await connectionProvider();
152
+ const buildApi = await connection.getBuildApi();
153
+ const logs = await buildApi.getBuildLogs(project, buildId);
154
+ return {
155
+ content: [{ type: "text", text: JSON.stringify(logs, null, 2) }],
156
+ };
157
+ });
158
+ server.tool(PIPELINE_TOOLS.pipelines_get_build_log_by_id, "Get a specific build log by log ID.", {
159
+ project: z.string().describe("Project ID or name to get the build log for"),
160
+ buildId: z.number().describe("ID of the build to get the log for"),
161
+ logId: z.number().describe("ID of the log to retrieve"),
162
+ startLine: z.number().optional().describe("Starting line number for the log content, defaults to 0"),
163
+ endLine: z.number().optional().describe("Ending line number for the log content, defaults to the end of the log"),
164
+ }, async ({ project, buildId, logId, startLine, endLine }) => {
165
+ const connection = await connectionProvider();
166
+ const buildApi = await connection.getBuildApi();
167
+ const logLines = await buildApi.getBuildLogLines(project, buildId, logId, startLine, endLine);
168
+ return {
169
+ content: [{ type: "text", text: JSON.stringify(logLines, null, 2) }],
170
+ };
171
+ });
172
+ server.tool(PIPELINE_TOOLS.pipelines_get_build_changes, "Get the changes associated with a specific build.", {
173
+ project: z.string().describe("Project ID or name to get the build changes for"),
174
+ buildId: z.number().describe("ID of the build to get changes for"),
175
+ continuationToken: z.string().optional().describe("Continuation token for pagination"),
176
+ top: z.number().default(100).describe("Number of changes to retrieve, defaults to 100"),
177
+ includeSourceChange: z.boolean().optional().describe("Whether to include source changes in the results, defaults to false"),
178
+ }, async ({ project, buildId, continuationToken, top, includeSourceChange }) => {
179
+ const connection = await connectionProvider();
180
+ const buildApi = await connection.getBuildApi();
181
+ const changes = await buildApi.getBuildChanges(project, buildId, continuationToken, top, includeSourceChange);
182
+ return {
183
+ content: [{ type: "text", text: JSON.stringify(changes, null, 2) }],
184
+ };
185
+ });
186
+ server.tool(PIPELINE_TOOLS.pipelines_get_run, "Gets a run for a particular pipeline.", {
187
+ project: z.string().describe("Project ID or name to run the build in"),
188
+ pipelineId: z.number().describe("ID of the pipeline to run"),
189
+ runId: z.number().describe("ID of the run to get"),
190
+ }, async ({ project, pipelineId, runId }) => {
191
+ const connection = await connectionProvider();
192
+ const pipelinesApi = await connection.getPipelinesApi();
193
+ const pipelineRun = await pipelinesApi.getRun(project, pipelineId, runId);
194
+ return {
195
+ content: [{ type: "text", text: JSON.stringify(pipelineRun, null, 2) }],
196
+ };
197
+ });
198
+ server.tool(PIPELINE_TOOLS.pipelines_list_runs, "Gets top 10000 runs for a particular pipeline.", {
199
+ project: z.string().describe("Project ID or name to run the build in"),
200
+ pipelineId: z.number().describe("ID of the pipeline to run"),
201
+ }, async ({ project, pipelineId }) => {
202
+ const connection = await connectionProvider();
203
+ const pipelinesApi = await connection.getPipelinesApi();
204
+ const pipelineRuns = await pipelinesApi.listRuns(project, pipelineId);
205
+ return {
206
+ content: [{ type: "text", text: JSON.stringify(pipelineRuns, null, 2) }],
207
+ };
208
+ });
209
+ const resourcesSchema = z.object({
210
+ builds: z
211
+ .record(z.string().describe("Name of the build resource."), z.object({
212
+ version: z.string().optional().describe("Version of the build resource."),
213
+ }))
214
+ .optional(),
215
+ containers: z
216
+ .record(z.string().describe("Name of the container resource."), z.object({
217
+ version: z.string().optional().describe("Version of the container resource."),
218
+ }))
219
+ .optional(),
220
+ packages: z
221
+ .record(z.string().describe("Name of the package resource."), z.object({
222
+ version: z.string().optional().describe("Version of the package resource."),
223
+ }))
224
+ .optional(),
225
+ pipelines: z.record(z.string().describe("Name of the pipeline resource."), z.object({
226
+ runId: z.number().describe("Id of the source pipeline run that triggered or is referenced by this pipeline run."),
227
+ version: z.string().optional().describe("Version of the source pipeline run."),
228
+ })),
229
+ repositories: z
230
+ .record(z.string().describe("Name of the repository resource."), z.object({
231
+ refName: z.string().describe("Reference name, e.g., refs/heads/main."),
232
+ token: z.string().optional(),
233
+ tokenType: z.string().optional(),
234
+ version: z.string().optional().describe("Version of the repository resource, git commit sha."),
235
+ }))
236
+ .optional(),
237
+ });
238
+ server.tool(PIPELINE_TOOLS.pipelines_run_pipeline, "Starts a new run of a pipeline.", {
239
+ project: z.string().describe("Project ID or name to run the build in"),
240
+ pipelineId: z.number().describe("ID of the pipeline to run"),
241
+ pipelineVersion: z.number().optional().describe("Version of the pipeline to run. If not provided, the latest version will be used."),
242
+ previewRun: z.boolean().optional().describe("If true, returns the final YAML document after parsing templates without creating a new run."),
243
+ resources: resourcesSchema.optional().describe("A dictionary of resources to pass to the pipeline."),
244
+ stagesToSkip: z.array(z.string()).optional().describe("A list of stages to skip."),
245
+ templateParameters: z.record(z.string(), z.string()).optional().describe("Custom build parameters as key-value pairs"),
246
+ variables: z.record(z.string(), variableSchema).optional().describe("A dictionary of variables to pass to the pipeline."),
247
+ yamlOverride: z.string().optional().describe("YAML override for the pipeline run."),
248
+ }, async ({ project, pipelineId, pipelineVersion, previewRun, resources, stagesToSkip, templateParameters, variables, yamlOverride }) => {
249
+ if (!previewRun && yamlOverride) {
250
+ throw new Error("Parameter 'yamlOverride' can only be specified together with parameter 'previewRun'.");
251
+ }
252
+ const connection = await connectionProvider();
253
+ const pipelinesApi = await connection.getPipelinesApi();
254
+ const runRequest = {
255
+ previewRun: previewRun,
256
+ resources: {
257
+ ...resources,
258
+ },
259
+ stagesToSkip: stagesToSkip,
260
+ templateParameters: templateParameters,
261
+ variables: variables,
262
+ yamlOverride: yamlOverride,
263
+ };
264
+ const pipelineRun = await pipelinesApi.runPipeline(runRequest, project, pipelineId, pipelineVersion);
265
+ const queuedBuild = { id: pipelineRun.id };
266
+ const buildId = queuedBuild.id;
267
+ if (buildId === undefined) {
268
+ throw new Error("Failed to get build ID from pipeline run");
269
+ }
270
+ return {
271
+ content: [{ type: "text", text: JSON.stringify(pipelineRun, null, 2) }],
272
+ };
273
+ });
274
+ server.tool(PIPELINE_TOOLS.pipelines_get_build_status, "Fetches the status of a specific build.", {
275
+ project: z.string().describe("Project ID or name to get the build status for"),
276
+ buildId: z.number().describe("ID of the build to get the status for"),
277
+ }, async ({ project, buildId }) => {
278
+ const connection = await connectionProvider();
279
+ const buildApi = await connection.getBuildApi();
280
+ const build = await buildApi.getBuildReport(project, buildId);
281
+ return {
282
+ content: [{ type: "text", text: JSON.stringify(build, null, 2) }],
283
+ };
284
+ });
285
+ server.tool(PIPELINE_TOOLS.pipelines_update_build_stage, "Updates the stage of a specific build.", {
286
+ project: z.string().describe("Project ID or name to update the build stage for"),
287
+ buildId: z.number().describe("ID of the build to update"),
288
+ stageName: z.string().describe("Name of the stage to update"),
289
+ status: z.enum(getEnumKeys(StageUpdateType)).describe("New status for the stage"),
290
+ forceRetryAllJobs: z.boolean().default(false).describe("Whether to force retry all jobs in the stage."),
291
+ }, async ({ project, buildId, stageName, status, forceRetryAllJobs }) => {
292
+ const connection = await connectionProvider();
293
+ const orgUrl = connection.serverUrl;
294
+ const endpoint = `${orgUrl}/${project}/_apis/build/builds/${buildId}/stages/${stageName}?api-version=${apiVersion}`;
295
+ const token = await tokenProvider();
296
+ const body = {
297
+ forceRetryAllJobs: forceRetryAllJobs,
298
+ state: safeEnumConvert(StageUpdateType, status),
299
+ };
300
+ const isBasicAuth = process.env["ADO_MCP_AUTH_TYPE"] == "basic";
301
+ const authHeader = isBasicAuth ? `Basic ${Buffer.from(":" + token).toString("base64")}` : `Bearer ${token}`;
302
+ const response = await fetch(endpoint, {
303
+ method: "PATCH",
304
+ headers: {
305
+ "Content-Type": "application/json",
306
+ "Authorization": authHeader,
307
+ "User-Agent": userAgentProvider(),
308
+ },
309
+ body: JSON.stringify(body),
310
+ });
311
+ if (!response.ok) {
312
+ const errorText = await response.text();
313
+ throw new Error(`Failed to update build stage: ${response.status} ${errorText}`);
314
+ }
315
+ const updatedBuild = await response.text();
316
+ return {
317
+ content: [{ type: "text", text: JSON.stringify(updatedBuild, null, 2) }],
318
+ };
319
+ });
320
+ }
321
+ export { PIPELINE_TOOLS, configurePipelineTools };
322
+ //# sourceMappingURL=pipelines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipelines.js","sourceRoot":"","sources":["../../src/tools/pipelines.ts"],"names":[],"mappings":"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"}