Skip to content

Commit 8c68eb5

Browse files
Merge branch 'main' into main
2 parents 451e884 + 1da41fa commit 8c68eb5

File tree

381 files changed

+43732
-18763
lines changed

Some content is hidden

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

381 files changed

+43732
-18763
lines changed

.github/prompts/bug-report-review.prompt.yml

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,38 @@ messages:
55
66
Your job is to analyze bug reports and assess their completeness.
77
8+
**CRITICAL: Detect unfilled templates**
9+
- Flag issues containing unmodified template text like "A clear and concise description of what the bug is"
10+
- Flag placeholder values like "Type this '...'" or "View the output '....'" that haven't been replaced
11+
- Flag generic/meaningless titles (e.g., random words, test content)
12+
- These are ALWAYS "Missing Details" even if the template structure is present
13+
814
Analyze the issue for these key elements:
9-
1. Clear description of the problem
15+
1. Clear description of the problem (not template text)
1016
2. Affected version (from running `docker run -i --rm ghcr.io/github/github-mcp-server ./github-mcp-server --version`)
11-
3. Steps to reproduce the behavior
12-
4. Expected vs actual behavior
17+
3. Steps to reproduce the behavior (actual steps, not placeholders)
18+
4. Expected vs actual behavior (real descriptions, not template text)
1319
5. Relevant logs (if applicable)
1420
1521
Provide ONE of these assessments:
1622
1723
### AI Assessment: Ready for Review
18-
Use when the bug report has most required information and can be triaged by a maintainer.
24+
Use when the bug report has actual information in required fields and can be triaged by a maintainer.
1925
2026
### AI Assessment: Missing Details
21-
Use when critical information is missing (no reproduction steps, no version info, unclear problem description).
27+
Use when:
28+
- Template text has not been replaced with actual content
29+
- Critical information is missing (no reproduction steps, no version info, unclear problem description)
30+
- The title is meaningless or spam-like
31+
- Placeholder text remains in any section
32+
33+
When marking as Missing Details, recommend adding the "waiting-for-reply" label.
2234
2335
### AI Assessment: Unsure
2436
Use when you cannot determine the completeness of the report.
2537
2638
After your assessment header, provide a brief explanation of your rating.
27-
If details are missing, note which specific sections need more information.
39+
If details are missing, be specific about which sections contain template text or need actual information.
2840
- role: user
2941
content: "{{input}}"
3042
model: openai/gpt-4o-mini

.github/prompts/default-issue-review.prompt.yml

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,47 @@ messages:
55
66
Your job is to analyze new issues and help categorize them.
77
8+
**CRITICAL: Detect invalid or incomplete submissions**
9+
- Flag issues with unmodified template text (e.g., "A clear and concise description...")
10+
- Flag placeholder values that haven't been replaced (e.g., "Type this '...'", "....", "XXX")
11+
- Flag meaningless, spam-like, or test titles (e.g., random words, nonsensical content)
12+
- Flag empty or nearly empty issues
13+
- These are ALWAYS "Missing Details" or "Invalid" depending on severity
14+
815
Analyze the issue to determine:
9-
1. Is this a bug report, feature request, question, or something else?
10-
2. Is the issue clear and well-described?
16+
1. Is this a bug report, feature request, question, documentation issue, or something else?
17+
2. Is the issue clear and well-described with actual content (not template text)?
1118
3. Does it contain enough information for maintainers to act on?
19+
4. Is this potentially spam, a test issue, or completely invalid?
1220
1321
Provide ONE of these assessments:
1422
1523
### AI Assessment: Ready for Review
16-
Use when the issue is clear, well-described, and contains enough context for maintainers to understand and act on it.
24+
Use when the issue is clear, well-described with actual content, and contains enough context for maintainers to understand and act on it.
1725
1826
### AI Assessment: Missing Details
19-
Use when the issue is unclear, lacks context, or needs more information to be actionable.
27+
Use when:
28+
- Template text has not been replaced with actual content
29+
- The issue is unclear or lacks context
30+
- Critical information is missing to make it actionable
31+
- The title is vague but the issue seems legitimate
32+
33+
When marking as Missing Details, recommend adding the "waiting-for-reply" label.
34+
35+
### AI Assessment: Invalid
36+
Use when:
37+
- The issue appears to be spam or test content
38+
- The title is completely meaningless and body has no useful information
39+
- This doesn't relate to the GitHub MCP Server project at all
40+
41+
When marking as Invalid, recommend adding the "invalid" label and consider closing.
2042
2143
### AI Assessment: Unsure
2244
Use when you cannot determine the nature or completeness of the issue.
2345
2446
After your assessment header, provide a brief explanation including:
25-
- What type of issue this appears to be (bug, feature request, question, etc.)
47+
- What type of issue this appears to be (bug, feature request, question, invalid, etc.)
48+
- Which specific sections contain template text or need actual information
2649
- What additional information might be helpful if any
2750
- role: user
2851
content: "{{input}}"

.github/pull_request_template.md

