Skip to content

Commit 7f90445

Browse files
Merge branch 'main' into fix-connectivity-panic
2 parents c93ba2d + 4f064a3 commit 7f90445

File tree

170 files changed

+15655
-7193
lines changed

Some content is hidden

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

170 files changed

+15655
-7193
lines changed

.github/pull_request_template.md

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,44 @@
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+
## Lint & tests
37+
<!-- Check what you ran. If not run, explain briefly. -->
38+
- [ ] Linted locally with `./script/lint`
39+
- [ ] Tested locally with `./script/test`
40+
41+
## Docs
42+
43+
- [ ] Not needed
44+
- [ ] Updated (README / docs / examples)

.github/workflows/code-scanning.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ jobs:
4646
queries: "" # Default query suite
4747
packs: github/ccr-${{ matrix.language }}-queries
4848
config: |
49+
paths-ignore:
50+
- third-party
51+
- third-party-licenses.*.md
4952
default-setup:
5053
org:
5154
model-packs: [ ${{ github.event.inputs.code_scanning_codeql_packs }} ]

.github/workflows/conformance.yml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
name: Conformance Test
2+
3+
on:
4+
pull_request:
5+
6+
permissions:
7+
contents: read
8+
9+
jobs:
10+
conformance:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- name: Check out code
15+
uses: actions/checkout@v6
16+
with:
17+
# Fetch full history to access merge-base
18+
fetch-depth: 0
19+
20+
- name: Set up Go
21+
uses: actions/setup-go@v6
22+
with:
23+
go-version-file: "go.mod"
24+
25+
- name: Download dependencies
26+
run: go mod download
27+
28+
- name: Run conformance test
29+
id: conformance
30+
run: |
31+
# Run conformance test, capture stdout for summary
32+
script/conformance-test > conformance-summary.txt 2>&1 || true
33+
34+
# Output the summary
35+
cat conformance-summary.txt
36+
37+
# Check result
38+
if grep -q "RESULT: ALL TESTS PASSED" conformance-summary.txt; then
39+
echo "status=passed" >> $GITHUB_OUTPUT
40+
else
41+
echo "status=differences" >> $GITHUB_OUTPUT
42+
fi
43+
44+
- name: Generate Job Summary
45+
run: |
46+
# Add the full markdown report to the job summary
47+
echo "# MCP Server Conformance Report" >> $GITHUB_STEP_SUMMARY
48+
echo "" >> $GITHUB_STEP_SUMMARY
49+
echo "Comparing PR branch against merge-base with \`origin/main\`" >> $GITHUB_STEP_SUMMARY
50+
echo "" >> $GITHUB_STEP_SUMMARY
51+
52+
# Extract and append the report content (skip the header since we added our own)
53+
tail -n +5 conformance-report/CONFORMANCE_REPORT.md >> $GITHUB_STEP_SUMMARY
54+
55+
echo "" >> $GITHUB_STEP_SUMMARY
56+
echo "---" >> $GITHUB_STEP_SUMMARY
57+
echo "" >> $GITHUB_STEP_SUMMARY
58+
59+
# Add interpretation note
60+
if [ "${{ steps.conformance.outputs.status }}" = "passed" ]; then
61+
echo "✅ **All conformance tests passed** - No behavioral differences detected." >> $GITHUB_STEP_SUMMARY
62+
else
63+
echo "⚠️ **Differences detected** - Review the diffs above to ensure changes are intentional." >> $GITHUB_STEP_SUMMARY
64+
echo "" >> $GITHUB_STEP_SUMMARY
65+
echo "Common expected differences:" >> $GITHUB_STEP_SUMMARY
66+
echo "- New tools/toolsets added" >> $GITHUB_STEP_SUMMARY
67+
echo "- Tool descriptions updated" >> $GITHUB_STEP_SUMMARY
68+
echo "- Capability changes (intentional improvements)" >> $GITHUB_STEP_SUMMARY
69+
fi

.github/workflows/docker-publish.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ jobs:
5454
# multi-platform images and export cache
5555
# https://github.com/docker/setup-buildx-action
5656
- name: Set up Docker Buildx
57-
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
57+
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
5858

5959
# Login against a Docker registry except on PR
6060
# https://github.com/docker/login-action
@@ -87,7 +87,7 @@ 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') }}
Lines changed: 95 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,22 @@
1-
# Create a github action that runs the license check script and fails if it exits with a non-zero status
1+
# Automatically fix license files on PRs that need updates
2+
# Tries to auto-commit the fix, or comments with instructions if push fails
23

