
This page is part of our MCP Security Center, within The MCP Guide. Want a second opinion on your setup? Request a free MCP readiness review.
Token passthrough is when an MCP server accepts a client's access token without checking it was issued for that server. The server then forwards it to another API. The MCP specification forbids it outright. The rule is short: MCP servers "MUST NOT accept or transit any other tokens."
It can look like a shortcut. The client already has a token for the downstream service, so why not reuse it? Because it breaks the checks that keep tokens from being reused where they do not belong.
This page explains what passthrough is, why the spec bans it, how to detect it in a server, and what to build instead. Sources were checked on 28 October 2026.
Key Takeaways
- Token passthrough means accepting a token not issued for your MCP server and forwarding it downstream.
- The MCP authorization spec says servers MUST NOT accept or transit tokens not issued for them.
- Servers MUST validate that each token's audience is the MCP server itself, per RFC 8707.
- Passthrough lets attackers reuse stolen tokens, bypass rate limits and blur audit trails.
- The fix is to have the MCP server act as its own OAuth client when it calls an upstream API.
- If you buy rather than build, ask vendors directly whether they validate audience and avoid passthrough.
What token passthrough is
An access token is like a temporary key card. A good key card says which door it opens. In OAuth, that "door" is the token's audience, the service it was issued for.
The MCP Security Best Practices page defines token passthrough as an anti-pattern. It is where a server accepts tokens "without validating that the tokens were properly issued to the MCP server" and passes them through to the downstream API.
The page splits the problem into two parts:
- Audience validation failure. The server does not check the token was meant for it, so tokens issued for other services work.
- Passthrough. The server forwards those unmodified tokens to downstream services, which may wrongly trust them.
Why the spec bans it
The best practices page lists four groups of risk.
| Risk | What goes wrong |
|---|---|
| Security control circumvention | Rate limits and request checks tied to token audience get bypassed |
| Accountability and audit trail issues | The server cannot tell clients apart, and downstream logs show the wrong source |
| Trust boundary issues | A token accepted by many services lets one breach spread to others |
| Future compatibility risk | A "pure proxy" today is hard to secure later |
The page also warns that a server passing tokens without validation lets "a malicious actor in possession of a stolen token" use the server "as a proxy for data exfiltration." And it links passthrough to the confused deputy problem, where a downstream API trusts a token it should not.
An illustrative scenario
This example is illustrative. It is not a real incident.
A company builds an internal MCP server for its billing API. To save time, the server takes whatever bearer token the client sends and forwards it to billing. It never checks the audience.
An attacker steals a token that was issued for a low-risk analytics app on the same identity provider. Billing accepts it, because it only checks the signature. The MCP server's logs show a normal request, and billing's logs show the analytics app. Nobody can trace what happened.
Who is at risk
- Teams building MCP servers that wrap existing internal or SaaS APIs.
- "Thin proxy" servers designed to forward requests with as little logic as possible.
- Organizations with one identity provider issuing tokens for many services, where a missing audience check opens many doors.
- Buyers of hosted MCP servers who cannot see how tokens are handled.
How to detect it
If you build or review a server, look for these signs:
- No audience check. The token validation code checks signature and expiry but not the audience claim.
- Incoming token reused outbound. The same
Authorizationheader received from the client is sent to the upstream API. - No resource parameter. Clients are not sending the
resourceparameter, so tokens are not bound to the server. - Identical identities in logs. Downstream logs show end-user tokens arriving directly, with no record of the MCP server as a distinct client.
For vendor-built servers, ask in writing. Our MCP vendor security questionnaire includes the exact questions.
How to reduce the risk
On the server side
- Validate the audience. The authorization spec says servers "MUST validate that access tokens were issued specifically for them as the intended audience," per RFC 8707.
- Reject everything else. Invalid or expired tokens MUST receive an HTTP 401 response.
- Get your own upstream token. When your server calls another API, it should act as its own OAuth client with its own token for that API. Do not reuse the client's token.
- Keep tokens out of URLs and logs. The spec says tokens MUST NOT be included in the URI query string.
On the client side
- Send the
resourceparameter with every authorization and token request. The spec says clients MUST, using the MCP server's canonical URI. - Only send a server tokens issued by that server's authorization server. The spec makes this a MUST NOT for anything else.
At the organization level
- Make audience validation part of your server review checklist. Our MCP security checklist includes it.
- Issue tokens with specific audiences on your identity provider rather than one token for everything.
- Keep short token lifetimes so stolen tokens expire quickly.
What the MCP spec says
The authorization page's token handling section is direct:
- MCP servers "MUST validate that access tokens were issued specifically for them as the intended audience."
- MCP clients "MUST NOT send tokens to the MCP server other than ones issued by the MCP server's authorization server."
- MCP servers "MUST only accept tokens that are valid for use with their own resources."
- MCP servers "MUST NOT accept or transit any other tokens."
The best practices page restates the mitigation in one line: servers "MUST NOT accept any tokens that were not explicitly issued for the MCP server." For a step-by-step OAuth walkthrough, see MCP authentication and OAuth. For related errors, see MCP OAuth misconfigurations.
Next step
If your team is planning a server that wraps an existing API, design token handling first. Our MCP development team builds servers that validate audience and use separate upstream credentials. You can find more threats in the MCP Security Center.
Frequently asked questions
Is token passthrough ever allowed in MCP?
No. The 2026-07-28 authorization spec says MCP servers "MUST NOT accept or transit any other tokens." There is no exception for internal or trusted networks.
My server is just a simple proxy. Does this still apply?
Yes. The best practices page specifically warns that a server starting as a "pure proxy" may need security controls later. Separating token audiences from the start makes that easier.
What is token audience, in plain terms?
It is the field that says which service a token is for. Checking it stops a token issued for one app from working at another. MCP uses RFC 8707 resource indicators to set it.
How does my MCP server call an upstream API then?
It gets its own token for that API, acting as an OAuth client of the upstream service. The client's token proves who is calling your MCP server. Your server's token proves your server is calling the upstream API.
Does this apply to local stdio servers?
The authorization spec says stdio implementations should not follow it and should get credentials from the environment instead. The token passthrough rule is aimed at HTTP-based servers. Local servers still need careful credential handling, covered in secrets and credential leakage.











