Skip to content

Commit c1e5fc6

Browse files
committed
add videos
1 parent 3ca5c1a commit c1e5fc6

File tree

39 files changed

+77
-0
lines changed

39 files changed

+77
-0
lines changed

exercises/01.discovery/01.problem.cors/README.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# CORS
22

3+
<EpicVideo url="https://www.epicai.pro/workshops/day-7-8-mcp-auth/cors-fibqe" />
4+
35
👨‍💼 In our MCP server's case, users will always be accessing us from either a different domain or a desktop application. This means every single request is cross-origin by nature, making CORS headers absolutely essential for our server to function at all.
46

57
If we can't handle cross-origin requests properly, users will encounter frustrating errors and won't be able to access the server's capabilities from their preferred applications or domains. The problem is: how do we enable secure cross-origin communication while maintaining the security standards that protect our users and server?
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# CORS
22

3+
<EpicVideo url="https://www.epicai.pro/workshops/day-7-8-mcp-auth/cors-fibqe/solution" />
4+
35
👨‍💼 Excellent work! Now our users can connect to our server from any domain without encountering frustrating CORS policy errors.
46

57
This improvement means users get seamless access to our MCP server's capabilities regardless of where they're connecting from. Whether they're using VS Code, a web application, or any other MCP client, the connection just works. This is exactly what users expect from a modern, accessible MCP server.

exercises/01.discovery/02.problem.as/README.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Auth Server Metadata
22

3+
<EpicVideo url="https://www.epicai.pro/workshops/day-7-8-mcp-auth/auth-server-metadata-g2r2y" />
4+
35
👨‍💼 Now that clients can connect to our MCP server from any domain, they need to be able to discover how to authenticate with our system. When clients want to access protected resources or perform actions that require authentication, they need to know where to go and what methods are available.
46

57
The problem is: how do we provide clients with the information they need to authenticate with our OAuth server? Without this metadata, clients will be stuck because they can't figure out authentication endpoints and supported features.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Auth Server Metadata
22

3+
<EpicVideo url="https://www.epicai.pro/workshops/day-7-8-mcp-auth/auth-server-metadata-g2r2y/solution" />
4+
35
👨‍💼 Fantastic progress! Now, clients can seamlessly discover how to authenticate with our system by accessing the standardized `/.well-known/oauth-authorization-server` endpoint. This means any MCP-compliant client can automatically find out where to register, authorize, and obtain tokens—removing guesswork and enabling smooth, standards-based integration.
46

57
By relaying the OAuth server's metadata, we've made our MCP server a true authentication discovery hub. This empowers users to connect their tools and applications with confidence, knowing they have all the information needed for secure authentication.

exercises/01.discovery/03.problem.pr/README.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Protected Resource
22

3+
<EpicVideo url="https://www.epicai.pro/workshops/day-7-8-mcp-auth/protected-resource-8kue7" />
4+
35
👨‍💼 For our journaling app it's crucial that clients can discover how to interact with our resource server in a standards-compliant way. The Model Context Protocol (MCP) and OAuth require that we expose a public metadata endpoint so that any client can learn how to authenticate and what endpoints are available. This endpoint must be accessible to everyone, without requiring authentication, because it's the first step in the OAuth discovery process.
46

57
But not all protected resources are the same! In a large system, you might have multiple APIs or services, each with its own protected data—think: user profiles, journal entries, or analytics. Each of these can be considered a separate "protected resource" in OAuth terms. To support this, the OAuth and MCP specifications allow for multiple resource metadata endpoints, each describing a different protected resource.

exercises/01.discovery/03.solution.pr/README.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Protected Resource
22

3+
<EpicVideo url="https://www.epicai.pro/workshops/day-7-8-mcp-auth/protected-resource-8kue7/solution" />
4+
35
👨‍💼 Outstanding achievement! Now, any client can discover how to interact with our journaling resource server in a standards-compliant way. By exposing the public `/.well-known/oauth-protected-resource/mcp` metadata endpoint, we've made it possible for clients to programmatically learn how to authenticate and which authorization servers to use—without any guesswork or manual configuration.
46

57
This means that as our system grows, each protected resource (like user profiles, journal entries, or analytics) can have its own discoverable endpoint, making integration seamless for all clients. Users benefit from a smoother onboarding experience, and developers can confidently build on top of our platform knowing that discovery is simple and future-proof.

exercises/01.discovery/FINISHED.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Metadata Discovery
22

3+
<EpicVideo url="https://www.epicai.pro/workshops/day-7-8-mcp-auth/outro-to-metadata-discovery-vmqxq" />
4+
35
Congratulations! You've completed the first step in making your MCP server discoverable and accessible to any standards-compliant client.
46

57
In this exercise, you:

exercises/01.discovery/README.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Metadata Discovery
22

3+
<EpicVideo url="https://www.epicai.pro/workshops/day-7-8-mcp-auth/intro-to-metadata-discovery-7idpi" />
4+
35
Modern applications need a way for clients to discover how to authenticate and interact with servers securely. In the Model Context Protocol (MCP), this is achieved through standardized metadata endpoints that describe both the resource server (your MCP server) and its associated authorization server.
46

57
Without this discovery mechanism, clients would have to guess or hardcode authentication details, leading to brittle integrations and poor user experience.

exercises/02.init/01.problem.authenticate/README.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# Authenticate Header
22

3+
<EpicVideo url="https://www.epicai.pro/workshops/day-7-8-mcp-auth/authenticate-header-0n13b" />
4+
35
👨‍💼 In EpicMe, the `Authorization` header is the gatekeeper for every journal entry. Its job is simple but critical: make sure that only requests with valid credentials can access or change journal data. If a request doesn't include this header, it shouldn't get through—no exceptions. Once the client has an auth token, it'll send that token in the `Authorization` header. If that header doesn't exist, then we know they don't have a token and shouldn't be able to access our server.
46

57
But we can help them out by telling them what they need to do to get access. This is where the `WWW-Authenticate` header comes in. It tells the client what kind of authentication is required.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
# Authenticate Header
22

3+
<EpicVideo url="https://www.epicai.pro/workshops/day-7-8-mcp-auth/authenticate-header-0n13b/solution" />
4+
35
👨‍💼 Fantastic progress! We've just ensured that every request to our journal app is properly challenged for credentials. Now, if a client tries to access protected resources without an Authorization header, the server responds with a `401 Unauthorized` and a clear `WWW-Authenticate` header. This makes it obvious to clients what they need to do next, improving both security and user experience (while keeping us complient with the OAuth and MCP Authorization spec). Only authenticated users can move forward, keeping journal data safe and access predictable for everyone.

0 commit comments

Comments
 (0)