Client setup
- Claude Code
- Claude Desktop
- claude.ai
- Codex
- Cursor
- Windsurf
Names work anywhere IDs do
Pass a name to any tool that takes an ID.Getting a token
The client registers through DCR or a URL-form client ID, sends you to the consent screen, and exchanges the code with PKCE for a token bound to the/mcp resource URL. A token can never do
more than you can. Full detail in Authentication.
The transport
POST sends messages, GET opens the stream, DELETE ends the session. Requests are stateless.
initialize returns an Mcp-Session-Id anyway; send it back, open GET /mcp, and Docket sends:
notifications/resources/updatedfor anything you subscribed tonotifications/tools/list_changedwhen a grant change alters what you may callnotifications/messageat whatever level you set vialogging/setLevel
Delivery is best-effort and never replayed. Read the resource again when one arrives.
Athena as an MCP client
Athena can also call an external MCP server for a workspace. Go to Settings → Connections → MCP connectors, enter the server URL, choose Sign in and approve access, and finish the provider’s browser approval. Docket callstools/list first and
renames each tool <connector>__<tool>. Athena receives those tools, never a raw user token.
Revoking access
Settings → Connected apps revokes one client at a time, deleting the consent and its access tokens. Access tokens expire after 15 minutes anyway, refresh tokens after 30 days.Self-hosting
The OAuth server runs in every deploy and needs no MCP-specific configuration. Docket derives the issuer from the API URL, the resource from${API_URL}/mcp, and the login page from
${WEB_URL}/sign-in. Registration, token exchange, introspection, revocation, the JWKS, and both
discovery documents are public under an open credential-free CORS policy, per RFC 7591, 6749, 7662,
7009, 8414, and 9728.
Reference
Tools, resources, and prompts
All 25 tools, the
docket:// resource scheme, and the bootstrap prompts.