@mcp-apps/azure-devops-mcp-server
Version:
A Model Context Protocol (MCP) server for Azure DevOps integration
55 lines (45 loc) • 2.31 kB
text/typescript
import * as azdev from "azure-devops-node-api";
import * as WorkItemTrackingApi from "azure-devops-node-api/WorkItemTrackingApi";
import * as GitApi from "azure-devops-node-api/GitApi";
import { CoreApi } from "azure-devops-node-api/CoreApi";
import { BuildApi } from "azure-devops-node-api/BuildApi";
import { ReleaseApi } from "azure-devops-node-api/ReleaseApi";
import { getAccessToken } from "./token-manager";
import { PipelinesApi } from "azure-devops-node-api/PipelinesApi";
let connection: azdev.WebApi | null = null;
export async function getAzureDevOpsConnection(organizationUrl: string): Promise<azdev.WebApi> {
connection = null;
try {
const accessToken = await getAccessToken();
const authHandler = azdev.getBearerHandler(accessToken);
connection = new azdev.WebApi(organizationUrl, authHandler);
return connection;
} catch (error) {
console.error("Error getting Azure DevOps connection:", error);
throw error;
}
}
export async function getWorkItemTrackingApi(organizationUrl: string): Promise<WorkItemTrackingApi.IWorkItemTrackingApi> {
const connection = await getAzureDevOpsConnection(organizationUrl);
return await connection.getWorkItemTrackingApi();
}
export async function getGitApi(organizationUrl: string): Promise<GitApi.IGitApi> {
const connection = await getAzureDevOpsConnection(organizationUrl);
return await connection.getGitApi();
}
export async function getCoreApi(organizationUrl: string): Promise<CoreApi> {
const connection = await getAzureDevOpsConnection(organizationUrl);
return await connection.getCoreApi();
}
export async function getBuildApi(organizationUrl: string): Promise<BuildApi> {
const connection = await getAzureDevOpsConnection(organizationUrl);
return await connection.getBuildApi();
}
export async function getReleaseApi(organizationUrl: string): Promise<ReleaseApi> {
const connection = await getAzureDevOpsConnection(organizationUrl);
return await connection.getReleaseApi();
}
export async function getPipelinesApi(organizationUrl: string): Promise<PipelinesApi> {
const connection = await getAzureDevOpsConnection(organizationUrl);
return await connection.getPipelinesApi();
}