Hi Quick Community,
Posting this to see if anyone has run into a similar issue or has guidance. Detailed write-up below.
What We’re Trying to Do
We have an MCP connector in Amazon Quick that connects to a Bedrock AgentCore gateway. We want to use this connector in scheduled Flows that run automatically on a set day/time without any manual intervention.
The Problem
The connector is currently configured with Custom User-Based OAuth (3LO). This works fine for interactive use (Chat, Q Apps, Dashboards), but breaks for scheduled Flows because:
- User OAuth requires an interactive sign-in via browser
- OAuth tokens expire periodically (~90-day refresh token lifecycle)
- When a scheduled Flow triggers, there’s no user present to re-authenticate
- The Flow hangs indefinitely waiting for sign-in, or fails outright
Bottom line: User-Based OAuth is fundamentally incompatible with unattended/scheduled automation.
The Solution We’re Pursuing
Switch to Service-to-Service OAuth (2LO / client credentials grant), which:
- Authenticates using client credentials (Client ID + Secret) — no user interaction needed
- Tokens auto-refresh via the client credentials flow
- Designed specifically for automated workflows and background processes
We understand that MCP servers cannot advertise Service-to-Service OAuth via the protocol’s auto-discovery mechanism (DCR / RFC 9728), and that it must be manually configured on the Quick connector side.
What We’ve Tried
Attempt 1: Edit existing connector
- Went to More → Connectors → Edit on the existing MCP connector
- On Step 2 (Authenticate), the Auth configuration dropdown only shows “Custom user based OAuth”
- No option to switch to Service-to-Service OAuth
Attempt 2: Create a new integration with Service authentication
- Created a new integration for the same MCP server
- Selected Service authentication → Service-to-Service OAuth
- Entered Client ID, Client Secret, and Token URL
- Clicked “Create and continue”
Got error: “One or more parameters are invalid. Please review your input”
Attempt 3: Independent credential validation
- To rule out bad credentials, we tested the exact same parameters via cURL from terminal:
curl -X POST <token_url> \
-d "grant_type=client_credentials" \
-d "client_id=<client_id>" \
-d "client_secret=<client_secret>"
Result: SUCCESS — Valid access_tokenreturned (bearer token, 900s expiry)- This confirms:
Client ID is correct
Client Secret is valid and not expired
Token URL is correct and reachable
Identity provider supports client_credentialsgrant type
So the credentials are 100% valid — Quick is rejecting them during connector creation.
Our Analysis
| What | Status |
|---|---|
| Client ID | |
| Client Secret | |
| Token URL | |
client_credentials grant |
|
| Quick connector validation |
The issue is clearly on the Quick connector validation side, not with the OAuth parameters or the identity provider.
Our Questions for the Community
-
Has anyone successfully configured Service-to-Service OAuth for an MCP connector in Quick? If so, what was your setup? Any special steps?
-
Does the MCP server / Bedrock AgentCore gateway need specific configuration to allow Quick to offer Service-to-Service OAuth as an option? Is there a server-side declaration or metadata that Quick checks before allowing this auth type?
-
Is there a hidden/required parameter (e.g.,
scope,audience, or custom headers) that Quick expects for Service-to-Service OAuth but doesn’t expose in the UI? -
Is this a known limitation for MCP connectors backed by Bedrock AgentCore? Does Quick currently support Service-to-Service OAuth for all MCP connectors, or only for specific connector types?
-
Workaround suggestions? If Service-to-Service OAuth isn’t directly supported for MCP connectors, has anyone successfully used an alternative approach (e.g., fronting with Amazon Cognito, API Gateway with a client_credentials authorizer) to enable unattended automation?
Summary
| Aspect | Detail |
|---|---|
| Connector type | MCP (Bedrock AgentCore gateway) |
| Current auth | Custom User-Based OAuth (3LO) |
| Desired auth | Service-to-Service OAuth (2LO) |
| Use case | Scheduled Flows (unattended automation) |
| Blocker | Quick rejects valid Service-to-Service OAuth credentials during integration creation |
| Credentials validated? | Yes — via cURL, access token returned successfully |
Any guidance, similar experiences, or workarounds would be greatly appreciated. Happy to provide more details if needed.
Thanks!