Skip to content

Commit ebd02bc

Browse files
Merge remote-tracking branch 'upstream/main' into feature/genomics-file-search
2 parents 1a78421 + 1512d91 commit ebd02bc

File tree

226 files changed

+20052
-20283
lines changed

Some content is hidden

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

226 files changed

+20052
-20283
lines changed

.github/CODEOWNERS

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ NOTICE @awslabs/mcp-admins
2525
/src/amazon-neptune-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @bechbd @cornerwings @krlawrence
2626
/src/amazon-qbusiness-anonymous-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @abhjaw
2727
/src/amazon-qindex-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @tkoba-aws @akhileshamara
28-
/src/amazon-rekognition-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @ayush987goyal
2928
/src/amazon-sns-sqs-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @kenliao94 @hashimsharkh
3029
/src/aurora-dsql-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @krokoko # @silver83 @marcbowes @kennthhz
3130
/src/aws-api-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @awslabs/aws-api-mcp @rshevchuk-git @PCManticore @iddv @arnewouters @bidesh
@@ -47,10 +46,9 @@ NOTICE @awslabs/mcp-admins
4746
/src/billing-cost-management-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @chittev @Rahul-1404
4847
/src/ccapi-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @novekm
4948
/src/cdk-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @jimini55
50-
/src/cfn-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @karamvsingh
49+
/src/cfn-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @scottschreckengaust @krokoko @alexa-perlov # @karamvsingh
5150
/src/cloudtrail-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @rokafella
5251
/src/cloudwatch-appsignals-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @yiyuan-he @mxiamxia @iismd17 @syed-ahsan-ishtiaque
53-
/src/cloudwatch-logs-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @lemmoi @shri-tambe
5452
/src/cloudwatch-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @gcacace @shri-tambe @agiuliano @goranmod
5553
/src/code-doc-gen-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @jimini55
5654
/src/core-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @PaulVincent707
@@ -62,7 +60,7 @@ NOTICE @awslabs/mcp-admins
6260
/src/elasticache-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @seaofawareness
6361
/src/finch-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @Shubhranshu153 @pendo324
6462
/src/frontend-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @jimini55
65-
/src/git-repo-research-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @jonslo
63+
/src/git-repo-research-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @krokoko @theagenticguy
6664
/src/healthlake-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @aws-steve @awsri
6765
/src/iam-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @oshardik
6866
/src/lambda-tool-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @danilop @jsamuel1
@@ -74,7 +72,7 @@ NOTICE @awslabs/mcp-admins
7472
/src/postgres-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @kennthhz
7573
/src/prometheus-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @MohamedSherifAbdelsamiea
7674
/src/redshift-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @grayhemp
77-
/src/s3-tables-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @gsoundar @gregorywright @Kurtiscwright @hsingh574 @ananthaksr
75+
/src/s3-tables-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @gsoundar @gregorywright @Kurtiscwright @hsingh574 @ananthaksr @okhomin
7876
/src/stepfunctions-tool-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @mmouniro
7977
/src/syntheticdata-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @pranjbh
8078
/src/terraform-mcp-server @awslabs/mcp-admins @awslabs/mcp-maintainers @alexa-perlov
Lines changed: 224 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,224 @@
1+
---
2+
name: AWS API MCP Server - Upgrade AWS CLI Version
3+
description: |
4+
This workflow upgrades the AWS CLI version in src/aws-api-mcp-server using uv upgrade
5+
and creates a pull request with the changes.
6+
on:
7+
workflow_dispatch:
8+
schedule:
9+
- cron: '0 5 * * *' # Daily at 6 AM Amsterdam time (UTC+1)
10+
env:
11+
BOT_USER_EMAIL: ${{ vars.BOT_USER_EMAIL || '[email protected]' }}
12+
BOT_USER_NAME: ${{ vars.BOT_USER_NAME || 'awslabs-mcp' }}
13+
permissions:
14+
actions: none
15+
attestations: none
16+
checks: none
17+
contents: none
18+
deployments: none
19+
discussions: none
20+
id-token: none
21+
issues: none
22+
models: none
23+
packages: none
24+
pages: none
25+
pull-requests: none
26+
repository-projects: none
27+
security-events: none
28+
statuses: none
29+
jobs:
30+
upgrade-awscli:
31+
name: Upgrade AWS CLI Version
32+
runs-on: ubuntu-latest
33+
timeout-minutes: 10
34+
permissions:
35+
contents: write
36+
pull-requests: write
37+
steps:
38+
- name: Checkout repository
39+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
40+
with:
41+
token: ${{ secrets.BOT_GITHUB_TOKEN }}
42+
- name: Install uv
43+
uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0
44+
- name: Check and upgrade AWS CLI version
45+
id: upgrade
46+
working-directory: src/aws-api-mcp-server
47+
run: |
48+
set -euo pipefail
49+
50+
# Get current installed version
51+
CURRENT_VERSION=$(uv run python -c "from importlib.metadata import version; print(version('awscli'))")
52+
echo "::debug::Current AWS CLI version: $CURRENT_VERSION"
53+
54+
# Get latest version from PyPI
55+
LATEST_VERSION=$(uv run --no-project python -c "import urllib.request, json; print(json.loads(urllib.request.urlopen('https://pypi.org/pypi/awscli/json').read())['info']['version'])")
56+
echo "::debug::Latest AWS CLI version from PyPI: $LATEST_VERSION"
57+
58+
# Set version outputs
59+
echo "current-version=$CURRENT_VERSION" >> $GITHUB_OUTPUT
60+
echo "latest-version=$LATEST_VERSION" >> $GITHUB_OUTPUT
61+
62+
# Compare versions
63+
if [[ "$CURRENT_VERSION" == "$LATEST_VERSION" ]]; then
64+
echo "has-changes=false" >> $GITHUB_OUTPUT
65+
echo "::notice::AWS CLI is already up to date (version $CURRENT_VERSION)"
66+
else
67+
echo "has-changes=true" >> $GITHUB_OUTPUT
68+
echo "::notice::Upgrading AWS CLI from $CURRENT_VERSION to $LATEST_VERSION"
69+
70+
# Remove existing awscli dependency
71+
echo "::debug::Removing existing awscli dependency"
72+
uv remove awscli
73+
74+
# Add new version with exact pinning
75+
echo "::debug::Adding awscli==$LATEST_VERSION"
76+
uv add "awscli==$LATEST_VERSION"
77+
78+
# Sync dependencies
79+
echo "::debug::Syncing dependencies"
80+
uv sync
81+
82+
echo "::debug::AWS CLI upgrade completed"
83+
fi
84+
- name: Create upgrade branch
85+
if: steps.upgrade.outputs.has-changes == 'true'
86+
id: create-branch
87+
run: |
88+
set -euo pipefail
89+
90+
LATEST_VERSION="${{ steps.upgrade.outputs.latest-version }}"
91+
UPGRADE_BRANCH="upgrade/aws-api-mcp-awscli-v$LATEST_VERSION"
92+
93+
echo "::debug::Creating upgrade branch: $UPGRADE_BRANCH"
94+
95+
# Configure git user
96+
git config --local user.email "${{ env.BOT_USER_EMAIL }}"
97+
git config --local user.name "${{ env.BOT_USER_NAME }}"
98+
99+
# Create and push branch
100+
git checkout -b "$UPGRADE_BRANCH"
101+
git push --set-upstream origin "$UPGRADE_BRANCH"
102+
103+
# Verify branch was created
104+
if ! git ls-remote --heads origin "$UPGRADE_BRANCH" | grep -q "$UPGRADE_BRANCH"; then
105+
echo "::error::Failed to verify branch creation: $UPGRADE_BRANCH" >&2
106+
exit 1
107+
fi
108+
109+
echo "upgrade-branch=$UPGRADE_BRANCH" >> $GITHUB_OUTPUT
110+
echo "::debug::Successfully created upgrade branch: $UPGRADE_BRANCH"
111+
- name: Configure Git and GPG securely
112+
if: steps.upgrade.outputs.has-changes == 'true'
113+
env:
114+
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
115+
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
116+
GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
117+
run: |
118+
set -euo pipefail # SECURITY: Strict error handling
119+
120+
# Create secure temporary directory for GPG
121+
export GNUPGHOME=$(mktemp -d)
122+
chmod 700 "$GNUPGHOME"
123+
echo "GNUPGHOME=$GNUPGHOME" >> $GITHUB_ENV
124+
125+
echo "::debug::Setting up secure GPG environment"
126+
127+
# Configure git user
128+
git config --local user.email "${{ env.BOT_USER_EMAIL }}"
129+
git config --local user.name "${{ env.BOT_USER_NAME }}"
130+
131+
# Import GPG key without exposing secrets in command line
132+
echo "$GPG_PRIVATE_KEY" | gpg --batch --import --quiet
133+
echo "$GPG_KEY_ID:6:" | gpg --import-ownertrust --quiet
134+
135+
# Configure git GPG settings
136+
git config --global user.signingkey "$GPG_KEY_ID"
137+
git config --global commit.gpgsign true
138+
git config --global tag.gpgsign true
139+
140+
# Test GPG functionality
141+
echo "test" | gpg --batch --yes --passphrase-fd 0 --pinentry-mode loopback \
142+
--sign --armor --local-user "$GPG_KEY_ID" <<< "$GPG_PASSPHRASE" > /dev/null
143+
144+
echo "::debug::GPG configuration completed successfully"
145+
- name: Commit and push changes
146+
if: steps.upgrade.outputs.has-changes == 'true'
147+
env:
148+
GPG_KEY_ID: ${{ secrets.GPG_KEY_ID }}
149+
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
150+
run: |
151+
set -euo pipefail
152+
echo "::debug::Committing changes"
153+
154+
# Add only the source directory
155+
git add src/aws-api-mcp-server/
156+
157+
# Cache GPG signature
158+
echo "commit" | gpg --batch --yes --passphrase-fd 0 --pinentry-mode loopback \
159+
--sign --armor --local-user "$GPG_KEY_ID" <<< "$GPG_PASSPHRASE" > /dev/null
160+
161+
# Create signed commit
162+
git commit -m "chore(aws-api-mcp-server): upgrade AWS CLI to v${{ steps.upgrade.outputs.latest-version }}" --sign
163+
164+
# Pull with rebase to maintain linear history
165+
git pull --rebase origin "${{ steps.create-branch.outputs.upgrade-branch }}"
166+
167+
# Push changes
168+
git push origin "${{ steps.create-branch.outputs.upgrade-branch }}"
169+
170+
echo "::debug::Successfully committed and pushed changes"
171+
- name: Create pull request
172+
if: steps.upgrade.outputs.has-changes == 'true'
173+
env:
174+
GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }}
175+
run: |
176+
set -euo pipefail
177+
178+
UPGRADE_BRANCH="${{ steps.create-branch.outputs.upgrade-branch }}"
179+
BASE_BRANCH="${{ github.ref_name }}"
180+
181+
echo "::debug::Creating PR from $UPGRADE_BRANCH to $BASE_BRANCH"
182+
183+
# Validate branch names
184+
if [[ ! "$UPGRADE_BRANCH" =~ ^upgrade/aws-api-mcp-awscli-v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
185+
echo "::error::Invalid upgrade branch format: $UPGRADE_BRANCH" >&2
186+
exit 1
187+
fi
188+
189+
# Create PR with validated content
190+
PR_URL="$(gh pr create \
191+
--base "$BASE_BRANCH" \
192+
--head "$UPGRADE_BRANCH" \
193+
--title "chore(aws-api-mcp-server): upgrade AWS CLI to v${{ steps.upgrade.outputs.latest-version }}" \
194+
--label "aws-api-mcp" \
195+
--body "# AWS CLI Version Upgrade
196+
197+
This PR upgrades the AWS CLI version in the aws-api-mcp-server package.
198+
199+
## Changes
200+
* Updated AWS CLI from **v${{ steps.upgrade.outputs.current-version }}** to **v${{ steps.upgrade.outputs.latest-version }}**
201+
202+
## Checklist
203+
- [ ] Dependencies have been upgraded
204+
- [ ] Lock file has been updated
205+
- [ ] Tests pass with new versions
206+
207+
## Acknowledgment
208+
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of the [project license](https://github.com/awslabs/mcp/blob/main/LICENSE).")"
209+
210+
echo "::debug::Successfully created pull request $PR_URL"
211+
echo "### :arrow_up: AWS CLI Upgrade Ready" >> $GITHUB_STEP_SUMMARY
212+
echo "Pull request $PR_URL created for [$UPGRADE_BRANCH](https://github.com/${{ github.repository }}/tree/$UPGRADE_BRANCH) branch" >> $GITHUB_STEP_SUMMARY
213+
- name: Secure GPG cleanup
214+
if: always()
215+
run: |
216+
set +e # Don't fail on cleanup errors
217+
echo "::debug::Performing secure cleanup"
218+
if [[ -n "${GNUPGHOME:-}" && -d "$GNUPGHOME" ]]; then
219+
rm -rf "$GNUPGHOME"
220+
echo "::debug::Cleaned up GPG directory"
221+
fi
222+
gpgconf --kill gpg-agent 2>/dev/null || true
223+
unset GPG_PRIVATE_KEY GPG_PASSPHRASE GPG_KEY_ID GNUPGHOME 2>/dev/null || true
224+
echo "::debug::Secure cleanup completed"

.github/workflows/checkov.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 #v5.0.0
2929

3030
- name: Checkov GitHub Action
31-
uses: bridgecrewio/checkov-action@4f9f1bef9f759c19c966f39c0638ea427d776f4d # v12.3060.0
31+
uses: bridgecrewio/checkov-action@cba89e33f08479973cadc681333ffe84f7c8e824 # v12.3064.0
3232
with:
3333
# This will add both a CLI output to the console and create a results.sarif file
3434
output_format: cli,sarif

.github/workflows/dependency-review-action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
- name: 'Checkout Repository'
1313
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 #v5.0.0
1414
- name: 'Dependency Review'
15-
uses: actions/dependency-review-action@56339e523c0409420f6c2c9a2f4292bbb3c07dd3 #v4.8.0
15+
uses: actions/dependency-review-action@40c09b7dc99638e5ddb0bfd91c1673effc064d8a #v4.8.1
1616
with:
1717
# https://github.com/actions/dependency-review-action/issues/944
1818
allow-dependencies-licenses: 'pkg:pypi/[email protected]'

.github/workflows/python.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ jobs:
7878
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
7979

8080
- name: Install uv
81-
uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0
81+
uses: astral-sh/setup-uv@3259c6206f993105e3a61b142c2d97bf4b9ef83d # v7.1.0
8282

8383
- name: Set up Python
8484
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0

.github/workflows/release-initiate-branch.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,14 +178,16 @@ jobs:
178178
token: ${{ secrets.BOT_GITHUB_TOKEN }}
179179
ref: ${{ needs.create-branch.outputs.release-branch }}
180180
- name: Install uv
181-
uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0
181+
uses: astral-sh/setup-uv@3259c6206f993105e3a61b142c2d97bf4b9ef83d # v7.1.0
182182
- name: Bump package version
183183
run: |
184184
set -euo pipefail
185185
echo "${{ toJson(needs.look-for-changes.outputs.changed-directories) }}" | \
186186
jq -r '.[]' | \
187-
xargs -I{} \
188-
bash -c 'uv run --script .github/workflows/release.py bump-package --directory="$SRC_DIRECTORY/{}" && if [ -f "$SRC_DIRECTORY/{}/pyproject.toml" ]; then uv sync --directory="$SRC_DIRECTORY/{}";fi;' bash
187+
xargs -I{} -L 1 -S 1024 \
188+
bash -c '(uv run --script .github/workflows/release.py bump-package --directory="$SRC_DIRECTORY/{}" && if [ -f "$SRC_DIRECTORY/{}/pyproject.toml" ]; then uv sync --directory="$SRC_DIRECTORY/{}";fi;) || echo "
189+
NOTE: skipped $SRC_DIRECTORY/{}; either deleted or not a Python project...
190+
"' bash
189191
echo "::debug::Version bumps completed"
190192
- name: Configure Git and GPG securely
191193
env:

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ jobs:
303303
# Clear up space for specific large projects
304304
- name: Clear Up Space (Aggressively) for Specific Projects
305305
if: contains(fromJson('["core-mcp-server"]'), matrix.changed-directory)
306-
uses: awslabs/mcp/.github/actions/clear-space-ubuntu-latest-agressively@9ac9729e875ab99608ba7c0419f60fdb27c27602
306+
uses: awslabs/mcp/.github/actions/clear-space-ubuntu-latest-agressively@c2d7bf853b8e31f22697101601bd4a0438c09f13
307307
#TODO: remove local action checkout when working...
308308
- name: Checkout repository
309309
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
@@ -350,7 +350,7 @@ jobs:
350350
351351
echo "::debug::Directory validated: $FULL_PATH"
352352
- name: Install uv
353-
uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0
353+
uses: astral-sh/setup-uv@3259c6206f993105e3a61b142c2d97bf4b9ef83d # v7.1.0
354354
- name: Build package
355355
working-directory: ${{ env.SRC_DIRECTORY }}/${{ matrix.changed-directory }}
356356
run: |

.github/workflows/stale.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
issues: write
1313
pull-requests: write
1414
steps:
15-
- uses: actions/stale@3a9db7e6a41a89f618792c92c0e97cc736e1b13f # v10.0.0
15+
- uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 # v10.1.0
1616
with:
1717
days-before-stale: -1
1818
days-before-close: -1

.github/workflows/trivy.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ jobs:
4646
steps:
4747
- name: Clear Up Space (Agressively) for Trivy Scans that Run Out of Space
4848
if: contains(toJson('["src/core-mcp-server"]'), matrix.dockerfile)
49-
uses: awslabs/mcp/.github/actions/clear-space-ubuntu-latest-agressively@9ac9729e875ab99608ba7c0419f60fdb27c27602
49+
uses: awslabs/mcp/.github/actions/clear-space-ubuntu-latest-agressively@c2d7bf853b8e31f22697101601bd4a0438c09f13
5050

5151
- name: Get Checkout Depth
5252
id: checkout-depth

0 commit comments

Comments
 (0)