- OAuth. The AWS provider in Coral’s catalog signs each member in with AWS. Use it when each member has an AWS sign-in. AWS keeps a sign-in for at most 12 hours. After that, you reconnect the account in Coral.
- IAM. Coral calls AWS with one IAM role. Use it when you want a fixed identity with its own IAM policies, or access that does not need a new sign-in every 12 hours. This guide covers this option.
- MCP Proxy for AWS signs each request with the bridge’s AWS credentials and sends it to the AWS MCP Server.
- Supergateway runs the proxy, serves it as a Streamable HTTP endpoint and checks an API key on each request.
Before you start
- A self-hosted Coral deployment, version 1.6.1 or later. This guide covers Docker Compose and Kubernetes.
- An AWS Region for the endpoint. The examples use
https://aws-mcp.us-east-1.api.aws/mcp. AWS lists the other Regions. - A place on AWS to run the bridge. The Docker Compose example gets the bridge’s IAM role from an Amazon EC2 instance. The Kubernetes example gets it from Amazon EKS. This guide does not cover other platforms. On Amazon ECS, set the role as the task role of the bridge’s task. Every container in that task can use the role. Outside AWS, use IAM Roles Anywhere.
- Permission to create an IAM role in the AWS account that the provider reads.
Set up the bridge
Create the IAM role
Create an IAM role for the bridge. You give the role to the bridge in step 3.The AWS MCP Server needs no permissions of its own. Each tool call reaches the AWS service with the bridge’s role, and that service checks the role’s IAM policies. Attach the policies for the access you want. For read-only access, the AWS managed policy AWS adds the condition key
ReadOnlyAccess is a good start:aws:ViaAWSMCPService to each request that the AWS MCP Server makes. To give the role different permissions through MCP than through direct API calls, see the AWS policy examples.Generate an API key for the bridge
Coral sends this key to the bridge as a bearer token. The bridge refuses requests without it.
Run the bridge
- Docker Compose
- Kubernetes
Add this service to the compose file that runs Coral.Set
AWS_MCP_API_KEY to the key from the previous step, in your shell or in the .env file next to the compose file.To give the role to the bridge, attach the role to the EC2 instance that runs the compose project. Set the instance metadata hop limit to 2 so that the container can reach the instance metadata service. Every container on the instance can then use the role.The bridge’s MCP server URL is http://aws-mcp:8000/mcp.The examples set
--logLevel none. Without it, Supergateway writes each MCP request and result to the container’s logs, which puts AWS data there. The option also hides the proxy’s error messages. Remove it while you debug the bridge.The 4.2.2-uvx and 1.8.0 versions are examples. Check Supergateway’s tags and the proxy’s releases for newer ones.Let Coral reach the bridge
With Then recreate the Coral container, or restart the Coral Deployment.
[auth] configured, Coral denies provider calls to private network addresses. The bridge has a private address and serves plain HTTP, so add the [outbound] policy to Coral’s configuration. In the Docker Compose guide, that is the CORAL_CONFIG value in the compose file. In the Kubernetes guide, it is the config.toml key of the Coral ConfigMap.Over plain HTTP, the API key is not encrypted between Coral and the
bridge. Use it only where you trust the network between them, such as the
compose project’s own network. The policy also applies to every provider:
a workspace owner can then add a provider at any private address that
Coral can reach. To avoid both, serve the bridge over TLS, keep the
https policy and use the bridge’s https:// URL in the next step.Add the provider to Coral
- Go to your workspace’s Providers page.
- Click Add provider, then Add custom.
- Enter the bridge’s MCP server URL, then click Connect.
- Enter a display name and a namespace, such as
AWSandaws. You cannot change the namespace later. - For Sign-in, choose Bearer token. Click Next.
- Click Enter a token to read the tools. Enter the API key from step 2, then click List tools.
- Click Next. Under One shared account, choose Use this account.
- Click Add provider.
Check the connection
Open the provider in Coral. It lists the AWS MCP Server’s tools, such asawsRunScript and awsSearchDocumentation.
Then ask your agent which AWS account it uses through Coral. The answer names the bridge’s IAM role.
awsRunScript and awsGetPresignedUrl are not read-only tools, so each call waits for your approval. To change that, set each tool’s policy on the provider’s page. See permissions.
Troubleshooting
With--logLevel none, the bridge logs nothing. Remove the option to see the errors in the bridge’s logs.
For other errors, see AWS’s troubleshooting table.