Skip to content
Last updated

Azure DevOps integration

Azure DevOps provides services for source control, work tracking, builds and releases, test plans, and package management.

It can be connected to Agen.co two ways, matching the Official / In-house filter in the connector picker:

  • Official — Agen.co connects through Microsoft's own hosted Azure DevOps MCP server (https://mcp.dev.azure.com/{organization}), so your AI agents use the same repository, work item, pipeline, wiki, and test plan tools Microsoft exposes to MCP clients like Visual Studio Code. Authorization is Microsoft Entra ID OAuth through an app you register in your Entra tenant.
  • In-house — Agen.co wraps the Azure DevOps REST API directly through its own integration layer, using a Microsoft Entra ID OAuth 2.0 app you register in the Azure portal.

Pick Official if the built-in MCP tools cover what your agents need. Fall back to In-house if you need the Azure DevOps REST API surface beyond them, or if Microsoft's server does not accept the connection.


Connect via the official MCP server

Prerequisites

  • An Azure DevOps organization backed by a Microsoft Entra tenant. Standalone Microsoft account (MSA) organizations are not supported by the remote MCP server.
  • Permission to register applications in that Entra tenant, and a tenant administrator to grant admin consent for the API permission below. Depending on your role, the administrator may need to do the consent step.
  • The Azure DevOps MCP enterprise application provisioned in your tenant (application ID 2a72489c-aab2-4b65-b93a-a91edccf33b8). If you cannot find it when adding the API permission, the connector cannot authenticate. To provision it, a tenant administrator (Application Administrator, Cloud Application Administrator, or Global Administrator) signs in with Azure CLI (az login --tenant <tenantId> --allow-no-subscriptions) and runs az ad sp create --id 2a72489c-aab2-4b65-b93a-a91edccf33b8. After that, Azure DevOps MCP appears under Enterprise applications. See Microsoft's troubleshooting guide.
  • Membership in the Azure DevOps project, with access to the resources you want agents to use.

Microsoft documents this server for a short list of clients, and Agen.co is not on it. Microsoft documents a custom Entra app registration with a Web redirect URI and a client secret for Cursor Cloud Agents; these steps follow the same pattern. If Microsoft rejects the sign-in, use the In-house tab.

Get the callback URLs from Agen.co

Microsoft Entra ID has no dynamic client registration for this server, so you register an app yourself and give Agen.co its Client ID and Client Secret. The app needs Agen.co's callback URLs, so start in Agen.co.

  1. In the Agen.co portal, go to Connectors → My connectors and click Add connector.
  2. Find Azure DevOps and select it.
  3. In the Add Azure DevOps panel, keep the Official tab selected. The panel shows two read-only URLs at the bottom — copy both:
    • Callback URL — completes the initial OAuth handshake between Agen.co and your Entra app.
    • Gateway callback URL — used by the Agen.co MCP gateway for per-user authorization at runtime.

Leave this panel open — you return to it after registering the app in Entra.

Register the app in Microsoft Entra ID

  1. In the Microsoft Entra admin center, go to App registrations and create a new registration. For Supported account types, select Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant). The server's sign-in endpoint is https://login.microsoftonline.com/organizations, and a single-tenant app registration is rejected there with AADSTS50194.
  2. In the app registration, select Authentication (Preview) → Add redirect URI → Web, add both callback URLs from Agen.co, and save.
  3. Select Certificates & secrets → Client secrets → New client secret, enter a description and an expiration, and click Add. Copy the secret Value immediately — it is shown only once.
  4. Select API permissions → Add a permission → APIs my organization uses, search for Azure DevOps MCP (or the application ID above), and select it. If the search returns No results, the application is not provisioned in your tenant yet — see the prerequisites.
  5. Choose the delegated permissions your agents need and click Add permissions. Permissions are named per area, for example repos.read, repos.write, wit.read, wit.write, pipelines.read, wiki.read, work.read, testplan.read, and advsec.read, plus Ado.Mcp.Tools. Grant read permissions for read-only use, and write permissions only where agents must make changes.
  6. Click Grant admin consent.
  7. On the app's Overview page, copy the Application (client) ID.

Agen.co requests https://mcp.dev.azure.com/.default, which means every delegated permission you granted to the app. A tool call succeeds only when both the app's permissions and the signed-in user's Azure DevOps permissions allow it.

Sign-in errors from Entra

AADSTS50011 means a redirect URI on the app does not exactly match the callback URL Agen.co sent — check that both URLs were added under Web. AADSTS7000218 means the client secret in Agen.co is wrong or expired — create a new secret and update the Client Secret field. AADSTS65001 means consent was not granted — grant admin consent on the app's API permissions page. AADSTS700016 means the application was not found in the directory — check that the Client ID is the app's Application (client) ID and that the app lives in the tenant that owns the Azure DevOps organization.

If your tenant uses location-based Conditional Access policies, your Entra administrator may need to allow the remote MCP server IP addresses 20.125.155.22 and 40.74.28.81.

Connect Azure DevOps in Agen.co

Return to the open Add Azure DevOps panel and fill in the fields:

FieldRequiredDescription
Instance SlugYesNamespaces this instance — it prefixes each imported tool as slug__tool, so several instances of the same MCP can coexist. Prefilled with azure-devops. Use lowercase kebab-case. You can change it later from the connector's settings.
Azure DevOps organizationYesYour Azure DevOps organization name — the <organization> in dev.azure.com. The field shows contoso as a placeholder.
Client IDYesThe Application (client) ID of your Entra app.
Client SecretYesThe client secret Value of your Entra app.
Callback URL—Read-only. Add it as a Web redirect URI in your Entra app.
Gateway callback URL—Read-only. Also add it as a Web redirect URI — the MCP gateway uses it for per-user authorization at runtime.

