Skip to main content
Glama

Azure DevOps MCP Server

index.ts4.71 kB
export * from './schemas'; export * from './types'; export * from './create-pull-request'; export * from './list-pull-requests'; export * from './get-pull-request-comments'; export * from './add-pull-request-comment'; export * from './update-pull-request'; // Export tool definitions export * from './tool-definitions'; // New exports for request handling import { CallToolRequest } from '@modelcontextprotocol/sdk/types.js'; import { WebApi } from 'azure-devops-node-api'; import { RequestIdentifier, RequestHandler, } from '../../shared/types/request-handler'; import { defaultProject } from '../../utils/environment'; import { CreatePullRequestSchema, ListPullRequestsSchema, GetPullRequestCommentsSchema, AddPullRequestCommentSchema, UpdatePullRequestSchema, createPullRequest, listPullRequests, getPullRequestComments, addPullRequestComment, updatePullRequest, } from './'; /** * Checks if the request is for the pull requests feature */ export const isPullRequestsRequest: RequestIdentifier = ( request: CallToolRequest, ): boolean => { const toolName = request.params.name; return [ 'create_pull_request', 'list_pull_requests', 'get_pull_request_comments', 'add_pull_request_comment', 'update_pull_request', ].includes(toolName); }; /** * Handles pull requests feature requests */ export const handlePullRequestsRequest: RequestHandler = async ( connection: WebApi, request: CallToolRequest, ): Promise<{ content: Array<{ type: string; text: string }> }> => { switch (request.params.name) { case 'create_pull_request': { const args = CreatePullRequestSchema.parse(request.params.arguments); const result = await createPullRequest( connection, args.projectId ?? defaultProject, args.repositoryId, args, ); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], }; } case 'list_pull_requests': { const params = ListPullRequestsSchema.parse(request.params.arguments); const result = await listPullRequests( connection, params.projectId ?? defaultProject, params.repositoryId, { projectId: params.projectId ?? defaultProject, repositoryId: params.repositoryId, status: params.status, creatorId: params.creatorId, reviewerId: params.reviewerId, sourceRefName: params.sourceRefName, targetRefName: params.targetRefName, top: params.top, skip: params.skip, }, ); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], }; } case 'get_pull_request_comments': { const params = GetPullRequestCommentsSchema.parse( request.params.arguments, ); const result = await getPullRequestComments( connection, params.projectId ?? defaultProject, params.repositoryId, params.pullRequestId, { projectId: params.projectId ?? defaultProject, repositoryId: params.repositoryId, pullRequestId: params.pullRequestId, threadId: params.threadId, includeDeleted: params.includeDeleted, top: params.top, }, ); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], }; } case 'add_pull_request_comment': { const params = AddPullRequestCommentSchema.parse( request.params.arguments, ); const result = await addPullRequestComment( connection, params.projectId ?? defaultProject, params.repositoryId, params.pullRequestId, { projectId: params.projectId ?? defaultProject, repositoryId: params.repositoryId, pullRequestId: params.pullRequestId, content: params.content, threadId: params.threadId, parentCommentId: params.parentCommentId, filePath: params.filePath, lineNumber: params.lineNumber, status: params.status, }, ); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], }; } case 'update_pull_request': { const params = UpdatePullRequestSchema.parse(request.params.arguments); const fixedParams = { ...params, projectId: params.projectId ?? defaultProject, }; const result = await updatePullRequest(fixedParams); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], }; } default: throw new Error(`Unknown pull requests tool: ${request.params.name}`); } };

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/Tiberriver256/mcp-server-azure-devops'

If you have feedback or need assistance with the MCP directory API, please join our Discord server