Skip to content

Commit fd84740

Browse files
authored
Initial commit
0 parents  commit fd84740

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+20276
-0
lines changed

.azuredevops/pipelines/release.yml

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
trigger: none
2+
3+
schedules:
4+
- cron: "0 0 * * 1" # Runs every Monday at 00:00 UTC
5+
displayName: Release Latest Version
6+
branches:
7+
include:
8+
- main
9+
10+
jobs:
11+
- job: ReleaseLatest
12+
pool:
13+
vmImage: "windows-latest"
14+
15+
steps:
16+
- task: UseNode@1
17+
inputs:
18+
version: "20"
19+
checkLatest: false
20+
retryCountOnDownloadFails: 2
21+
22+
- task: npmAuthenticate@0
23+
inputs:
24+
workingFile: .npmrc
25+
displayName: Authenticate with npm registry
26+
27+
- task: Npm@1
28+
inputs:
29+
command: "ci"
30+
displayName: Install clean dependencies
31+
32+
- task: Npm@1
33+
inputs:
34+
command: "custom"
35+
customCommand: "run build"
36+
displayName: Build the project
37+
38+
- task: EsrpCodeSigning@1
39+
displayName: "Sign Binaries"
40+
inputs:
41+
ConnectedServiceName: "ESRP Service"
42+
FolderPath: "$(Build.ArtifactStagingDirectory)"
43+
Pattern: |
44+
**/*.js
45+
**/*.ts
46+
signConfigType: "inlineSignParams"
47+
inlineOperation: |
48+
[
49+
{
50+
"KeyCode": "CP-230012",
51+
"OperationCode": "SigntoolSign",
52+
"Parameters": {
53+
"OpusName": "Azure DevOps MCP",
54+
"OpusInfo": "https://github.com/microsoft/azure-devops-mcp",
55+
"FileDigest": "/fd SHA256",
56+
"PageHash": "/NPH",
57+
"TimeStamp": "/tr http://timestamp.digicert.com /td SHA256"
58+
},
59+
"ToolName": "signtool.exe",
60+
"ToolVersion": "6.2.9304.0"
61+
},
62+
{
63+
"KeyCode": "CP-230012",
64+
"OperationCode": "SigntoolVerify",
65+
"Parameters": {},
66+
"ToolName": "signtool.exe",
67+
"ToolVersion": "6.2.9304.0"
68+
}
69+
]
70+
SessionTimeout: "60"
71+
MaxConcurrency: "10"
72+
73+
- task: Npm@1
74+
inputs:
75+
command: "custom"
76+
customCommand: "publish --access public --registry=https://registry.npmjs.org/"
77+
displayName: Publish package to public npmjs under @azure-devops org scope

.devcontainer/devcontainer.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"name": "Azure DevOps Local MCP Server",
3+
"image": "mcr.microsoft.com/devcontainers/typescript-node:20",
4+
"hostRequirements": {
5+
"cpus": 2,
6+
"memory": "8gb"
7+
},
8+
"features": {
9+
"ghcr.io/devcontainers/features/node:1": {
10+
"version": "20"
11+
},
12+
"ghcr.io/devcontainers/features/azure-cli:1": {}
13+
},
14+
"postCreateCommand": "rm -f .npmrc && npm install && npm install -g . ; az login --use-device-code",
15+
"customizations": {
16+
"codespaces": {
17+
"openFiles": ["CONTRIBUTING.md"]
18+
},
19+
"vscode": {
20+
"extensions": ["ms-azuretools.vscode-docker", "EditorConfig.EditorConfig", "GitHub.copilot", "dbaeumer.vscode-eslint", "esbenp.prettier-vscode", "ms-vscode.vscode-typescript-next"]
21+
}
22+
},
23+
"remoteUser": "node"
24+
}

.editorconfig

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
end_of_line = lf
6+
indent_style = space
7+
indent_size = 2
8+
insert_final_newline = true
9+
trim_trailing_whitespace = true

.gitattributes

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Ensure consistent line endings across all platforms
2+
* text=auto eol=lf
3+
4+
# Explicitly set line endings for specific file types
5+
*.ts text eol=lf
6+
*.js text eol=lf
7+
*.json text eol=lf
8+
*.md text eol=lf
9+
*.yml text eol=lf
10+
*.yaml text eol=lf
11+
*.mjs text eol=lf
12+
*.cjs text eol=lf
13+
14+
# Binary files should be left untouched
15+
*.png binary
16+
*.jpg binary
17+
*.jpeg binary
18+
*.gif binary
19+
*.ico binary
20+
*.svg binary

