Conversation
The plugin is the Agent Toolkit for AWS, so name the card after it rather than AWS Core. Credentials come from the standard AWS chain, and the toolkit selects profiles via AWS_MCP_PROXY_PROFILES, so replace the AWS_PROFILE entry and let both env values default to empty when the user has saved nothing. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Live-tested the config against the proxy. AWS_MCP_PROXY_PROFILES takes a space-separated list and enables per-call switching via the aws_profile tool parameter, and determine_aws_region() reads the profile's region first and only falls back to AWS_REGION when the profile sets none, so AWS_REGION does not override a profile region. Say both accurately. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Devin/aws agent toolkit rename
Users who have no shared config, SSO session or instance role had no way
to give the toolkit credentials through the plugin. Declare the three
standard env vars so keys can be supplied directly, in the ${NAME:-}
form: botocore gates the env provider on a truthy access key, so an
empty value falls through to the normal chain, while an unsubstituted
bare ${NAME} literal would count as a real key and shadow credentials
that were otherwise working.
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
The fork merged the rename with a merge commit while upstream squash-merged the same content, so the two histories carried identical changes under different shas and collided on the toolkit manifest. Resolved in favour of this branch, whose manifest is a superset: same description plus the access-key clause, and the env block with the three credential vars. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
morgante
approved these changes
Sep 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow-up to #22. Declares the three standard AWS credential env vars on the
aws-agent-toolkitserver so a user with no shared config, SSO session or instance role can supply keys through the plugin:AWS_MCP_PROXY_PROFILESandAWS_REGIONare unchanged, and the description now explains that keys must be set as a pair and that they take precedence over any profile.Why the
${NAME:-}form matters hereAll three use the empty-default form rather than a bare
${NAME}. This is not cosmetic. botocore'sEnvProvidergates on a truthy access key, not a valid one:So an empty value falls through to the rest of the chain, but an unsubstituted literal
${AWS_ACCESS_KEY_ID}would be treated as a real access key. I tested that case against the live endpoint: the tool call fails withfailed due to expired or invalid AWS credentialsand does not fall back to the shared-config credentials that were working a moment earlier. The empty-default form removes that exposure entirely.Test evidence
Carried over from the testing done on #22, against the real
https://aws-mcp.us-east-1.api.aws/mcpendpoint (initialize+tools/callrunningsts:GetCallerIdentity):aws loginsessioninvalid AWS credentialsmessage, confirming the env provider is consumed and takes precedence over the profile${AWS_ACCESS_KEY_ID}literalOne sharp edge worth knowing, also measured: setting
AWS_ACCESS_KEY_IDwithoutAWS_SECRET_ACCESS_KEYdoes not fall through and does not report a credential error — the proxy comes up with no tools and reportsUnknown tool: 'aws___run_script'. That is upstream behaviour inmcp-proxy-for-aws, not something this manifest can guard, which is why the description tells users to set the two together.Not exercised, since the test machine has no such credentials: SSO, EC2/ECS instance roles, web identity, process credentials. They ride the same
boto3.Session()as the tested sources.Test plan
python3 scripts/validate.py→ok: 171 entries (170 authored, 1 upstream)python3 scripts/validate.py --fetch→ all pinned upstream shas resolve${<OWN_KEY>}placeholder matching its own env key; no credential values checked inGenerated with Devin
Devin Review