Lines changed: 48 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,51 @@
11
<!--
2-
Thank you for contributing to GitHub MCP Server!
3-
Please reference an existing issue: `Closes #NUMBER`
4-
5-
Screenshots or videos of changed behavior is incredibly helpful and always appreciated.
6-
Consider addressing the following:
7-
- Tradeoffs: List tradeoffs you made to take on or pay down tech debt.
8-
- Alternatives: Describe alternative approaches you considered and why you discarded them.
2+
Copilot: Fill all sections. Prefer short, concrete answers.
3+
If a checkbox is selected, add a brief explanation.
94
-->
105

11-
Closes:
6+
## Summary
7+
<!-- In 1–2 sentences: what does this PR do? -->
8+
9+
## Why
10+
<!-- Why is this change needed? Link issues or discussions. -->
11+
Fixes #
12+
13+
## What changed
14+
<!-- Bullet list of concrete changes. -->
15+
-
16+
-
17+
18+
## MCP impact
19+
<!-- Select one or more. If selected, add 1–2 sentences. -->
20+
- [ ] No tool or API changes
21+
- [ ] Tool schema or behavior changed
22+
- [ ] New tool added
23+
24+
## Prompts tested (tool changes only)
25+
<!-- If you changed or added tools, list example prompts you tested. -->
26+
<!-- Include prompts that trigger the tool and describe the use case. -->
27+
<!-- Example: "List all open issues in the repo assigned to me" -->
28+
-
29+
30+
## Security / limits
31+
<!-- Select if relevant. Add a short note if checked. -->
32+
- [ ] No security or limits impact
33+
- [ ] Auth / permissions considered
34+
- [ ] Data exposure, filtering, or token/size limits considered
35+
36+
## Tool renaming
37+
- [ ] I am renaming tools as part of this PR (e.g. a part of a consolidation effort)
38+
- [ ] I have added the new tool aliases in `deprecated_tool_aliases.go`
39+
- [ ] I am not renaming tools as part of this PR
40+
41+
Note: if you're renaming tools, you *must* add the tool aliases. For more information on how to do so, please refer to the [official docs](https://github.com/github/github-mcp-server/blob/main/docs/tool-renaming.md).
42+
43+
## Lint & tests
44+
<!-- Check what you ran. If not run, explain briefly. -->
45+
- [ ] Linted locally with `./script/lint`
46+
- [ ] Tested locally with `./script/test`
47+
48+
## Docs
49+
50+
- [ ] Not needed
51+
- [ ] Updated (README / docs / examples)

.github/workflows/ai-issue-assessment.yml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@ on:
66

77
jobs:
88
ai-issue-assessment:
9-
if: >
10-
(github.event.action == 'opened' && github.event.issue.labels[0] == null) ||
11-
(github.event.action == 'labeled' && github.event.label.name == 'bug')
129
runs-on: ubuntu-latest
1310
permissions:
1411
issues: write
@@ -23,8 +20,8 @@ jobs:
2320
uses: github/ai-assessment-comment-labeler@e3bedc38cfffa9179fe4cee8f7ecc93bffb3fee7 # v1.0.1
2421
with:
2522
token: ${{ secrets.GITHUB_TOKEN }}
26-
ai_review_label: 'bug, enhancement'
23+
ai_review_label: "request ai review"
2724
issue_number: ${{ github.event.issue.number }}
2825
issue_body: ${{ github.event.issue.body }}
29-
prompts_directory: '.github/prompts'
30-
labels_to_prompts_mapping: 'bug,bug-report-review.prompt.yml|default,default-issue-review.prompt.yml'
26+
prompts_directory: ".github/prompts"
27+
labels_to_prompts_mapping: "bug,bug-report-review.prompt.yml|default,default-issue-review.prompt.yml"

.github/workflows/code-scanning.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ env:
1414
jobs:
1515
analyze:
1616
name: Analyze (${{ matrix.language }})
17+
# Only run on the main repository, not on forks
18+
if: github.repository == 'github/github-mcp-server'
1719
runs-on: ${{ fromJSON(matrix.runner) }}
1820
permissions:
1921
actions: read
@@ -33,6 +35,10 @@ jobs:
3335
category: /language:go
3436
build-mode: autobuild
3537
runner: '["ubuntu-22.04"]'
38+
- language: javascript
39+
category: /language:javascript
40+
build-mode: none
41+
runner: '["ubuntu-22.04"]'
3642
steps:
3743
- name: Checkout repository
3844
uses: actions/checkout@v6
@@ -46,6 +52,9 @@ jobs:
4652
queries: "" # Default query suite
4753
packs: github/ccr-${{ matrix.language }}-queries
4854
config: |
55+
paths-ignore:
56+
- third-party
57+
- third-party-licenses.*.md
4958
default-setup:
5059
org:
5160
model-packs: [ ${{ github.event.inputs.code_scanning_codeql_packs }} ]
@@ -69,6 +78,18 @@ jobs:
6978
go-version: ${{ fromJSON(steps.resolve-environment.outputs.environment).configuration.go.version }}
7079
cache: false
7180

