Skip to content

Commit 32b37e7

Browse files
domdomeggclaude
andauthored
Add registry authorization specification (#756)
Add a standardized OAuth 2.1-based authentication specification for MCP sub-registries, aligned with the MCP Authorization Specification. This enables: - Private registry entries with access control - Permission-based server visibility - Client code reuse (clients can use their existing MCP auth implementation) The spec is intended for downstream sub-registries. The official registry remains public for reading. Fixes #751 --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent da83505 commit 32b37e7

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

docs/reference/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Technical specifications and quick lookups for the MCP Registry.
55
## API Reference
66

77
- [Generic Registry API](./api/generic-registry-api.md)
8+
- [Registry Authorization](./api/registry-authorization.md)
89
- [Official Registry API](./api/official-registry-api.md)
910

1011
## server.json Reference

docs/reference/api/generic-registry-api.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ A standardized RESTful HTTP API for MCP registries to provide consistent endpoin
44

55
Also see:
66
- For guidance consuming the API, see the [consuming guide](../../guides/consuming/use-rest-api.md).
7+
- For authentication and authorization, see the [registry authorization specification](./registry-authorization.md).
78

89
## Browse the Complete API Specification
910

@@ -22,8 +23,8 @@ The official registry has some more endpoints and restrictions on top of this. S
2223
Server names and version strings should be URL-encoded in paths.
2324

2425
### Authentication
25-
- **Read operations**: No authentication required
26-
- **Write operations**: Registry-specific authentication (if supported)
26+
27+
No authentication required by default. Subregistries may optionally require authentication following the [registry authorization specification](./registry-authorization.md).
2728

2829
### Content Type
2930
All requests and responses use `application/json`
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Registry Authorization
2+
3+
MCP registries wishing to implement authentication SHOULD follow the [MCP Authorization Specification](https://modelcontextprotocol.io/specification/draft/basic/authorization).
4+
5+
## How it works
6+
7+
The registry acts as an OAuth 2.1 Resource Server, identical to how MCP servers work. This means:
8+
9+
- **MCP clients** can reuse their existing MCP authorization implementation without any changes
10+
- **Registries** validate access tokens the same way MCP servers do
11+
- **Users** get a consistent login experience across MCP servers and registries
12+
13+
## Registry-Specific Scopes
14+
15+
Registries MAY use these scopes:
16+
17+
- `mcp-registry:read` - List and read server metadata
18+
- `mcp-registry:write` - Publish, update, and delete servers
19+
20+
These are recommendations - registries may use any set of scopes they deem sensible.
21+
22+
Note that scopes only control what *types* of operations a user can perform. Registries should still apply user-level authorization to control which specific resources a user can access. For example, a user with `mcp-registry:write` might only be able to publish servers to namespaces they own, and may not have permissions to edit servers if the registry treats servers as immutable.
23+
24+
## Official Registry Authentication
25+
26+
The official modelcontextprotocol.io registry remains public for reading. For publishing servers, it uses a custom JWT-based authentication system for legacy reasons - see [its API spec](official-registry-api.md#authentication). This may change in future to align with the MCP Authorization Specification.

0 commit comments

Comments
 (0)