Fully managed remote service providing access to AWS documentation and over 15,000 AWS APIs
Do not connect
A critical issue was found. Do not connect this server as-is.
Scanned 28 days ago Due for re-check
A server can change after it's graded. Re-run the automated scan to refresh this report.
This grade is deterministic and reproducible: the same server surface always yields the same grade under a given algorithm version. It is a real automated assessment computed by the MCPGrade engine from what the probe actually observed — not a fabricated or opinion score. It is not a manual human pentest, so it can miss context-specific risks.
Every signal below was measured directly by the automated probe. The grade is derived only from evidence like this — nothing is assumed.
The AWSMCP MCP server exposes 9 tools, focused primarily on web capabilities. Its published description reads: "Fully managed remote service providing access to AWS documentation and over 15,000 AWS APIs". It communicates over Streamable HTTP using the 2025-06-18 protocol revision, and does not require authorization to connect. MCPGrade currently rates AWSMCP F — a critical issue was found and the server should not be connected as-is. Its most notable findings include "Data-exfiltration parameters" and "Unguarded destructive tools". This report is a deterministic, reproducible automated assessment: the same observed surface always yields the same grade under a given algorithm version, and it is refreshed as new scans arrive and free to read — but it is not a substitute for a manual human security review. Always re-check AWSMCP's advertised tools, transport security, and authorization posture before connecting an autonomous agent or sharing sensitive context with it.
Add AWSMCP to an MCP client using the endpoint below. Review the grade and findings above before granting an autonomous agent access.
MCP endpoint
https://aws-mcp.us-east-1.api.aws/mcpStreamable HTTP transport. This is the MCP endpoint, not a website — paste it into your MCP client server list rather than a browser.
Captured passively during the read-only scan. Click any value to find servers that match it.
The tools this server advertises via tools/list — names, purposes, and the parameters each accepts, exactly as enumerated read-only.
DEPRECATED: This tool is being deprecated in favor of `run_script`. Use `run_script` instead. Execute AWS CLI commands. PRIMARY tool when you know the exact command needed. - Command MUST start with "
Generate pre-signed S3 URLs for uploading or downloading files. Use BEFORE call_aws when a command requires a local file path. Use for direct S3 uploads/downloads instead of call_aws. Max upload 5 GB;
Poll status of long-running tasks. Use after a tool call returns task_id with status "working". Up to 3 IDs per call. Tasks expire after 5 min. Pass poll_iteration (start at 1, increment each call) an
Sorted worst-first. Each finding shows its severity, what it means, its OWASP MCP Top-10 mapping, and a recommended fix — the check id links to the exact methodology row that produced it.
tool: aws___call_aws
A tool exposes a free-text/webhook/feedback parameter with no honest purpose — a classic exfil channel.
es consume more tokens. OMIT for non-paginated ops (get, create, deletRecommendationRemove side-channel parameters; constrain tool inputs.
tool: aws___call_aws
Tools that execute commands / write files / make arbitrary requests are exposed without annotations or guards.
ript` instead. Execute AWS CLI commands. PRIMARY tool when you know the exact command nRecommendationAnnotate destructive tools and require human approval.
tool: aws___call_aws
An exec/shell/run-code tool exposes a command/code/args parameter that is a free-form string with no enum/pattern guard — a direct command-injection / RCE surface. A tool constraining the command to an `enum` of allowed operations does not fire.
unconstrained command parameter "cli_command"RecommendationReplace the free-form command with a fixed `enum` of allowed operations (or structured, escaped arguments) and require explicit human approval.
tool: aws___get_presigned_url
A tool description tries to alter the model’s use of another tool.
of call_aws. Max upload 5 GB; larger files use multipart via call_aws. ForRecommendationDescriptions must describe only their own tool.
tool: aws___get_presigned_url
One tool reads private data, ingests untrusted content, AND can send data outbound — the three preconditions for autonomous data theft in a single call. A prompt injection reaching this tool can exfiltrate secrets with no further step.
es PUT URL. For downloads: generates GET URL. No special headers needed unless s3_params proRecommendationSplit the capabilities across separate least-privilege tools so no single tool can read secrets, read untrusted input, and reach the network at once.
tool: aws___run_script
Tools that execute commands / write files / make arbitrary requests are exposed without annotations or guards.
ws___run_script Execute Python code in sandboxed environment with AWS API access viRecommendationAnnotate destructive tools and require human approval.
tool: aws___run_script
An exec/shell/run-code tool exposes a command/code/args parameter that is a free-form string with no enum/pattern guard — a direct command-injection / RCE surface. A tool constraining the command to an `enum` of allowed operations does not fire.
unconstrained command parameter "code"RecommendationReplace the free-form command with a fixed `enum` of allowed operations (or structured, escaped arguments) and require explicit human approval.
The server accepts tool enumeration (and likely invocation) with no authentication.
RecommendationRequire OAuth 2.1 authorization for any server exposing non-public tools.
tool: aws___call_aws
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: aws___run_script
The server advertises open-world / broadly-scoped capabilities.
annotations.destructiveHint = trueRecommendationScope tools to the minimum needed.
tool: aws___run_script
Role tokens or delimiter abuse steer the model rather than describe the tool.
say if partial ```python async def call_boto3(*, service_name: strRecommendationWrite neutral, descriptive tool metadata.
tool: aws___call_aws
An unusually long description is a common injection-padding tactic.
description length 2270 charsRecommendationKeep descriptions concise.
tool: aws___read_documentation
An unusually long description is a common injection-padding tactic.
description length 2118 charsRecommendationKeep descriptions concise.
Vantaj uptime monitoring via MCP — manage monitors, heartbeats, incidents, and status pages.
Unified gateway to Algeria's TKAWEN ecosystem: commerce, certification, and AI tools.
Provides access to the Cohereon Doctrine AI safety framework with governance components, tiered access, and agent onboarding.
Agentic rails for complex workflows with receipts, fees, and MCP tool access.
Structural TC39 spec lookup for ECMA-262 and ECMA-402 in AI agents, SHA-pinned and offline-first.
Structural TC39 spec lookup for ECMA-262 and ECMA-402 in AI agents, SHA-pinned and offline-first.
Execute Python code in sandboxed environment with AWS API access via `call_boto3`. No network except `call_boto3`. ⚠️ ALWAYS USE run_script FOR: - 2+ API calls: listing, filtering, counting, parallel,
AWS resource availability per region. - Max 10 regions; multi-region needs `filters`; single-region supports `next_token`. - Status: isAvailableIn | isNotAvailableIn | isPlannedIn | Not Found. - Respo
Retrieve a list of all AWS regions.
Fetch full AWS doc pages as markdown. `search_documentation` already returns verbatim page chunks, so don't re-read a URL whose chunk you already have to "confirm" or "round out" an answer -- the chun
Retrieve an AWS skill (workflows, references). Returns SKILL.md, or `file` if given. Call `search_documentation` FIRST and copy `skill_name` verbatim -- it is an opaque registry ID. Never guess or fab
AWS docs search. Each result's `context` is verbatim page text -- a real chunk of the actual page, not a short snippet -- and usually already contains the answer, so answer directly from it. Use `read