Azure DevOps MCP Server

  • src
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import * as dotenv from 'dotenv'; import { AzureDevOpsServer } from './server'; import { AzureDevOpsConfig } from './types/config'; // Load environment variables dotenv.config(); // Log version info console.log('Azure DevOps MCP Server - Starting up'); console.log('Azure DevOps Node API Version:', require('azure-devops-node-api/package.json').version); console.log('MCP SDK Version:', require('@modelcontextprotocol/sdk/package.json').version); // Create the server configuration from environment variables const config: AzureDevOpsConfig = { organizationUrl: process.env.AZURE_DEVOPS_ORG_URL || '', personalAccessToken: process.env.AZURE_DEVOPS_PAT || '', defaultProject: process.env.AZURE_DEVOPS_DEFAULT_PROJECT, apiVersion: process.env.AZURE_DEVOPS_API_VERSION }; // Validate the required configuration if (!config.organizationUrl) { console.error('Error: AZURE_DEVOPS_ORG_URL environment variable is required'); process.exit(1); } if (!config.personalAccessToken) { console.error('Error: AZURE_DEVOPS_PAT environment variable is required'); process.exit(1); } // Create and initialize the server const server = new AzureDevOpsServer(config); // Run the server async function runServer() { // Test the connection to Azure DevOps const connectionSuccessful = await server.testConnection(); if (!connectionSuccessful) { console.error('Error: Failed to connect to Azure DevOps API'); process.exit(1); } console.log('Successfully connected to Azure DevOps API'); console.log(`Organization URL: ${config.organizationUrl}`); if (config.defaultProject) { console.log(`Default Project: ${config.defaultProject}`); } // Connect the server to the stdio transport const transport = new StdioServerTransport(); await server.connect(transport); console.log('Azure DevOps MCP Server running on stdio'); } // Start the server runServer().catch(error => { console.error('Fatal error in main():', error); process.exit(1); });