Skip to main content
Glama
ennuiii

Azure DevOps MCP Server with PAT Authentication

by ennuiii

core_get_identity_ids

Retrieve Azure DevOps identity IDs by providing a search filter such as unique name, display name, or email, using PAT authentication.

Instructions

Retrieve Azure DevOps identity IDs for a provided search filter.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
searchFilterYesSearch filter (unique namme, display name, email) to retrieve identity IDs for.

Implementation Reference

  • Handler function that retrieves Azure DevOps identity IDs based on a search filter using direct API call to identities endpoint.
    async ({ searchFilter }) => { try { const token = await tokenProvider(); const connection = await connectionProvider(); const orgName = connection.serverUrl.split("/")[3]; const baseUrl = `https://vssps.dev.azure.com/${orgName}/_apis/identities`; const params = new URLSearchParams({ "api-version": apiVersion, "searchFilter": "General", "filterValue": searchFilter, }); const response = await fetch(`${baseUrl}?${params}`, { headers: { "Authorization": `Bearer ${token.token}`, "Content-Type": "application/json", "User-Agent": userAgentProvider(), }, }); if (!response.ok) { const errorText = await response.text(); throw new Error(`HTTP ${response.status}: ${errorText}`); } const identities = await response.json(); if (!identities || identities.value?.length === 0) { return { content: [{ type: "text", text: "No identities found" }], isError: true }; } const identitiesTrimmed = identities.value?.map((identity: IdentityBase) => { return { id: identity.id, displayName: identity.providerDisplayName, descriptor: identity.descriptor, }; }); return { content: [{ type: "text", text: JSON.stringify(identitiesTrimmed, null, 2) }], }; } catch (error) { const errorMessage = error instanceof Error ? error.message : "Unknown error occurred"; return { content: [{ type: "text", text: `Error fetching identities: ${errorMessage}` }], isError: true, }; } }
  • Input schema using Zod for the searchFilter parameter.
    { searchFilter: z.string().describe("Search filter (unique namme, display name, email) to retrieve identity IDs for."), },
  • Tool registration using McpServer.tool() with name from CORE_TOOLS, description, schema, and handler.
    server.tool( CORE_TOOLS.get_identity_ids, "Retrieve Azure DevOps identity IDs for a provided search filter.", { searchFilter: z.string().describe("Search filter (unique namme, display name, email) to retrieve identity IDs for."), }, async ({ searchFilter }) => { try { const token = await tokenProvider(); const connection = await connectionProvider(); const orgName = connection.serverUrl.split("/")[3]; const baseUrl = `https://vssps.dev.azure.com/${orgName}/_apis/identities`; const params = new URLSearchParams({ "api-version": apiVersion, "searchFilter": "General", "filterValue": searchFilter, }); const response = await fetch(`${baseUrl}?${params}`, { headers: { "Authorization": `Bearer ${token.token}`, "Content-Type": "application/json", "User-Agent": userAgentProvider(), }, }); if (!response.ok) { const errorText = await response.text(); throw new Error(`HTTP ${response.status}: ${errorText}`); } const identities = await response.json(); if (!identities || identities.value?.length === 0) { return { content: [{ type: "text", text: "No identities found" }], isError: true }; } const identitiesTrimmed = identities.value?.map((identity: IdentityBase) => { return { id: identity.id, displayName: identity.providerDisplayName, descriptor: identity.descriptor, }; }); return { content: [{ type: "text", text: JSON.stringify(identitiesTrimmed, null, 2) }], }; } catch (error) { const errorMessage = error instanceof Error ? error.message : "Unknown error occurred"; return { content: [{ type: "text", text: `Error fetching identities: ${errorMessage}` }], isError: true, }; } } );
  • Constant mapping internal tool names to MCP tool names, used in registration.
    const CORE_TOOLS = { list_project_teams: "core_list_project_teams", list_projects: "core_list_projects", get_identity_ids: "core_get_identity_ids", };

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ennuiii/DevOpsMcpPAT'

If you have feedback or need assistance with the MCP directory API, please join our Discord server