release_get_definitions
Retrieve and filter release definitions by project, search text, tags, or other criteria using Azure DevOps MCP Server with PAT Authentication.
Instructions
Retrieves list of release definitions for a given project.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| artifactSourceId | No | Filter by artifact source ID | |
| artifactType | No | Filter by artifact type | |
| continuationToken | No | Continuation token for pagination | |
| definitionIdFilter | No | Filter by specific release definition IDs | |
| expand | No | Expand options for release definitions | None |
| isDeleted | No | Whether to include deleted release definitions. Default is false. | |
| isExactNameMatch | No | Whether to match the exact name of the release definition. Default is false. | |
| path | No | Path to filter release definitions | |
| project | Yes | Project ID or name to get release definitions for | |
| propertyFilters | No | Filter by properties associated with the release definitions | |
| queryOrder | No | Order of the results | NameAscending |
| searchText | No | Search text to filter release definitions | |
| searchTextContainsFolderName | No | Whether to include folder names in the search text | |
| tagFilter | No | Filter by tags associated with the release definitions | |
| top | No | Number of results to return (for pagination) |
Implementation Reference
- src/tools/releases.ts:43-83 (handler)The handler function that implements the core logic of the 'release_get_definitions' tool. It uses the Azure DevOps Release API to fetch release definitions based on the provided parameters and returns the results as a JSON string in the MCP response format.async ({ project, searchText, expand, artifactType, artifactSourceId, top, continuationToken, queryOrder, path, isExactNameMatch, tagFilter, propertyFilters, definitionIdFilter, isDeleted, searchTextContainsFolderName, }) => { const connection = await connectionProvider(); const releaseApi = await connection.getReleaseApi(); const releaseDefinitions = await releaseApi.getReleaseDefinitions( project, searchText, safeEnumConvert(ReleaseDefinitionExpands, expand), artifactType, artifactSourceId, top, continuationToken, safeEnumConvert(ReleaseDefinitionQueryOrder, queryOrder), path, isExactNameMatch, tagFilter, propertyFilters, definitionIdFilter, isDeleted, searchTextContainsFolderName ); return { content: [{ type: "text", text: JSON.stringify(releaseDefinitions, null, 2) }], }; }
- src/tools/releases.ts:20-42 (schema)The Zod input schema defining all parameters for the 'release_get_definitions' tool, including project, filters, pagination, and ordering options.{ project: z.string().describe("Project ID or name to get release definitions for"), searchText: z.string().optional().describe("Search text to filter release definitions"), expand: z .enum(getEnumKeys(ReleaseDefinitionExpands) as [string, ...string[]]) .default("None") .describe("Expand options for release definitions"), artifactType: z.string().optional().describe("Filter by artifact type"), artifactSourceId: z.string().optional().describe("Filter by artifact source ID"), top: z.number().optional().describe("Number of results to return (for pagination)"), continuationToken: z.string().optional().describe("Continuation token for pagination"), queryOrder: z .enum(getEnumKeys(ReleaseDefinitionQueryOrder) as [string, ...string[]]) .default("NameAscending") .describe("Order of the results"), path: z.string().optional().describe("Path to filter release definitions"), isExactNameMatch: z.boolean().optional().default(false).describe("Whether to match the exact name of the release definition. Default is false."), tagFilter: z.array(z.string()).optional().describe("Filter by tags associated with the release definitions"), propertyFilters: z.array(z.string()).optional().describe("Filter by properties associated with the release definitions"), definitionIdFilter: z.array(z.string()).optional().describe("Filter by specific release definition IDs"), isDeleted: z.boolean().default(false).describe("Whether to include deleted release definitions. Default is false."), searchTextContainsFolderName: z.boolean().optional().describe("Whether to include folder names in the search text"), },
- src/tools/releases.ts:17-84 (registration)The server.tool call that registers the 'release_get_definitions' tool on the MCP server, specifying the tool name (via RELEASE_TOOLS), description, input schema, and handler function.server.tool( RELEASE_TOOLS.get_release_definitions, "Retrieves list of release definitions for a given project.", { project: z.string().describe("Project ID or name to get release definitions for"), searchText: z.string().optional().describe("Search text to filter release definitions"), expand: z .enum(getEnumKeys(ReleaseDefinitionExpands) as [string, ...string[]]) .default("None") .describe("Expand options for release definitions"), artifactType: z.string().optional().describe("Filter by artifact type"), artifactSourceId: z.string().optional().describe("Filter by artifact source ID"), top: z.number().optional().describe("Number of results to return (for pagination)"), continuationToken: z.string().optional().describe("Continuation token for pagination"), queryOrder: z .enum(getEnumKeys(ReleaseDefinitionQueryOrder) as [string, ...string[]]) .default("NameAscending") .describe("Order of the results"), path: z.string().optional().describe("Path to filter release definitions"), isExactNameMatch: z.boolean().optional().default(false).describe("Whether to match the exact name of the release definition. Default is false."), tagFilter: z.array(z.string()).optional().describe("Filter by tags associated with the release definitions"), propertyFilters: z.array(z.string()).optional().describe("Filter by properties associated with the release definitions"), definitionIdFilter: z.array(z.string()).optional().describe("Filter by specific release definition IDs"), isDeleted: z.boolean().default(false).describe("Whether to include deleted release definitions. Default is false."), searchTextContainsFolderName: z.boolean().optional().describe("Whether to include folder names in the search text"), }, async ({ project, searchText, expand, artifactType, artifactSourceId, top, continuationToken, queryOrder, path, isExactNameMatch, tagFilter, propertyFilters, definitionIdFilter, isDeleted, searchTextContainsFolderName, }) => { const connection = await connectionProvider(); const releaseApi = await connection.getReleaseApi(); const releaseDefinitions = await releaseApi.getReleaseDefinitions( project, searchText, safeEnumConvert(ReleaseDefinitionExpands, expand), artifactType, artifactSourceId, top, continuationToken, safeEnumConvert(ReleaseDefinitionQueryOrder, queryOrder), path, isExactNameMatch, tagFilter, propertyFilters, definitionIdFilter, isDeleted, searchTextContainsFolderName ); return { content: [{ type: "text", text: JSON.stringify(releaseDefinitions, null, 2) }], }; } );
- src/tools.ts:25-25 (registration)Invocation of configureReleaseTools within configureAllTools, which ultimately registers the release tools including 'release_get_definitions'.configureReleaseTools(server, tokenProvider, connectionProvider);