Each connector instance connects to exactly one Azure DevOps organization. To connect a second organization, add the Azure DevOps connector again with a different Instance Slug and organization name.

  1. Click Connect. You are redirected to Microsoft to sign in and approve access.
  2. After you approve, the panel switches to Select the tools to import from Azure DevOps. Every tool is on by default; turn off any you do not want your agents to see.
  3. Click Add. The connector is created and the selected tools are imported only when you click Add — if you close the panel first, nothing is saved, even if the Microsoft callback page reported success.

What it covers

AreaWhat it covers
CoreList organizations, projects, and teams
ReposRepositories, branches, files, commits, and code search; create and update pull requests, reviewers, votes, and comment threads
Work itemsRead, search, create, update, comment on, and link work items; queries, backlogs, and attachments
PipelinesBuilds, logs, definitions, runs, and artifacts; run and create pipelines
WikiList, read, search, and create or update pages
Test plansPlans, suites, cases, and runs, with create and update operations
WorkIterations and team capacity
Advanced SecurityList and read alerts for a repository
Enterprise Live MigrationPreview tools for managing migrations

The list follows Microsoft's remote MCP server documentation (checked 2026-10-06) and can change.

Enabling the Azure DevOps connector isn't enough on its own. Tool calls remain denied until you create a policy that grants access to the specific tools you want to expose.

Connect via the in-house integration

Prerequisites

  • A Microsoft Entra ID tenant with permission to register applications (typically through the Azure portal)
  • An Azure DevOps organization linked to the user's Entra tenant

Use Microsoft Entra ID OAuth, not legacy Azure DevOps OAuth

Microsoft retired the legacy Azure DevOps OAuth platform (app.vssps.visualstudio.com) and stopped accepting new registrations. New apps must register through Microsoft Entra ID → App registrations in the Azure portal, as described below.

Connect Azure DevOps

Step 1: Open the Azure portal

Sign in to the Azure portal with an account that can register applications in your Microsoft Entra ID tenant. Use the top search bar to find Microsoft Entra ID and open it.

Azure portal home

Step 2: Open app registrations

In the Microsoft Entra ID menu, select App registrations, then click + New registration at the top of the page.

Azure App registrations

Step 3: Register the application

Fill in the Register an application form:

  • Name — Enter a descriptive name (for example, Frontegg Integration)
  • Supported account types — Select Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant) and then choose Allow all tenants so users from any Entra tenant can connect
  • Redirect URI — Choose Web as the platform and enter your Frontegg redirect URL: https://YOUR_MCP_GATEWAY_URL/integration-callback

Click Register to create the application.

Register Azure DevOps application

Step 4: Copy the Application (client) ID

After registration, the application Overview page opens. Copy the Application (client) ID — this is the Client ID you will paste into the Frontegg portal.

Azure DevOps Application client ID

Step 5: Add Azure DevOps API permissions

In the application's left sidebar, open API permissions and click + Add a permission. In the Microsoft APIs tab, choose Azure DevOps.

Azure DevOps API picker

Step 6: Select the user_impersonation scope

Choose Delegated permissions, then expand Other permissions and select user_impersonation. This grants the application access to Azure DevOps REST APIs on behalf of the signed-in user. Click Add permissions.

Granular vs. user_impersonation

The Azure DevOps API tile also exposes granular vso.* scopes (for example, vso.code, vso.work, vso.build). The user_impersonation permission is the Microsoft-recommended option for new Entra ID OAuth apps and lets the integration request the specific granular scopes it needs at sign-in time.

Select user_impersonation permission

Step 7: Verify configured permissions

The configured permissions list now shows Azure DevOps → user_impersonation alongside the default Microsoft Graph → User.Read permission.

Configured permissions

Step 8: Open Certificates & secrets

In the application's left sidebar, open Certificates & secrets. Make sure the Client secrets tab is selected and click + New client secret.

Certificates and secrets

Step 9: Create the client secret

Enter a description (for example, Frontegg Integration) and choose an expiration period. Click Add to create the secret.

Add client secret

Step 10: Copy the client secret value

Immediately copy the Value column of the new secret using the copy icon — this value is shown only once and cannot be retrieved later. Store it securely and paste it into the Frontegg portal as the Client Secret.

Copy the secret immediately

The client secret value is hidden as soon as you leave this page. If you lose it, you must delete the secret and create a new one.

Client secret value

Step 11: Find your Azure DevOps organization slug

Open Azure DevOps and select your organization. Open Organization settings → Overview — the organization slug is shown next to the Name field and in the URL https://dev.azure.com/{organization}/.

For example, in https://dev.azure.com/mycompany/, the organization slug is mycompany.

Azure DevOps organization

Configure the Frontegg portal

Once you have obtained your Application (client) ID, client secret value, and Azure DevOps organization slug from the steps above, enter them in the integration configuration page of the Frontegg portal:

  1. Open the Frontegg portal and navigate to [ENVIRONMENT] → Integrations → Azure DevOps.
  2. Enter the Application (client) ID as the Client ID and the client secret value as the Client Secret in the corresponding fields.
  3. Enter your Azure DevOps organization slug in the Azure DevOps organization field (for example, mycompany).
  4. Select the required scopes.
  5. Click Save.

Keep your credentials secure

Never share or commit your client secret to version control.

Additional resources