Skip to content

Add AWS STS authentication tutorial and cross-references#550

Open
jhrozek wants to merge 2 commits intomainfrom
aws_sts
Open

Add AWS STS authentication tutorial and cross-references#550
jhrozek wants to merge 2 commits intomainfrom
aws_sts

Conversation

@jhrozek
Copy link
Contributor

@jhrozek jhrozek commented Feb 13, 2026

Description

Tutorial covering end-to-end setup of ToolHive as an authentication proxy for the AWS MCP Server on Kubernetes. Users register their OIDC provider with AWS IAM, create IAM roles with the aws-mcp permission model, configure MCPExternalAuthConfig with type: awsSts, and deploy an MCPRemoteProxy pointing to the AWS MCP Server endpoint.

Type of change

  • New documentation

Related issues/PRs

#510

Screenshots

N/A

Submitter checklist

Content and formatting

  • I have reviewed the content for technical accuracy
  • I have reviewed the content for spelling, grammar, and style

Navigation

  • New pages include a frontmatter section with title and description at a minimum
  • Sidebar navigation (sidebars.ts) updated for added, deleted, reordered, or renamed files
  • Redirects added to vercel.json for moved, renamed, or deleted pages (i.e., if the URL slug changed)

Reviewer checklist

Content

  • I have reviewed the content for technical accuracy
  • I have reviewed the content for spelling, grammar, and style

Copilot AI review requested due to automatic review settings February 13, 2026 15:18
@vercel
Copy link

vercel bot commented Feb 13, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
docs-website Ready Ready Preview, Comment Feb 16, 2026 2:46pm

Request Review

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds new ToolHive documentation describing how to use AWS STS (via OIDC) to authenticate to the AWS MCP Server, and links to this new tutorial from existing Kubernetes/token-exchange documentation and the sidebar navigation.

Changes:

  • Added a new end-to-end tutorial for AWS STS authentication to the AWS MCP Server on Kubernetes.
  • Updated Docusaurus sidebar to include the new tutorial.
  • Added cross-references/tips in existing token exchange, remote proxy, and backend-auth concept docs.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
sidebars.ts Adds the new AWS STS tutorial to the Tutorials sidebar navigation.
docs/toolhive/tutorials/aws-sts-integration.mdx New tutorial covering AWS IAM OIDC provider setup, role/policy examples, and ToolHive resources for AWS STS-based auth.
docs/toolhive/guides-k8s/token-exchange-k8s.mdx Links token exchange guide readers to the AWS STS tutorial.
docs/toolhive/guides-k8s/remote-mcp-proxy.mdx Adds a tip steering AWS users toward type: awsSts and the new tutorial.
docs/toolhive/concepts/backend-auth.mdx Adds conceptual mention of built-in AWS STS support and links to the tutorial.

Copy link
Collaborator

@danbarr danbarr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks really great! I have some small nits and one thing that a Claude review pointed out which may or may not be an issue.


:::info[What's happening?]

The `roleMappings` field uses simple claim matching by default: if the value in
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The explanation here references "the roleClaim JWT claim (here, groups)" but the YAML in Step 3 doesn't include a roleClaim field anywhere. The YAML shows claim: s3-readers under roleMappings, where a reader would naturally parse claim as a claim name rather than a value to match against.

Three things need clarifying:

  1. Where does groups come from? If roleClaim is a CRD field that defaults to groups, mention that explicitly — even a YAML comment like # roleClaim defaults to "groups" in the example would help.
  2. The claim field under roleMappings represents a value to match, not a claim name — that's counterintuitive and worth a sentence of explanation.
  3. Readers whose IdP uses a different claim name (e.g., Auth0 may use roles or a custom namespace instead of groups) need to know how to change it.

Without this, a reader who doesn't happen to have a groups claim in their tokens won't know what to adjust.


Generated by Claude Code

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude identified this; I'm not as well-versed in the specifics here so take it with a grain of salt 😉

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no, this is a fair comment. Does the new version read better?

Tutorial covering end-to-end setup of ToolHive as an authentication
proxy for the AWS MCP Server on Kubernetes. Users register their
OIDC provider with AWS IAM, create IAM roles with the aws-mcp
permission model, configure MCPExternalAuthConfig with type: awsSts,
and deploy an MCPRemoteProxy pointing to the AWS MCP Server endpoint.

Also adds cross-references from existing token exchange and remote
proxy docs so readers discover the AWS-specific auth path:

- concepts/backend-auth: mention AWS STS in the federation section,
  add "Built-in AWS STS support" subsection
- guides-k8s/token-exchange-k8s: link in Related information
- guides-k8s/remote-mcp-proxy: tip admonition after token exchange
  section

Fixes: #510
- Fix OIDC issuer placeholder: rename <YOUR_OIDC_ISSUER_HOST> to
  <YOUR_OIDC_ISSUER>, clarify it excludes the https:// scheme and
  must include path components (avoids doubled-scheme copy-paste
  error and works for Okta/Keycloak issuers with paths)
- Clarify roleClaim vs claim: explain that roleClaim defaults to
  "groups" when omitted, that the claim field under roleMappings
  is a value to match (not a claim name), and show how to override
  the claim name for other IdPs
- Remove misleading region suggestion: the AWS MCP Server endpoint
  only exists in us-east-1
- Add Gateway API note and connect-clients cross-reference in Step 5
- Move role selection admonition from Step 2 to Step 3 where the
  priority field first appears
- Add AWS CLI to prerequisites
- Replace stale "7 of 9 tools" with "most tools"
- Mention jq dependency alongside oauth2c at point of use
- Simplify line highlighting to {4,7}
- Remove "Optionally" from IAM cleanup
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants