Azure DevOps MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AZURE_CLIENT_ID | No | Application (client) ID from your Azure AD app registration | |
| AZURE_TENANT_ID | No | Azure AD tenant ID | |
| AZURE_DEVOPS_PAT | No | Your Personal Access Token | |
| AZURE_CLIENT_SECRET | No | Client secret for the app | |
| AZURE_DEVOPS_ORG_URL | No | Your Azure DevOps org URL (e.g., https://dev.azure.com/your-organization) | |
| AZURE_DEVOPS_PROJECT | No | Default project (can be overridden per tool call) | |
| AZURE_USE_MANAGED_IDENTITY | No | Set to 'true' to enable managed identity |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_pipelinesA | List all pipelines in an Azure DevOps project. Args: project: Azure DevOps project name. Uses default if not specified. |
| get_pipeline_runsA | Get recent runs for a specific pipeline. Args: project: Azure DevOps project name. Uses default if not specified. pipeline_id: The ID of the pipeline. top: Maximum number of runs to return (default: 10). |
| get_pipeline_run_logsC | Get logs for a specific pipeline run. Args: project: Azure DevOps project name. Uses default if not specified. pipeline_id: The ID of the pipeline. run_id: The ID of the pipeline run. |
| trigger_pipelineA | Trigger a new pipeline run. Args: project: Azure DevOps project name. Uses default if not specified. pipeline_id: The ID of the pipeline to trigger. parameters: Optional template parameters to pass to the pipeline as key-value pairs. |
| list_build_artifactsC | List artifacts produced by a build. Args: project: Azure DevOps project name. Uses default if not specified. build_id: The build ID. |
| get_artifact_download_urlB | Get the download URL for a specific build artifact. Args: project: Azure DevOps project name. Uses default if not specified. build_id: The build ID. artifact_name: The name of the artifact. |
| list_release_definitionsA | List all classic release definitions (release pipelines) in a project. Args: project: Azure DevOps project name. Uses default if not specified. top: Maximum number of definitions to return (default: 50). |
| list_releasesA | List releases, optionally filtered by a release definition. Args: project: Azure DevOps project name. Uses default if not specified. definition_id: Optional release definition ID to filter by. 0 means all. top: Maximum number of releases to return (default: 25). |
| get_releaseA | Get detailed information about a specific release, including environment/stage status. Args: project: Azure DevOps project name. Uses default if not specified. release_id: The ID of the release. |
| create_releaseA | Create (trigger) a new release from a classic release definition. Args: project: Azure DevOps project name. Uses default if not specified. definition_id: The release definition ID to create a release from. description: Optional description for the release. artifacts: Optional list of artifact version overrides. Each dict should have: - alias (str): artifact source alias - version_id (str): specific version/build ID - version_name (str): display name for the version |
| list_release_approvalsA | List release approvals, optionally filtered by status. Args: project: Azure DevOps project name. Uses default if not specified. status: Filter by status: "pending", "approved", "rejected", "reassigned", "canceled", "skipped", "undefined". Default is "pending". top: Maximum number of approvals to return (default: 25). assigned_to: Optional filter by approver display name or unique name. |
| update_release_approvalB | Approve or reject a release approval. Args: project: Azure DevOps project name. Uses default if not specified. approval_id: The approval ID. status: "approved" or "rejected". comments: Optional comments for the approval decision. |
| list_boardsA | List all boards for a project/team. Args: project: Azure DevOps project name. Uses default if not specified. team: Team name. If not specified, uses the project's default team. |
| get_board_work_itemsC | Get work items on a specific board along with board columns. Args: project: Azure DevOps project name. Uses default if not specified. board: Name of the board (e.g., "Stories", "Bugs"). team: Team name. If not specified, uses the project's default team. |
| get_work_itemB | Get detailed information about a specific work item. Args: project: Azure DevOps project name. Uses default if not specified. work_item_id: The ID of the work item. |
| create_work_itemA | Create a new work item. Args: project: Azure DevOps project name. Uses default if not specified. work_item_type: Type of work item (e.g., "Bug", "User Story", "Task", "Epic", "Feature"). title: Title of the work item. description: HTML description of the work item. assigned_to: Display name or email of the person to assign to. area_path: Area path (e.g., "MyProject\Team A"). iteration_path: Iteration path (e.g., "MyProject\Sprint 1"). priority: Priority (1=Critical, 2=High, 3=Medium, 4=Low). tags: Semicolon-separated tags (e.g., "frontend; urgent"). additional_fields: Dict of additional field paths and values. parent_id: Optional ID of a parent work item to link to. |
| update_work_itemB | Update an existing work item's fields and/or add relation links. Args: project: Azure DevOps project name. Uses default if not specified. work_item_id: The ID of the work item to update. fields: Dict mapping field names to new values. Example: {"System.Title": "New Title", "System.State": "Active", "System.AssignedTo": "user@example.com"} add_links: List of relation links to add. Each dict must have: - target_id (int): ID of the work item to link to. - link_type (str): "parent", "child", "related", "predecessor", "successor", or a fully-qualified relation type. - comment (str, optional): Comment for the link. Example: [{"target_id": 100, "link_type": "parent"}] |
| query_work_itemsA | Execute a WIQL (Work Item Query Language) query. Args: project: Azure DevOps project name. Uses default if not specified. query: WIQL query string. Example: "SELECT [System.Id], [System.Title], [System.State] FROM workitems WHERE [System.WorkItemType] = 'Bug' AND [System.State] = 'Active' ORDER BY [System.CreatedDate] DESC" |
| get_work_item_commentsA | Get comments on a work item. Args: project: Azure DevOps project name. Uses default if not specified. work_item_id: The ID of the work item. top: Maximum number of comments to return (default: 50). |
| add_work_item_commentA | Add a comment to a work item. Args: project: Azure DevOps project name. Uses default if not specified. work_item_id: The ID of the work item. text: The comment text (supports HTML). |
| delete_work_itemA | Delete a work item (move to recycle bin, or permanently destroy). Args: project: Azure DevOps project name. Uses default if not specified. work_item_id: The ID of the work item to delete. destroy: If True, permanently delete. If False (default), move to recycle bin. |
| list_saved_queriesA | List saved work item queries (folders and queries). Args: project: Azure DevOps project name. Uses default if not specified. depth: How deep to recurse into query folders (default: 2). |
| run_saved_queryB | Execute a saved query by its ID and return work item details. Args: project: Azure DevOps project name. Uses default if not specified. query_id: The saved query GUID. |
| list_repositoriesA | List all Git repositories in a project. Args: project: Azure DevOps project name. Uses default if not specified. |
| get_repositoryA | Get detailed information about a specific Git repository. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. |
| list_branchesB | List branches in a Git repository. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. filter_prefix: Optional prefix to filter branch names (e.g., "feature/"). |
| get_commitsA | Get recent commits for a Git repository. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. branch: Optional branch name to filter commits. top: Maximum number of commits to return (default: 20). author: Optional author name to filter commits. |
| get_file_contentA | Get the content of a file from a Git repository. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. path: File path in the repository (e.g., "/src/main.py"). branch: Optional branch name (defaults to the repository's default branch). |
| compare_branchesB | Compare two branches and show the diff summary. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. base_branch: The base branch name. target_branch: The target branch name. |
| list_pull_requestsA | List pull requests in a Git repository. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. status: Filter by status: "active", "completed", "abandoned", "all" (default: "active"). top: Maximum number of pull requests to return (default: 25). creator: Optional filter by creator ID. reviewer: Optional filter by reviewer ID. |
| get_pull_requestB | Get detailed information about a specific pull request. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. pull_request_id: The pull request ID. |
| create_pull_requestA | Create a new pull request. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. source_branch: Source branch name (e.g., "feature/my-feature"). target_branch: Target branch name (e.g., "main"). title: Title of the pull request. description: Optional description/body of the pull request. reviewers: Optional list of reviewer IDs. is_draft: Whether to create as a draft PR (default: False). |
| update_pull_requestB | Update a pull request (change status, title, description, set auto-complete). Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. pull_request_id: The pull request ID. status: "active", "abandoned", or "completed" (to merge). title: New title for the pull request. description: New description for the pull request. auto_complete_set_by: User ID to set auto-complete by. merge_strategy: "noFastForward", "squash", "rebase", "rebaseMerge". |
| get_pull_request_threadsB | Get comment threads on a pull request. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. pull_request_id: The pull request ID. |
| create_pull_request_commentA | Add a comment thread to a pull request. Args: project: Azure DevOps project name. Uses default if not specified. repository_id: The repository ID or name. pull_request_id: The pull request ID. content: The comment text (supports markdown). file_path: Optional file path for inline comments. line_number: Optional line number for inline comments (requires file_path). status: Thread status: "active", "fixed", "wontFix", "closed", "byDesign", "pending". |
| list_test_runsB | List test runs in a project. Args: project: Azure DevOps project name. Uses default if not specified. top: Maximum number of runs to return (default: 25). state: Optional filter by state (e.g., "Completed", "InProgress", "Aborted"). |
| get_test_run_resultsA | Get test results for a specific test run. Args: project: Azure DevOps project name. Uses default if not specified. run_id: The test run ID. top: Maximum number of results to return (default: 200). outcome: Optional filter by outcome (e.g., "Passed", "Failed", "NotExecuted"). |
| get_code_coverageB | Get code coverage summary for a build. Args: project: Azure DevOps project name. Uses default if not specified. build_id: The build ID to get coverage for. |
| list_wikisA | List all wikis in a project. Args: project: Azure DevOps project name. Uses default if not specified. |
| get_wiki_pageA | Get a wiki page by path. Args: project: Azure DevOps project name. Uses default if not specified. wiki_id: The wiki identifier (name or ID). path: Page path (e.g., "/Home", "/Release Notes/v2"). Defaults to root. include_content: Whether to include the page markdown content (default: True). |
| create_or_update_wiki_pageA | Create or update a wiki page. Args: project: Azure DevOps project name. Uses default if not specified. wiki_id: The wiki identifier (name or ID). path: Page path (e.g., "/Release Notes/v3"). content: Markdown content for the page. comment: Optional commit comment. if_match: ETag for optimistic concurrency (required for updates, empty for creates). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
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/iimsaurav/azure-devops-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server