You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: examples/example-fastmcp-mcp/README.md
+119-1Lines changed: 119 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,125 @@ poetry install
10
10
11
11
## Auth0 Tenant Setup
12
12
13
-
For detailed instructions on setting up your Auth0 tenant for MCP server integration, please refer to the [Auth0 Tenant Setup guide](https://github.com/auth0/auth0-auth-js/blob/main/examples/example-fastmcp-mcp/README.md#auth0-tenant-setup).
13
+
### Pre-requisites:
14
+
15
+
This guide uses [Auth0 CLI](https://auth0.github.io/auth0-cli/) to configure an Auth0 tenant for secure MCP tool access. If you don't have it, you can follow the [Auth0 CLI installation instructions](https://auth0.github.io/auth0-cli/) to set it up. Alternatively, all the following configuration steps can be done through the [Auth0 Management Dashboard](https://manage.auth0.com/).
16
+
17
+
### Step 1: Authenticate with Auth0 CLI
18
+
19
+
First, you need to log in to the Auth0 CLI with the correct scopes to manage all the necessary resources.
20
+
21
+
1. Run the login command: This command will open a browser window for you to authenticate. We are requesting a set of
Execute the following command to enable the above mentioned flags through the tenant settings:
44
+
45
+
```
46
+
auth0 tenant-settings update set flags.enable_dynamic_client_registration flags.use_scope_descriptions_for_consent
47
+
```
48
+
49
+
### Step 3: Promote Connections to Domain Level
50
+
51
+
[Learn more](https://auth0.com/docs/authenticate/identity-providers/promote-connections-to-domain-level) about promoting
52
+
connections to domain level.
53
+
54
+
1. List your connections to get their IDs: `auth0 api get connections`
55
+
2. From the list, identify only the connections that should be available to be used with third party applications. For each of those specific connection IDs, run the following command to mark it as a domain-level connection. Replace `YOUR_CONNECTION_ID` with the actual ID (e.g., `con_XXXXXXXXXXXXXXXX`)
56
+
57
+
```
58
+
auth0 api patch connections/YOUR_CONNECTION_ID --data '{"is_domain_connection": true}'
59
+
```
60
+
61
+
### Step 4: Configure the API and Default Audience
62
+
63
+
This step creates the API (also known as a Resource Server) that represents your protected MCP Server and sets it as the
64
+
default for your tenant.
65
+
66
+
1. Create the API: This command registers the API with Auth0, defines its signing algorithm, enables Role-Based Access
67
+
Control (RBAC), and specifies the available scopes. Replace `http://localhost:3001` and `MCP Tools API`
68
+
with your desired identifier and name. Add your tool-specific scopes to the scopes array.
69
+
70
+
Note that `rfc9068_profile_authz` is used instead of `rfc9068_profile` as the token dialect to enable RBAC. [Learn more](https://auth0.com/docs/get-started/apis/enable-role-based-access-control-for-apis#token-dialect-options)
71
+
72
+
```
73
+
auth0 api post resource-servers --data '{
74
+
"identifier": "http://localhost:3001",
75
+
"name": "MCP Tools API",
76
+
"signing_alg": "RS256",
77
+
"token_dialect": "rfc9068_profile_authz",
78
+
"enforce_policies": true,
79
+
"scopes": [
80
+
{"value": "tool:whoami", "description": "Access the WhoAmI tool"},
81
+
{"value": "tool:greet", "description": "Access the Greeting tool"}
82
+
]
83
+
}'
84
+
85
+
```
86
+
87
+
2. Set the Default Audience: This ensures that users logging in interactively get access tokens that are valid for your
88
+
newly created MCP Server. Replace `http://localhost:3001` with the same API identifier you used above.
89
+
90
+
**Note:** This step is currently required but temporary. Without setting a default audience, the issued access tokens will not be scoped specifically to your MCP resource server. Support for RFC 8707 (Resource Indicators for OAuth 2.0) is coming soon, which will provide proper resource targeting. Once available, these instructions will be updated to explain how to enable support for RFC 8707 instead of the default audience approach.
91
+
92
+
```
93
+
auth0 api patch "tenants/settings" --data '{"default_audience": "http://localhost:3001"}'
94
+
```
95
+
96
+
### Step 5: Configure RBAC Roles and Permissions
97
+
98
+
Now, set up roles and assign permissions to them. This allows you to control which users can access which tools.
99
+
100
+
1. Create Roles: For each role you need (e.g., "Tool Administrator", "Tool User"), run the create command.
101
+
102
+
```
103
+
# Example for an admin role
104
+
auth0 roles create --name "Tool Administrator" --description "Grants access to all MCP tools"
0 commit comments