Skip to content
This repository was archived by the owner on Oct 27, 2026. It is now read-only.

Commit 89b0e6d

Browse files
andrewconnor-arcadeclaudearcade-docs-bot[bot]
authored
docs: add AWS MCP Server remote connection guide (#1169)
* docs: add AWS MCP Server remote connection guide Mirrors the other remote MCP server guides. AWS's setup is DCR-based like Atlassian: no manual OAuth app, Client ID/Secret, Authorization URL, and Token URL all stay empty in Arcade. Access is governed entirely by IAM: authorizing an agent grants no additional AWS permissions, every tool call runs under the authorizing identity's existing IAM policies, and the guide leads with this since it's the whole security model. No Arcade AWS toolkit exists today, so this is framed as a fixed-surface, currently-only-path guide (same tier as Dynamics 365 and Atlassian), not a customer-extensible one. Does not document the non-interactive SigV4/client-credentials path (single shared machine identity, doesn't fit Arcade's per-user OAuth model) by design. BLOCKED ON AWS: Arcade's redirect URI is not yet on AWS Sign-In's DCR allowlist as of this commit (verified against AWS's live docs). This PR is opened as a draft until AWS completes that change; see PR description for the verification method and result. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * 🤖 Regenerate LLMs.txt * docs: drop the DCR-allowlist setup step from the AWS guide This step only made sense while Arcade wasn't yet on AWS Sign-In's DCR allowlist. Once that gate clears, there's nothing for a reader to confirm here, so it becomes dead weight in Set up AWS. The troubleshooting entry for the same failure mode stays, since that's a standard "if you see this error, here's why" reference regardless of when it occurs. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * docs: correct the AWS MCP Server region example and DCR troubleshooting The guide used us-west-2 as its worked example, inherited from AWS's own CloudTrail samples, but that endpoint does not resolve. Only us-east-1 and eu-central-1 are served today, so a reader following the example verbatim got a DNS failure rather than anything the guide accounted for. Point the example at a region that resolves and name the unserved-region failure mode. AWS's published Supported Redirect URIs table also lags their actual DCR allowlist: Arcade is approved and working, but absent from that table. The troubleshooting entry told readers to verify against it, which now fails for someone whose setup is correct. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * docs: stop pointing readers at AWS's redirect URI table AWS's published table lags their actual DCR allowlist, so sending a reader there to verify Arcade's redirect URI gives a misleading answer. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * docs: drop semicolon in AWS DCR troubleshooting entry Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * 🤖 Regenerate LLMs.txt --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> Co-authored-by: arcade-docs-bot[bot] <321924871+arcade-docs-bot[bot]@users.noreply.github.com>
1 parent cdad8a0 commit 89b0e6d

4 files changed

Lines changed: 122 additions & 2 deletions

File tree

‎app/en/operate/governance/remote-mcp-servers/_meta.tsx‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ const meta: MetaRecord = {
2828
splunk: {
2929
title: "Splunk",
3030
},
31+
aws: {
32+
title: "AWS",
33+
},
3134
};
3235

