Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: microsoft/azure-devops-mcp
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.2.0
Choose a base ref
...
head repository: microsoft/azure-devops-mcp
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v1.2.1
Choose a head ref
  • 8 commits
  • 11 files changed
  • 9 contributors

Commits on Jul 21, 2025

  1. fix tool parameter names for strict claude code naming conventions (#319

    )
    
    Replaces $top and $skip with top and skip not to break some clients
    
    ## GitHub issue number
    [317](#317)
    ## **Associated Risks**
    N/A
    
    ## ✅ **PR Checklist**
    
    - [X] **I have read the [contribution
    guidelines](https://github.com/microsoft/azure-devops-mcp/blob/main/CONTRIBUTING.md)**
    - [X] **I have read the [code of conduct
    guidelines](https://github.com/microsoft/azure-devops-mcp/blob/main/CODE_OF_CONDUCT.md)**
    - [X] Title of the pull request is clear and informative.
    - [X] 👌 Code hygiene
    - [N/A] 🔭 Telemetry added, updated, or N/A
    - [N/A] 📄 Documentation added, updated, or N/A
    - [N/A] 🛡️ Automated tests added, or N/A
    
    ## 🧪 **How did you test it?**
    successfully made calls to the search MCP in Claude code, Copilot, Cline
    and Roo
    bcrispcvna authored Jul 21, 2025
    Configuration menu
    Copy the full SHA
    d70ab9d View commit details
    Browse the repository at this point in the history

Commits on Jul 22, 2025

  1. Remove deprecated close_and_link_workitem_duplicates tool and its tes…

    …ts (#316)
    
    Removing `wit_close_and_link_workitem_duplicates`. This is no longer
    needed and the scenario can be accomplished using work item link and
    work item updates.
    
    ## GitHub issue number
    N/A
    
    ## **Associated Risks**
    
    Low: Existing customers could be used to using the tool
    
    ## ✅ **PR Checklist**
    
    - [x] **I have read the [contribution
    guidelines](https://github.com/microsoft/azure-devops-mcp/blob/main/CONTRIBUTING.md)**
    - [x] **I have read the [code of conduct
    guidelines](https://github.com/microsoft/azure-devops-mcp/blob/main/CODE_OF_CONDUCT.md)**
    - [ ] Title of the pull request is clear and informative.
    - [x] 👌 Code hygiene
    - [x] 🔭 Telemetry added, updated, or N/A
    - [x] 📄 Documentation added, updated, or N/A
    - [x] 🛡️ Automated tests added, or N/A
    
    ## 🧪 **How did you test it?**
    
    Tested process manually. Updated tests
    danhellem authored Jul 22, 2025
    Configuration menu
    Copy the full SHA
    00fff77 View commit details
    Browse the repository at this point in the history
  2. [dependencies]: Bump jest from 30.0.4 to 30.0.5 (#324)

    Bumps [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest)
    from 30.0.4 to 30.0.5.
    <details>
    <summary>Changelog</summary>
    <p><em>Sourced from <a
    href="https://github.com/%3Ca%20href="https://github.com/jestjs/jest/blob/main/CHANGELOG.md">jest's">https://github.com/jestjs/jest/blob/main/CHANGELOG.md">jest's
    changelog</a>.</em></p>
    <blockquote>
    <h2>30.0.5</h2>
    <h3>Features</h3>
    <ul>
    <li><code>[jest-config]</code> Allow <code>testMatch</code> to take a
    string value</li>
    <li><code>[jest-worker]</code> Let <code>workerIdleMemoryLimit</code>
    accept 0 to always restart worker child processes</li>
    </ul>
    <h3>Fixes</h3>
    <ul>
    <li><code>[expect]</code> Fix <code>bigint</code> error (<a
    href="https://github.com/%3Ca%20href="https://redirect.github.com/jestjs/jest/pull/15702">#15702</a>)</li">https://redirect.github.com/jestjs/jest/pull/15702">#15702</a>)</li>
    </ul>
    </blockquote>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/%3Ca%20href="https://github.com/jestjs/jest/commit/22236cf58b66039f81893537c90dee290bab427f"><code>22236cf</code></a">https://github.com/jestjs/jest/commit/22236cf58b66039f81893537c90dee290bab427f"><code>22236cf</code></a>
    v30.0.5</li>
    <li>See full diff in <a
    href="https://github.com/%3Ca%20href="https://github.com/jestjs/jest/commits/v30.0.5/packages/jest">compare">https://github.com/jestjs/jest/commits/v30.0.5/packages/jest">compare
    view</a></li>
    </ul>
    </details>
    <br />
    
    
    [![Dependabot compatibility
    score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jest&package-manager=npm_and_yarn&previous-version=30.0.4&new-version=30.0.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
    
    Dependabot will resolve any conflicts with this PR as long as you don't
    alter it yourself. You can also trigger a rebase manually by commenting
    `@dependabot rebase`.
    
    [//]: # (dependabot-automerge-start)
    [//]: # (dependabot-automerge-end)
    
    ---
    
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    
    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot merge` will merge this PR after your CI passes on it
    - `@dependabot squash and merge` will squash and merge this PR after
    your CI passes on it
    - `@dependabot cancel merge` will cancel a previously requested merge
    and block automerging
    - `@dependabot reopen` will reopen this PR if it is closed
    - `@dependabot close` will close this PR and stop Dependabot recreating
    it. You can achieve the same result by closing it manually
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)
    
    
    </details>
    
    Signed-off-by: dependabot[bot] <[email protected]>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: Dan Hellem <[email protected]>
    dependabot[bot] and danhellem authored Jul 22, 2025
    Configuration menu
    Copy the full SHA
    a9bf4d1 View commit details
    Browse the repository at this point in the history
  3. How to guide on setup in Cursor (#329)

    Added instructions and link to video on using Cursor
    
    ## GitHub issue number #298 
    
    ## **Associated Risks**
    
    None
    
    ## ✅ **PR Checklist**
    
    - [x] **I have read the [contribution
    guidelines](https://github.com/microsoft/azure-devops-mcp/blob/main/CONTRIBUTING.md)**
    - [x] **I have read the [code of conduct
    guidelines](https://github.com/microsoft/azure-devops-mcp/blob/main/CODE_OF_CONDUCT.md)**
    - [x] Title of the pull request is clear and informative.
    - [x] 👌 Code hygiene
    - [x] 🔭 Telemetry added, updated, or N/A
    - [x] 📄 Documentation added, updated, or N/A
    - [x] 🛡️ Automated tests added, or N/A
    
    ## 🧪 **How did you test it?**
    
    None
    
    ---------
    
    Co-authored-by: Engin Polat <[email protected]>
    danhellem and polatengin authored Jul 22, 2025
    Configuration menu
    Copy the full SHA
    79ad732 View commit details
    Browse the repository at this point in the history
  4. feat: add create pull request thread tool (#260)

    Hey,
    
    i added the **create_pull_request_thread** functionality to initiate a
    new comment thread on a pull request.
    
    ## GitHub issue number
    #231
    
    ## **Associated Risks**
    
    /
    
    ## ✅ **PR Checklist**
    
    - [x] **I have read the [contribution
    guidelines](https://github.com/microsoft/azure-devops-mcp/blob/main/CONTRIBUTING.md)**
    - [x] **I have read the [code of conduct
    guidelines](https://github.com/microsoft/azure-devops-mcp/blob/main/CODE_OF_CONDUCT.md)**
    - [x] Title of the pull request is clear and informative.
    - [x] 👌 Code hygiene
    - [x] 🔭 Telemetry added, updated, or N/A
    - [x] 📄 Documentation added, updated, or N/A
    - [x] 🛡️ Automated tests added, or N/A
    
    ## 🧪 **How did you test it?**
    Model: Claude Sonnet 4
    Prompt:
    ```
    ## Code Review Expert: Detailed Analysis and Best Practices
    
    As a senior software engineer with expertise in code quality, security, and performance optimization, perform a code review of the provided git diff. 
    
    Focus on delivering actionable feedback in the following areas:
    
    Critical Issues:
    - Security vulnerabilities and potential exploits
    - Runtime errors and logic bugs
    - Performance bottlenecks and optimization opportunities
    - Memory management and resource utilization
    - Threading and concurrency issues
    - Input validation and error handling
    
    Code Quality:
    - Adherence to language-specific conventions and best practices
    - Design patterns and architectural considerations
    - Code organization and modularity
    - Naming conventions and code readability
    - Documentation completeness and clarity
    - Test coverage and testing approach
    
    Maintainability:
    - Code duplication and reusability
    - Complexity metrics (cyclomatic complexity, cognitive complexity)
    - Dependencies and coupling
    - Extensibility and future-proofing
    - Technical debt implications
    
    Provide specific recommendations with:
    - Code examples for suggested improvements
    - References to relevant documentation or standards
    - Rationale for suggested changes
    - Impact assessment of proposed modifications
    
    Format your review using clear sections and bullet points. Include inline code references where applicable.
    
    Note: This review should comply with the project's established coding standards and architectural guidelines.
    
    ### Context:
    - **DevOps-Project**: z
    - **Repository**: y
    - **PR number**: x
    
    ### Instructions:
    1. **Use Azure DevOps integration**:
       - Connect to Azure DevOps via MCP Tools
       - Load PR details, commits and existing comments
       - Analyze the changed files and code diffs
    
    2 **Code standards check against**:
       - Copilot Instructions
    
    3. **Sarcastic review style**:
       - Be precise but biting in criticism
       - Repeat similar issues for multiple files
       - Create separate comment threads for each issue
       - If possible, always link the file in the comment as well as the line and offset
    
    4. **Azure DevOps Actions**:
       - Use `mcp_ado_repo_create_pull_request_thread` for new comments
       - Create specific comment threads with file/line references (for the line and offset: rightFileStartLine, rightFileStartOffset, rightFileEndLine, rightFileEndOffset)
       - Link specific lines of code and offsets
       - Set review priority based on issue severity
    
    5. **Extra information**:
       - Ignore deleted comments
       - Ignore deleted files
       - Always perform a review, even if you think the PR has already been reviewed. Please proceed in such a way that you ignore the old review and start again.
       - PullRequest-Status Enum(NotSet = 0, Active = 1, Abandoned = 2, Completed = 3, All = 4)
       - Only look at the diffs from the PullRequest
    
    6. **Qualtity**:
       1. **Specify filePath** - Full path to the file
       2. **Specify rightFileStartLine** - Start line of the problem
       3. **Specify rightFileEndLine** - End line of the problem
       4. **Specify rightFileStartOffset** - Start offset
       5. **Specify rightFileEndOffset** - End offset
    
    ### Expected result:
    - Each comment with specific file/line reference
    - Sarcastic but constructive tone
    - Specific recommendations for improvement
    - create new short review comments with specific line references
    - Reviewing the diffs between the source branch and target branch
    ```
    <img width="1396" height="851" alt="grafik"
    src="https://github.com/%3Ca%20href="https://github.com/user-attachments/assets/8aaec603-b890-4a6c-8d04-399a9cc4da18">https://github.com/user-attachments/assets/8aaec603-b890-4a6c-8d04-399a9cc4da18"
    />
    
    ---------
    
    Co-authored-by: Dan Hellem <[email protected]>
    PlaySkyHD and danhellem authored Jul 22, 2025
    Configuration menu
    Copy the full SHA
    c750a38 View commit details
    Browse the repository at this point in the history

Commits on Jul 23, 2025

  1. Trim MCP server tool payloads to reduce token consumption (#247)

    This PR implements trimmed responses for Azure DevOps MCP server tools
    to dramatically reduce LLM token consumption while maintaining backward
    compatibility.
    
    ## Problem
    
    The MCP server tools were returning full REST API JSON payloads, causing
    unnecessary token burn and making it difficult for weaker LLMs to
    extract relevant information. For example:
    
    - `ado_resolve_comment` was returning 4200+ character responses when a
    simple "resolved" message would suffice
    - `ado_list_pull_request_threads` was returning verbose payloads with
    `_links` objects, deleted comments, and unnecessary author properties
    
    ## Solution
    
    Added a `fullResponse` parameter (defaults to `false`) to key repository
    tools that provides two response modes:
    
    ### Trimmed Mode (Default)
    - **Action tools** (`resolve_comment`, `reply_to_comment`) return simple
    success messages
    - **List tools** (`list_pull_request_threads`,
    `list_pull_request_thread_comments`) return filtered data excluding:
      - Deleted comments
      - `_links` objects 
      - Verbose author properties (imageUrl, descriptor, url)
    
    ### Full Mode (Opt-in)
    - Set `fullResponse: true` to get complete REST API responses for
    debugging or advanced use cases
    
    ## Token Savings
    
    Real-world examples show dramatic improvements:
    
    - **resolve_comment**: 97.3% reduction (1346 → 37 characters)
    - **reply_to_comment**: 92.5% reduction (549 → 41 characters)  
    - **list_pull_request_threads**: 55.3% reduction (680 → 304 characters)
    
    ## Example Usage
    
    ```typescript
    // Trimmed response (default)
    await server.request({
      method: "tools/call",
      params: {
        name: "repo_resolve_comment",
        arguments: { repositoryId: "repo1", pullRequestId: 123, threadId: 456 }
      }
    });
    // Returns: "Thread 456 was successfully resolved."
    
    // Full response (opt-in)
    await server.request({
      method: "tools/call", 
      params: {
        name: "repo_resolve_comment",
        arguments: { 
          repositoryId: "repo1", 
          pullRequestId: 123, 
          threadId: 456,
          fullResponse: true 
        }
      }
    });
    // Returns: Complete thread JSON with all properties
    ```
    
    ## Modified Tools
    
    - `repo_resolve_comment` - Simple success message vs full thread JSON
    - `repo_reply_to_comment` - Simple success message vs full comment JSON
    - `repo_list_pull_request_threads` - Filtered thread data vs complete
    response
    - `repo_list_pull_request_thread_comments` - Filtered comment data vs
    complete response
    
    All changes maintain full backward compatibility via the optional
    `fullResponse` parameter.
    
    Fixes #36.
    
    <!-- START COPILOT CODING AGENT TIPS -->
    ---
    
    💡 You can make Copilot smarter by setting up custom instructions,
    customizing its development environment and configuring Model Context
    Protocol (MCP) servers. Learn more [Copilot coding agent
    tips](https://gh.io/copilot-coding-agent-tips) in the docs.
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <[email protected]>
    Co-authored-by: nikolapeja6 <[email protected]>
    Co-authored-by: Nikola Pejic <[email protected]>
    Co-authored-by: Dan Hellem <[email protected]>
    4 people authored Jul 23, 2025
    Configuration menu
    Copy the full SHA
    3e0704e View commit details
    Browse the repository at this point in the history
  2. Fixing issue with casing on operations wit_update_work_item rejects… (

    #326)
    
    This pull request refactors the handling of work item update operations
    in `src/tools/workitems.ts` and enhances the corresponding test coverage
    in `test/src/tools/workitems.test.ts`. Key changes include simplifying
    the transformation of operation strings, removing redundant code, and
    adding tests for edge cases like API failures, operation
    transformations, and Markdown formatting.
    
    ### Refactoring and simplification:
    
    * Removed the `operationToApiString` utility function and replaced it
    with an inline transformation using `zod` schemas to convert operation
    strings to lowercase and validate them against allowed values (`add`,
    `replace`, `remove`) (`src/tools/workitems.ts`,
    [[1]](diffhunk://#diff-86312c74c8d340f1b252bb6a34ae3d610c400cf9151d45223ec54d2d2ab2b0c9L9-L21)
    [[2]](diffhunk://#diff-86312c74c8d340f1b252bb6a34ae3d610c400cf9151d45223ec54d2d2ab2b0c9L466-R461).
    * Simplified the mapping of update operations by directly using the
    transformed `op` values instead of calling the removed utility function
    (`src/tools/workitems.ts`,
    [src/tools/workitems.tsL480-R475](diffhunk://#diff-86312c74c8d340f1b252bb6a34ae3d610c400cf9151d45223ec54d2d2ab2b0c9L480-R475)).
    
    ### Enhanced test coverage:
    
    * Added a test case to ensure proper error handling when the API fetch
    call fails, verifying that an appropriate error message is thrown
    (`test/src/tools/workitems.test.ts`,
    [test/src/tools/workitems.test.tsR430-R456](diffhunk://#diff-81b8c1c7196cc4eba4c6b2a30eaec7c3101f72c5a88803d07b942b71e3404b9dR430-R456)).
    * Extended tests to validate the transformation of uppercase operation
    strings (e.g., `Add`, `Replace`) to lowercase and their correct usage in
    API calls (`test/src/tools/workitems.test.ts`,
    [test/src/tools/workitems.test.tsL608-R653](diffhunk://#diff-81b8c1c7196cc4eba4c6b2a30eaec7c3101f72c5a88803d07b942b71e3404b9dL608-R653)).
    * Introduced a test to verify that updates are grouped by work item ID
    when batching API requests (`test/src/tools/workitems.test.ts`,
    [test/src/tools/workitems.test.tsR975-R1060](diffhunk://#diff-81b8c1c7196cc4eba4c6b2a30eaec7c3101f72c5a88803d07b942b71e3404b9dR975-R1060)).
    * Added a test to ensure that long text fields are correctly formatted
    as Markdown when specified, including verifying the addition of a
    `multilineFieldsFormat` entry in the API request body
    (`test/src/tools/workitems.test.ts`,
    [test/src/tools/workitems.test.tsR975-R1060](diffhunk://#diff-81b8c1c7196cc4eba4c6b2a30eaec7c3101f72c5a88803d07b942b71e3404b9dR975-R1060)).
    
    Fixes #323
    
    ## GitHub issue number #323 
    
    ## **Associated Risks**
    
    No risks
    
    ## ✅ **PR Checklist**
    
    - [x] **I have read the [contribution
    guidelines](https://github.com/microsoft/azure-devops-mcp/blob/main/CONTRIBUTING.md)**
    - [x] **I have read the [code of conduct
    guidelines](https://github.com/microsoft/azure-devops-mcp/blob/main/CODE_OF_CONDUCT.md)**
    - [x] Title of the pull request is clear and informative.
    - [x] 👌 Code hygiene
    - [x] 🔭 Telemetry added, updated, or N/A
    - [x] 📄 Documentation added, updated, or N/A
    - [x] 🛡️ Automated tests added, or N/A
    
    ## 🧪 **How did you test it?**
    
    Updated auto tests. Verified the tools works manually and updated cases
    on operations to account for uppper, lower, and combo
    danhellem authored Jul 23, 2025
    Configuration menu
    Copy the full SHA
    d02900b View commit details
    Browse the repository at this point in the history

Commits on Jul 24, 2025

  1. chore: publish 1.2.1 (#342)

    new release with recent fixes
    aaudzei authored Jul 24, 2025
    Configuration menu
    Copy the full SHA
    17a1cc9 View commit details
    Browse the repository at this point in the history
Loading