UNPKG

@mcp-apps/azure-devops-mcp-server

Version:

A Model Context Protocol (MCP) server for Azure DevOps integration

225 lines (195 loc) 5.61 kB
#!/usr/bin/env node import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; // Import tools import { listWorkItemsTool, createWorkItemTool, updateWorkItemTool } from "./tools/work-items"; import { listRepositoriesTool, listPullRequestsTool, getRepositoryFileTool, createPullRequestTool } from "./tools/repositories"; import { listProjectsTool } from "./tools/projects"; import { gitCommandTool, cloneRepositoryTool, createBranchTool, pushChangesTool, getRepositoryStatusTool, commitChangesTool } from "./tools/git-commands"; import { listBuildPipelinesTool, getBuildPipelineDetailsTool, listBuildRunsTool, listReleasePipelinesTool, getReleasePipelineDetailsTool, listReleaseRunsTool } from "./tools/pipelines"; import { queryTestCasesTool, getTestCaseDetailsTool, createTestCaseTool } from "./tools/test-cases.js"; // FOR TESTING ONLY: Uncomment the following lines to use a specific access token // import { getAccessToken } from "./utils/token-manager"; // const accessToken = getAccessToken(); // Create server instance const server = new McpServer({ name: "azure-devops-mcp-server", description: "Azure DevOps MCP Server", version: "1.0.0", capabilities: { resources: {}, tools: {}, }, }); // Register tools server.tool( listWorkItemsTool.name, listWorkItemsTool.description, listWorkItemsTool.parameters, listWorkItemsTool.handler ); server.tool( createWorkItemTool.name, createWorkItemTool.description, createWorkItemTool.parameters, createWorkItemTool.handler ); server.tool( updateWorkItemTool.name, updateWorkItemTool.description, updateWorkItemTool.parameters, updateWorkItemTool.handler ); server.tool( listRepositoriesTool.name, listRepositoriesTool.description, listRepositoriesTool.parameters, listRepositoriesTool.handler ); server.tool( listPullRequestsTool.name, listPullRequestsTool.description, listPullRequestsTool.parameters, listPullRequestsTool.handler ); server.tool( getRepositoryFileTool.name, getRepositoryFileTool.description, getRepositoryFileTool.parameters, getRepositoryFileTool.handler ); server.tool( listProjectsTool.name, listProjectsTool.description, listProjectsTool.parameters, listProjectsTool.handler ); server.tool( createPullRequestTool.name, createPullRequestTool.description, createPullRequestTool.parameters, createPullRequestTool.handler ); // Register Git commands tools server.tool( gitCommandTool.name, gitCommandTool.description, gitCommandTool.parameters, gitCommandTool.handler ); server.tool( cloneRepositoryTool.name, cloneRepositoryTool.description, cloneRepositoryTool.parameters, cloneRepositoryTool.handler ); server.tool( createBranchTool.name, createBranchTool.description, createBranchTool.parameters, createBranchTool.handler ); server.tool( pushChangesTool.name, pushChangesTool.description, pushChangesTool.parameters, pushChangesTool.handler ); server.tool( getRepositoryStatusTool.name, getRepositoryStatusTool.description, getRepositoryStatusTool.parameters, getRepositoryStatusTool.handler ); server.tool( commitChangesTool.name, commitChangesTool.description, commitChangesTool.parameters, commitChangesTool.handler ); // Register pipeline tools server.tool( listBuildPipelinesTool.name, listBuildPipelinesTool.description, listBuildPipelinesTool.parameters, listBuildPipelinesTool.handler ); server.tool( getBuildPipelineDetailsTool.name, getBuildPipelineDetailsTool.description, getBuildPipelineDetailsTool.parameters, getBuildPipelineDetailsTool.handler ); server.tool( listBuildRunsTool.name, listBuildRunsTool.description, listBuildRunsTool.parameters, listBuildRunsTool.handler ); server.tool( listReleasePipelinesTool.name, listReleasePipelinesTool.description, listReleasePipelinesTool.parameters, listReleasePipelinesTool.handler ); server.tool( getReleasePipelineDetailsTool.name, getReleasePipelineDetailsTool.description, getReleasePipelineDetailsTool.parameters, getReleasePipelineDetailsTool.handler ); server.tool( listReleaseRunsTool.name, listReleaseRunsTool.description, listReleaseRunsTool.parameters, listReleaseRunsTool.handler ); // Register test case tools server.tool( queryTestCasesTool.name, queryTestCasesTool.description, queryTestCasesTool.parameters, queryTestCasesTool.handler ); server.tool( getTestCaseDetailsTool.name, getTestCaseDetailsTool.description, getTestCaseDetailsTool.parameters, getTestCaseDetailsTool.handler ); server.tool( createTestCaseTool.name, createTestCaseTool.description, createTestCaseTool.parameters, createTestCaseTool.handler ); // Start the server async function main() { try { const transport = new StdioServerTransport(); await server.connect(transport); console.error("Azure DevOps MCP Server running on stdio"); } catch (error) { console.error("Error starting server:", error); process.exit(1); } } main();