-
Notifications
You must be signed in to change notification settings - Fork 273
Comparing changes
Open a pull request
base repository: microsoft/azure-devops-mcp
base: v1.2.0
head repository: microsoft/azure-devops-mcp
compare: v1.2.1
- 8 commits
- 11 files changed
- 9 contributors
Commits on Jul 21, 2025
-
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
Configuration menu - View commit details
-
Copy full SHA for d70ab9d - Browse repository at this point
Copy the full SHA d70ab9dView commit details
Commits on Jul 22, 2025
-
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
Configuration menu - View commit details
-
Copy full SHA for 00fff77 - Browse repository at this point
Copy the full SHA 00fff77View commit details -
[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 /> [](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]>
Configuration menu - View commit details
-
Copy full SHA for a9bf4d1 - Browse repository at this point
Copy the full SHA a9bf4d1View commit details -
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]>
Configuration menu - View commit details
-
Copy full SHA for 79ad732 - Browse repository at this point
Copy the full SHA 79ad732View commit details -
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]>
Configuration menu - View commit details
-
Copy full SHA for c750a38 - Browse repository at this point
Copy the full SHA c750a38View commit details
Commits on Jul 23, 2025
-
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]>
Configuration menu - View commit details
-
Copy full SHA for 3e0704e - Browse repository at this point
Copy the full SHA 3e0704eView commit details -
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
Configuration menu - View commit details
-
Copy full SHA for d02900b - Browse repository at this point
Copy the full SHA d02900bView commit details
Commits on Jul 24, 2025
-
Configuration menu - View commit details
-
Copy full SHA for 17a1cc9 - Browse repository at this point
Copy the full SHA 17a1cc9View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v1.2.0...v1.2.1