81+
- name: Set up Node.js
82+
if: matrix.language == 'go' || matrix.language == 'javascript'
83+
uses: actions/setup-node@v4
84+
with:
85+
node-version: "20"
86+
cache: "npm"
87+
cache-dependency-path: ui/package-lock.json
88+
89+
- name: Build UI
90+
if: matrix.language == 'go'
91+
run: script/build-ui
92+
7293
- name: Autobuild
7394
uses: github/codeql-action/autobuild@v4
7495

.github/workflows/docker-publish.yml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ jobs:
4646
# https://github.com/sigstore/cosign-installer
4747
- name: Install cosign
4848
if: github.event_name != 'pull_request'
49-
uses: sigstore/cosign-installer@faadad0cce49287aee09b3a48701e75088a2c6ad #v4.0.0
49+
uses: sigstore/cosign-installer@ba7bc0a3fef59531c69a25acd34668d6d3fe6f22 #v4.1.0
5050
with:
5151
cosign-release: "v2.2.4"
5252

@@ -87,21 +87,26 @@ jobs:
8787
type=raw,value=latest,enable=${{ github.ref_type == 'tag' && startsWith(github.ref, 'refs/tags/v') && !contains(github.ref, '-') }}
8888
8989
- name: Go Build Cache for Docker
90-
uses: actions/cache@v4
90+
uses: actions/cache@v5
9191
with:
9292
path: go-build-cache
9393
key: ${{ runner.os }}-go-build-cache-${{ hashFiles('**/go.sum') }}
9494

9595
- name: Inject go-build-cache
9696
uses: reproducible-containers/buildkit-cache-dance@1b8ab18fbda5ad3646e3fcc9ed9dd41ce2f297b4 # v3.3.2
9797
with:
98-
cache-source: go-build-cache
98+
cache-map: |
99+
{
100+
"go-build-cache/apk": "/var/cache/apk",
101+
"go-build-cache/pkg": "/go/pkg/mod",
102+
"go-build-cache/build": "/root/.cache/go-build"
103+
}
99104
100105
# Build and push Docker image with Buildx (don't push on PR)
101106
# https://github.com/docker/build-push-action
102107
- name: Build and push Docker image
103108
id: build-and-push
104-
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
109+
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
105110
with:
106111
context: .
107112
push: ${{ github.event_name != 'pull_request' }}

.github/workflows/docs-check.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,16 @@ jobs:
1616
- name: Checkout code
1717
uses: actions/checkout@v6
1818

19+
- name: Set up Node.js
20+
uses: actions/setup-node@v4
21+
with:
22+
node-version: "20"
23+
cache: "npm"
24+
cache-dependency-path: ui/package-lock.json
25+
26+
- name: Build UI
27+
run: script/build-ui
28+
1929
- name: Set up Go
2030
uses: actions/setup-go@v6
2131
with:

.github/workflows/go.yml

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,38 @@ jobs:
1414
runs-on: ${{ matrix.os }}
1515

1616
steps:
17+
- name: Force git to use LF
18+
# This step is required on Windows to work around go mod tidy -diff issues caused by CRLF line endings.
19+
# TODO: replace with a checkout option when https://github.com/actions/checkout/issues/226 is implemented
20+
if: runner.os == 'Windows'
21+
run: |
22+
git config --global core.autocrlf false
23+
git config --global core.eol lf
24+
1725
- name: Check out code
1826
uses: actions/checkout@v6
1927

28+
- name: Set up Node.js
29+
uses: actions/setup-node@v4
30+
with:
31+
node-version: "20"
32+
cache: "npm"
33+
cache-dependency-path: ui/package-lock.json
34+
35+
- name: Build UI
36+
shell: bash
37+
run: script/build-ui
38+
2039
- name: Set up Go
2140
uses: actions/setup-go@v6
2241
with:
2342
go-version-file: "go.mod"
2443

25-
- name: Download dependencies
26-
run: go mod download
44+
- name: Tidy dependencies
45+
run: go mod tidy -diff
2746

2847
- name: Run unit tests
48+
shell: bash
2949
run: script/test
3050

3151
- name: Build

.github/workflows/goreleaser.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,16 @@ jobs:
1616
- name: Check out code
1717
uses: actions/checkout@v6
1818

19+
- name: Set up Node.js
20+
uses: actions/setup-node@v4
21+
with:
22+
node-version: "20"
23+
cache: "npm"
24+
cache-dependency-path: ui/package-lock.json
25+
26+
- name: Build UI
27+
run: script/build-ui
28+
1929
- name: Set up Go
2030
uses: actions/setup-go@v6
2131
with:
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
name: Label issues for AI review
2+
on:
3+
issues:
4+
types:
5+
- reopened
6+
- opened
7+
jobs:
8+
label_issues:
9+
runs-on: ubuntu-latest
10+
permissions:
11+
issues: write
12+
steps:
13+
- name: Add AI review label to issue
14+
run: gh issue edit "$NUMBER" --add-label "$LABELS"
15+
env:
16+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
17+
GH_REPO: ${{ github.repository }}
18+
NUMBER: ${{ github.event.issue.number }}
19+
LABELS: "request ai review"

0 commit comments

Comments
 (0)