34
name: License Check
4-
on: [push, pull_request]
5+
on:
6+
pull_request:
7+
branches:
8+
- main # Only run when PR targets main
9+
paths:
10+
- "**.go"
11+
- go.mod
12+
- go.sum
13+
- ".github/licenses.tmpl"
14+
- "script/licenses*"
15+
- "third-party-licenses.*.md"
16+
- "third-party/**"
517
permissions:
6-
contents: read
18+
contents: write
19+
pull-requests: write
720

821
jobs:
922
license-check:
@@ -12,10 +25,87 @@ jobs:
1225
steps:
1326
- name: Check out code
1427
uses: actions/checkout@v6
28+
with:
29+
ref: ${{ github.head_ref }}
1530

1631
- name: Set up Go
1732
uses: actions/setup-go@v6
1833
with:
1934
go-version-file: "go.mod"
20-
- name: check licenses
21-
run: ./script/licenses-check
35+
36+
# actions/setup-go does not setup the installed toolchain to be preferred over the system install,
37+
# which causes go-licenses to raise "Package ... does not have module info" errors.
38+
# For more information, https://github.com/google/go-licenses/issues/244#issuecomment-1885098633
39+
- name: Regenerate licenses
40+
env:
41+
CI: "true"
42+
run: |
43+
export GOROOT=$(go env GOROOT)
44+
export PATH=${GOROOT}/bin:$PATH
45+
./script/licenses
46+
47+
- name: Check for changes
48+
id: changes
49+
continue-on-error: true
50+
run: script/licenses-check
51+
52+
- name: Commit and push fixes
53+
if: steps.changes.outcome == 'failure'
54+
continue-on-error: true
55+
id: push
56+
run: |
57+
git config user.name "github-actions[bot]"
58+
git config user.email "github-actions[bot]@users.noreply.github.com"
59+
git add third-party-licenses.*.md third-party/
60+
git commit -m "chore: regenerate license files
61+
62+
Auto-generated by license-check workflow"
63+
git push
64+
65+
- name: Check if already commented
66+
if: steps.changes.outcome == 'failure' && steps.push.outcome == 'failure'
67+
id: check_comment
68+
uses: actions/github-script@v7
69+
with:
70+
script: |
71+
const { data: comments } = await github.rest.issues.listComments({
72+
owner: context.repo.owner,
73+
repo: context.repo.repo,
74+
issue_number: context.issue.number
75+
});
76+
77+
const alreadyCommented = comments.some(comment =>
78+
comment.user.login === 'github-actions[bot]' &&
79+
comment.body.includes('## ⚠️ License files need updating')
80+
);
81+
82+
core.setOutput('already_commented', alreadyCommented ? 'true' : 'false');
83+
84+
- name: Comment with instructions if cannot push
85+
if: steps.changes.outcome == 'failure' && steps.push.outcome == 'failure' && steps.check_comment.outputs.already_commented == 'false'
86+
uses: actions/github-script@v7
87+
with:
88+
script: |
89+
await github.rest.issues.createComment({
90+
owner: context.repo.owner,
91+
repo: context.repo.repo,
92+
issue_number: context.issue.number,
93+
body: `## ⚠️ License files need updating
94+
95+
The license files are out of date. I tried to fix them automatically but don't have permission to push to this branch.
96+
97+
**Please run:**
98+
\`\`\`bash
99+
script/licenses
100+
git add third-party-licenses.*.md third-party/
101+
git commit -m "chore: regenerate license files"
102+
git push
103+
\`\`\`
104+
105+
Alternatively, enable "Allow edits by maintainers" in the PR settings so I can fix it automatically.`
106+
});
107+
108+
- name: Fail check if changes needed
109+
if: steps.changes.outcome == 'failure'
110+
run: exit 1
111+

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,5 @@ bin/
1919
# binary
2020
github-mcp-server
2121

22-
.history
22+
.history
23+
conformance-report/

CONTRIBUTING.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ These are one time installations required to be able to test your changes locall
3939
- Run linter: `script/lint`
4040
- Update snapshots and run tests: `UPDATE_TOOLSNAPS=true go test ./...`
4141
- Update readme documentation: `script/generate-docs`
42+
- If renaming a tool, add a deprecation alias (see [Tool Renaming Guide](docs/tool-renaming.md))
43+
- For toolset and icon configuration, see [Toolsets and Icons Guide](docs/toolsets-and-icons.md)
4244
6. Push to your fork and [submit a pull request][pr] targeting the `main` branch
4345
7. Pat yourself on the back and wait for your pull request to be reviewed and merged.
4446

0 commit comments

Comments
 (0)