Skip to content

Commit 018d472

Browse files
committed
Sync open source content 🐝 (from 7e165c9d94abf69efec98e091f145a57d0c4f499)
1 parent 8c93507 commit 018d472

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

docs/gram/host-mcp/adding-oauth.mdx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,16 @@ Gram fully supports registering an OAuth server in front of MCP servers for your
9191

9292
## Why DCR is Required for MCP
9393

94+
### The core difference from vanilla OAuth2
95+
96+
The core difference in MCP OAuth from vanilla OAuth2 is that there is no generic way across MCP clients for each user to provide their own static `client_id`. MCP clients expect that in some form they are able to dynamically register a client with an auth server. This is done through Dynamic Client Registration (DCR) or Client ID Metadata Documents.
97+
98+
Speakeasy has worked with companies to help them make changes to their OAuth APIs to support this MCP requirement. Once those changes are made, the MCP server registers auth information like the [Polar MCP example](https://mcp.polar.sh/.well-known/oauth-authorization-server/mcp/polar-mcp). This manifest is how any MCP client understands how to interact with user-facing OAuth and get a client.
99+
100+
Separately, MCP clients are very slowly and independently adding the ability to provide `client_id` values directly in their apps, which would not require changes to auth APIs. However, adoption is still slow here. It will probably be a while before that is a general possibility for all major MCP clients (Cursor, Claude surface areas, Gemini, etc.).
101+
102+
### The challenge DCR solves
103+
94104
**The main requirement is that MCP clients require OAuth2.1 and Dynamic Client Registration (DCR).** This requirement exists because the MCP spec currently does not define a standard way for an MCP client to provide an OAuth `client_id`/`client_secret` from the user.
95105

96106
Here's the challenge DCR solves:

0 commit comments

Comments
 (0)