3336
export default meta;
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
---
2+
title: "Connect the AWS MCP Server"
3+
description: "Connect Arcade to the AWS-managed MCP Server using AWS Sign-In OAuth, with access governed entirely by IAM"
4+
---
5+
6+
import { Callout, Steps } from "nextra/components";
7+
import { SignupLink } from "@/app/_components/analytics";
8+
9+
# Connect the AWS MCP Server
10+
11+
AWS hosts a managed **AWS MCP Server** that gives agents access to AWS APIs across thousands of operations, authorized through **AWS Sign-In** using the same identities, permissions, and governance model you already use with the AWS Management Console and CLI. This guide covers the Arcade-side setup for connecting it as a [remote MCP server](/operate/governance/remote-mcp-servers), plus the AWS settings that most commonly trip people up.
12+
13+
<Callout type="info">
14+
This guide is about connecting to the AWS MCP Server, not an Arcade
15+
toolkit. Arcade doesn't ship an AWS toolkit today, so this remote server
16+
is currently the only way to reach AWS APIs through Arcade. It's a fixed,
17+
AWS-defined tool set, not something a customer can extend, so that
18+
advantage goes away if Arcade ships a native toolkit for it later.
19+
</Callout>
20+
21+
<Callout type="info">
22+
The AWS-side steps below are sourced directly from [AWS's own OAuth
23+
documentation](https://docs.aws.amazon.com/signin/latest/userguide/aws-mcp-server.html)
24+
for this server.
25+
</Callout>
26+
27+
AWS's setup is structurally closer to Atlassian than to the other guides in this section: the AWS MCP Server uses **OAuth 2.1 with Dynamic Client Registration (DCR)**, so Arcade registers itself as a client automatically. There's no manual OAuth app to create and no Client ID/Secret to copy. The administrative work is entirely about **which IAM identity authorizes the connection and what that identity is permitted to do**, because authorizing an agent grants it no additional AWS permissions. It acts strictly within the authorizing identity's existing IAM policies.
28+
29+
<GuideOverview>
30+
<GuideOverview.Outcomes>
31+
32+
Connect the AWS MCP Server to Arcade and use its tools in gateways and SDKs.
33+
34+
</GuideOverview.Outcomes>
35+
36+
<GuideOverview.Prerequisites>
37+
38+
- An <SignupLink linkLocation="docs:remote-mcp-servers-aws">Arcade account</SignupLink>
39+
- An AWS account, and an IAM identity (user or role) you'll authorize the connection as
40+
- Permission to attach an IAM policy to that identity
41+
42+
</GuideOverview.Prerequisites>
43+
44+
<GuideOverview.YouWillLearn>
45+
46+
- Which IAM permissions the authorizing identity needs, and why access is governed entirely by IAM
47+
- Register the remote server in Arcade without manually configuring OAuth credentials
48+
- Diagnose the most common setup mistakes from their error messages
49+
50+
</GuideOverview.YouWillLearn>
51+
</GuideOverview>
52+
53+
## Set up AWS
54+
55+
Because access runs entirely through the authorizing identity's IAM permissions, setting up AWS mainly means granting that identity the permissions to complete the OAuth flow.
56+
57+
- **Grant the authorizing identity the OAuth permissions.** Attach the AWS managed policy [`AWSMCPSignInOAuthAccessPolicy`](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSMCPSignInOAuthAccessPolicy.html) to the IAM user or role you'll sign in as:
58+
59+
```
60+
aws iam attach-role-policy \
61+
--role-name MyRole \
62+
--policy-arn arn:aws:iam::aws:policy/AWSMCPSignInOAuthAccessPolicy
63+
```
64+
65+
This grants the two permissions the interactive OAuth flow needs: `signin:AuthorizeOAuth2Access` and `signin:CreateOAuth2Token`. (If you authorize as the account root user, no extra IAM permissions are required, but a scoped role is the better practice.)
66+
67+
- **Understand what the authorized connection can actually do.** These two permissions only let the identity complete the OAuth handshake. They don't grant any AWS service access. Every tool call the AWS MCP Server makes afterward runs under the authorizing identity's own IAM policies. Whatever that identity can't do in the Console or CLI, it can't do through the MCP server either. Scope the authorizing role to exactly the AWS access you intend agents to have, since that role's policies *are* the access-control boundary for everything Arcade does here.
68+
69+
- **Pick the region deliberately.** The AWS MCP Server endpoint and its OAuth resources are region-specific, and the server is available in a limited set of regions while AWS rolls it out. Use a region where the endpoint actually resolves, and keep it consistent between the server URL and the authorizing session.
70+
71+
<Callout type="info">
72+
All OAuth activity (authorization requests, token issuance,
73+
introspection, revocation, along with the OAuth client, redirect URI, and
74+
originating sign-in session) is recorded in **AWS CloudTrail**, so
75+
administrators can correlate downstream AWS API calls back to the
76+
originating authorization. This is worth knowing for audit and incident
77+
response.
78+
</Callout>
79+
80+
## Configure the remote server in Arcade
81+
82+
<Steps>
83+
84+
### Register the server
85+
86+
Go to the [MCP servers dashboard](https://app.arcade.dev/servers), click **Add Server**, choose **Remote MCP**, and enter a server ID and the AWS MCP Server endpoint for your region:
87+
88+
```
89+
https://aws-mcp.<region>.api.aws/mcp
90+
```
91+
92+
For example, `https://aws-mcp.us-east-1.api.aws/mcp`. The region in the URL should match the region of the identity and session you authorize with. If the hostname doesn't resolve, that region isn't served yet: pick one that is, rather than treating it as a connection or permissions problem.
93+
94+
### Configure OAuth2 authorization
95+
96+
Open **Advanced settings → OAuth2 authorization** and **leave Client ID, Client Secret, Authorization URL, and Token URL empty.** This is the same guidance as Atlassian, and the opposite of the ECA-style providers: the AWS MCP Server supports Dynamic Client Registration, so Arcade registers a client and discovers the authorization server automatically on first connection. There's nothing to create on the AWS side to populate these fields, and there's no redirect URI to manually configure on an AWS OAuth app. The redirect URI is matched against AWS's DCR allowlist, not a per-account setting.
97+
98+
### Authorize and confirm
99+
100+
Save the server to open the authorization prompt. Sign in through AWS Sign-In as the IAM identity you scoped above and approve the authorization request. AWS Sign-In issues an access token (valid up to one hour, auto-refreshed via a rotating single-use refresh token while your session lasts), and the connection lists the tools that identity is permitted to reach.
101+
102+
</Steps>
103+
104+
## Troubleshooting
105+
106+
- **"Agent cannot register as an OAuth client" during connection**: AWS Sign-In only permits Dynamic Client Registration from approved redirect URIs, and Arcade's is approved. This isn't something you fix through Arcade configuration. It's resolved on AWS's side.
107+
- **"Permission denied" when connecting**: the authorizing IAM identity is missing `signin:AuthorizeOAuth2Access` and/or `signin:CreateOAuth2Token`. Attach `AWSMCPSignInOAuthAccessPolicy` to that identity.
108+
- **The connection authorizes, but specific tool calls fail with access-denied errors**: the authorizing identity's own IAM policies don't permit that AWS action. This isn't an MCP or Arcade issue: authorizing the agent grants no permissions beyond what the identity already has. Broaden the role's IAM policies (deliberately) or re-authorize as an identity with the needed access.
109+
- **"Invalid target resource"**: the endpoint region or resource is off. Confirm the server URL uses the `https://aws-mcp.<region>.api.aws/mcp` pattern with a supported region.
110+
- **Access stops working after about an hour, and doesn't recover**: the refresh token has expired or been revoked. Re-authorize through the AWS Sign-In flow to obtain a fresh token.
111+
- **You need to immediately cut off an authorized connection**: revoking the refresh token stops new access tokens from being issued, but existing access tokens remain valid until they expire (up to an hour). For immediate containment, apply an IAM policy using the `aws:SignInSessionArn` condition key to deny requests tied to that sign-in session.
112+
113+
## Next steps
114+
115+
- [Create an MCP Gateway](/operate/governance/mcp-gateways/create-via-dashboard) to expose this server's tools.
116+
- [Connect to MCP clients](/get-started/mcp-clients).

‎app/en/operate/governance/remote-mcp-servers/page.mdx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ Common settings include:
175175
height={ADVANCED_SETTINGS_HEIGHT}
176176
/>
177177

178-
Some remote servers need provider-specific setup beyond these generic settings. See [Connect a Salesforce Hosted MCP Server](/operate/governance/remote-mcp-servers/salesforce), [Connect a ServiceNow Hosted MCP Server](/operate/governance/remote-mcp-servers/servicenow), [Connect a Dynamics 365 Customer Service MCP Server](/operate/governance/remote-mcp-servers/dynamics-365-customer-service), [Connect a HubSpot Remote MCP Server](/operate/governance/remote-mcp-servers/hubspot), [Connect a Snowflake-Managed MCP Server](/operate/governance/remote-mcp-servers/snowflake), [Connect an Atlassian Remote MCP Server](/operate/governance/remote-mcp-servers/atlassian), [Connect a GitHub Remote MCP Server](/operate/governance/remote-mcp-servers/github), or [Connect a Splunk MCP Server](/operate/governance/remote-mcp-servers/splunk) for fully worked examples.
178+
Some remote servers need provider-specific setup beyond these generic settings. See [Connect a Salesforce Hosted MCP Server](/operate/governance/remote-mcp-servers/salesforce), [Connect a ServiceNow Hosted MCP Server](/operate/governance/remote-mcp-servers/servicenow), [Connect a Dynamics 365 Customer Service MCP Server](/operate/governance/remote-mcp-servers/dynamics-365-customer-service), [Connect a HubSpot Remote MCP Server](/operate/governance/remote-mcp-servers/hubspot), [Connect a Snowflake-Managed MCP Server](/operate/governance/remote-mcp-servers/snowflake), [Connect an Atlassian Remote MCP Server](/operate/governance/remote-mcp-servers/atlassian), [Connect a GitHub Remote MCP Server](/operate/governance/remote-mcp-servers/github), [Connect a Splunk MCP Server](/operate/governance/remote-mcp-servers/splunk), or [Connect the AWS MCP Server](/operate/governance/remote-mcp-servers/aws) for fully worked examples.
179179

180180
## Where the server's tools become available
181181

‎public/llms.txt‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!-- git-sha: ec8ffb92dfec4ee964af77a3b5b7ddac296003e8 generation-date: 2026-09-04T18:06:31.680Z -->
1+
<!-- git-sha: 80a9fd3ed0151df5746865dd718d3ab4aee9e369 generation-date: 2026-09-14T20:19:05.511Z -->
22

33
# Arcade
44

@@ -113,6 +113,7 @@ Arcade docs serve two audiences. Start with the path that matches your goal:
113113
- [Connect a Splunk MCP Server](https://docs.arcade.dev/en/operate/governance/remote-mcp-servers/splunk): Documentation page
114114
- [Connect an Atlassian Remote MCP Server](https://docs.arcade.dev/en/operate/governance/remote-mcp-servers/atlassian): Documentation page
115115
- [Connect Arcade to your LLM](https://docs.arcade.dev/en/get-started/agent-frameworks/setup-arcade-with-your-llm-python): This documentation page guides users on how to connect Arcade to a Large Language Model (LLM) using Python by creating a "harness" that facilitates interaction between the user, the model, and various tools. Users will learn to set up an agent
116+
- [Connect the AWS MCP Server](https://docs.arcade.dev/en/operate/governance/remote-mcp-servers/aws): Documentation page
116117
- [Connect to MCP Clients](https://docs.arcade.dev/en/get-started/mcp-clients): This documentation page provides guidance on connecting Arcade MCP servers to various MCP-compatible clients and development environments, enabling users to enhance their agent workflows.
117118
- [Contact Us](https://docs.arcade.dev/en/resources/contact-us): This documentation page provides users with information on how to connect with the Arcade team for support through various channels. It aims to facilitate communication and assistance for users and their agents.
118119
- [Contextual Access](https://docs.arcade.dev/en/operate/governance/contextual-access): Documentation page

0 commit comments

Comments
 (0)