.github/CODEOWNERS

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Define code owners for the codeowners file
2+
.github/CODEOWNERS @microsoft/azure-devops-mcp-maintainers
3+
4+
# Define maintainers as code owners for the entire repository
5+
* @microsoft/azure-devops-mcp-maintainers
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Temporary administrator access request
2+
description: Request for temporary repository administrator access to this repository, a.k.a Just-in-Time (JIT) access.
3+
title: "JIT Request"
4+
labels: ["jit"]
5+
assignees:
6+
- gimsvc_microsoft
7+
-
8+
body:
9+
- type: markdown
10+
attributes:
11+
value: |
12+
:closed_lock_with_key: Permanent repository administrator access is not allowed as per Microsoft security policy. You can use this form to request for temporary administrator access to this repository.
13+
- type: textarea
14+
id: justification
15+
attributes:
16+
label: Justification
17+
description: Describe the actions that you will perform with your temporary administrator access.
18+
placeholder: I need to create secrets.
19+
validations:
20+
required: true
21+
- type: dropdown
22+
id: duration
23+
attributes:
24+
label: Duration (hours)
25+
description: How long do you need access for? The duration you select is in hours.
26+
options:
27+
- 1
28+
- 2

.github/ISSUE_TEMPLATE/NewTool.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
name: Add new tool(s)
3+
about: Use this template to leverage AI to add the tools you want
4+
labels: enhancement, feature-request
5+
---
6+
7+
## Replace the content with your actual issue making sure to keep similar style so that GitHub Copilot can generate this change for you!
8+
9+
# Summary
10+
11+
Implement two new tools that integrate with Azure DevOps APIs to enable search capabilities.
12+
13+
# Tools
14+
15+
Develop the following tools with full parameter support, including optional ones:
16+
17+
## `search_wiki`: Search Azure DevOps Wikis for relevant content.
18+
19+
Endpoint: POST https://almsearch.dev.azure.com/{organization}/{project}/_apis/search/wikisearchresults?api-version=7.2-preview.1
20+
21+
## `search_code`: Search Azure DevOps Repos for relevant code results.
22+
23+
Endpoint: POST https://almsearch.dev.azure.com/{organization}/{project}/_apis/search/codesearchresults?api-version=7.2-preview.1
24+
25+
# Rules
26+
27+
1. Adhere strictly to existing project standards and coding conventions.
28+
2. Ensure each tool exposes all API parameters (required and optional).
29+
3. Use the official [Azure DevOps Node API](https://github.com/microsoft/azure-devops-node-api) to interact with the APIs.
30+
31+
# Special treat
32+
33+
If you follow the rules, you'll get candy!

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
_Replace_ by description of the work done
2+
3+
## GitHub issue number
4+
5+
## **Associated Risks**
6+
7+
_Replace_ by possible risks this pull request can bring you might have thought of
8+
9+
## **PR Checklist**
10+
11+
- [ ] **I have read the [contribution guidelines](https://github.com/microsoft/azure-devops-mcp/blob/main/CONTRIBUTING.md)**
12+
- [ ] **I have read the [code of conduct guidelines](https://github.com/microsoft/azure-devops-mcp/blob/main/CODE_OF_CONDUCT.md)**
13+
- [ ] Title of the pull request is clear and informative.
14+
- [ ] 👌 Code hygiene
15+
- [ ] 🔭 Telemetry added, updated, or N/A
16+
- [ ] 📄 Documentation added, updated, or N/A
17+
- [ ] 🛡️ Automated tests added, or N/A
18+
19+
## 🧪 **How did you test it?**
20+
21+
_Replace_ with use cases tested and models used

.github/acl/access.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Documentation for ACL policy: https://aka.ms/gim/docs/policy/acl
2+
3+
name: Access control list
4+
description: List of teams and their permission levels
5+
resource: repository
6+
where:
7+
configuration:
8+
manageAccess:
9+
- member: Novaes
10+
role: Maintain
11+
- member: danhellem
12+
role: Maintain
13+
- member: aaudzei
14+
role: Maintain
15+
- member: kboom
16+
role: Maintain
17+
- member: skmanoj
18+
role: Write
19+
- member: KathanS
20+
role: Write
21+
- member: vinayakmsft
22+
role: Write
23+
- member: nikolapeja6
24+
role: Write
25+
- member: egor-bryzgalov
26+
role: Write
27+
- member: polatengin
28+
role: Write
29+
- member: mkonjikovac
30+
role: Write

.github/copilot-instructions.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Context
2+
3+
Act like an intelligent coding assistant, who helps test and author tools, prompts and resources for the Azure DevOps MCP server. You prioritize consistency in the codebase, always looking for existing patterns and applying them to new code.
4+
5+
If the user clearly intends to use a tool, do it.
6+
If the user wants to author a new one, help them.
7+
8+
## Using MCP tools
9+
10+
If the user intent relates to Azure DevOps, make sure to prioritize Azure DevOps MCP server tools.
11+
12+
## Adding new tools
13+
14+
When adding new tool, always prioritize using an Azure DevOps Typescript client that corresponds the the given Azure DevOps API.
15+
Only if the client or client method is not available, interact with the API directly.
16+
The tools are located in the `src/tools.ts` file.
17+
18+
## Adding new prompts
19+
20+
Ensure the instructions for the language model are clear and concise so that the language model can follow them reliably.
21+
The prompts are located in the `src/prompts.ts` file.

0 commit comments

Comments
 (0)