Add authScope to namespace MCP OAuth tokens per project#496
Open
rschmukler wants to merge 1 commit into
Open
Conversation
MCP OAuth tokens were stored in the global cache keyed only by server name, so two projects using a same-named server (e.g. a plugin-provided `linear`) shared one `[:mcp-auth <name>]` slot. Authenticating a different account in one project clobbered the other's token. Introduce an optional `authScope` field on HTTP MCP server config and derive the storage key from it via a single `mcp-auth-key` helper that all reads/writes/deletes route through: - `global` (default/unset): bare server name, one token shared everywhere (back-compat, no migration of existing tokens). - `workspace`: scoped to the workspace folder set (reuses `cache/workspaces-hash`). - any other value: a named bucket shared by projects using that value. The server name always prefixes composite keys so different servers never share a token, and tool names (`<server>__<tool>`) are unaffected. Storage stays in the single global cache; only the key is namespaced. Document the field in config.json, protocol.md and tools.md, including that it supports the full dynamic-string interpolation like other config values.
51e703b to
9daba74
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
MCP OAuth tokens were stored in the global cache keyed only by server name, so two projects using a same-named server (e.g. a plugin-provided
linear) shared one[:mcp-auth <name>]slot. Authenticating a different account in one project clobbered the other's token.Introduce an optional
authScopefield on HTTP MCP server config and derive the storage key from it via a singlemcp-auth-keyhelper that all reads/writes/deletes route through:global(default/unset): bare server name, one token shared everywhere (back-compat, no migration of existing tokens).workspace: scoped to the workspace folder set (reusescache/workspaces-hash).The server name always prefixes composite keys so different servers never share a token, and tool names (
<server>__<tool>) are unaffected. Storage stays in the single global cache; only the key is namespaced.Document the field in config.json, protocol.md and tools.md, including that it supports the full dynamic-string interpolation like other config values.