Skip to main content
Glama

Azure DevOps MCP Server with PAT Authentication

by ennuiii
tool-collector.tsโ€ข3.43 kB
// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. import { WebApi } from "azure-devops-node-api"; import { MockMcpServer, AccessToken, ToolDefinition } from "./tool-registry.js"; // Import all tool configurators import { configureAdvSecTools } from "./tools/advsec.js"; import { configureBuildTools } from "./tools/builds.js"; import { configureCoreTools } from "./tools/core.js"; import { configureReleaseTools } from "./tools/releases.js"; import { configureRepoTools } from "./tools/repos.js"; import { configureSearchTools } from "./tools/search.js"; import { configureTestPlanTools } from "./tools/testplans.js"; import { configureWikiTools } from "./tools/wiki.js"; import { configureWorkTools } from "./tools/work.js"; import { configureWorkItemTools } from "./tools/workitems.js"; export class ToolCollector { private mockServer: MockMcpServer; private tools: ToolDefinition[] = []; constructor() { this.mockServer = new MockMcpServer(); } async collectAllTools(tokenProvider: () => Promise<AccessToken>, connectionProvider: () => Promise<WebApi>, userAgentProvider: () => string): Promise<ToolDefinition[]> { try { console.log("๐Ÿ”ง Collecting Core Tools..."); configureCoreTools(this.mockServer as any, tokenProvider, connectionProvider, userAgentProvider); console.log("๐Ÿ”ง Collecting Work Tools..."); configureWorkTools(this.mockServer as any, tokenProvider, connectionProvider); console.log("๐Ÿ”ง Collecting Build Tools..."); configureBuildTools(this.mockServer as any, tokenProvider, connectionProvider, userAgentProvider); console.log("๐Ÿ”ง Collecting Repository Tools..."); configureRepoTools(this.mockServer as any, tokenProvider, connectionProvider, userAgentProvider); console.log("๐Ÿ”ง Collecting Work Item Tools..."); configureWorkItemTools(this.mockServer as any, tokenProvider, connectionProvider, userAgentProvider); console.log("๐Ÿ”ง Collecting Release Tools..."); configureReleaseTools(this.mockServer as any, tokenProvider, connectionProvider); console.log("๐Ÿ”ง Collecting Wiki Tools..."); configureWikiTools(this.mockServer as any, tokenProvider, connectionProvider); console.log("๐Ÿ”ง Collecting Test Plan Tools..."); configureTestPlanTools(this.mockServer as any, tokenProvider, connectionProvider); console.log("๐Ÿ”ง Collecting Search Tools..."); configureSearchTools(this.mockServer as any, tokenProvider, connectionProvider, userAgentProvider); console.log("๐Ÿ”ง Collecting Advanced Security Tools..."); configureAdvSecTools(this.mockServer as any, tokenProvider, connectionProvider); this.tools = this.mockServer.getTools(); console.log(`โœ… Collected ${this.tools.length} tools total`); return this.tools; } catch (error) { console.error("โŒ Error collecting tools:", error); return []; } } getTools(): ToolDefinition[] { return this.tools; } getTool(name: string): ToolDefinition | undefined { return this.tools.find(tool => tool.name === name); } getToolNames(): string[] { return this.tools.map(tool => tool.name); } getToolsForMcp() { return this.tools.map(tool => ({ name: tool.name, description: tool.description, inputSchema: tool.inputSchema })); } }

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