MCP servers can require OAuth 2.1 tokens. Choose between DAuth (Dedalus Auth) for managed authentication with credential isolation, or bring your own authorization server.
DAuth is Dedalus’s managed authorization system. It provides OAuth 2.1 token issuance with a key security property: credentials never leave a sealed execution boundary.
Traditional credential handling exposes secrets to your application code. DAuth isolates credentials in a secure enclave—your MCP server receives an opaque connection handle, not raw API keys.
Credentials never exposed — Encrypted client-side, decrypted only in a sealed execution boundary
Opaque handles — Your code references connections by handle, never sees raw secrets
Sender-constrained tokens — Tokens are cryptographically bound to the client; stolen tokens are unusable
Networkless execution — Credential decryption and API calls happen entirely within an isolated enclave; raw secrets never traverse the network
How DAuth Works
Learn how credential isolation and sealed execution protect your secrets.
By default, authorization_servers points to https://as.dedaluslabs.ai (the DAuth control plane).For a complete working example with GitHub and Supabase integrations:
Example MCP Server
Production-ready server with GitHub and Supabase integrations.
Unauthenticated requests get 401 with a WWW-Authenticate challenge pointing to the protected resource metadata.
All requests must have these scopes. Scope names are arbitrary strings you define—common patterns are read/write for general access or resource:action (e.g., files:delete) for fine-grained control.
authorization=AuthorizationConfig( enabled=True, required_scopes=["read", "write"], # Required for all tools
DAuth uses DPoP (Demonstrating Proof-of-Possession) by default. Tokens are cryptographically bound to the client’s key—even if a token is stolen, it’s useless without the corresponding private key.
server = MCPServer( "dpop-server", authorization=AuthorizationConfig( enabled=True, dpop_required=True, ),)
Remember to add these variable to your environment. DAuth works natively with Dedalus SDK, therefore an API key is needed. Get your API key from the dashboard