๐ OAuth 2.0์ผ๋ก ๋ณด์ MCP ์๋ฒ ์ฐ๋ํ๊ธฐ
OAuth 2.0 ์ธ์ฆ์ผ๋ก ๋ณดํธ๋ MCP ์๋ฒ๋ฅผ Microsoft Copilot Studio ์์ด์ ํธ์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ค์ตํฉ๋๋ค.
์๋ฌธ ๋ฒ์ญ ๊ฒ์๋ฌผ โ ์ด ๊ธ์ Copilot Studio Agent Academy์ ์๋ฌธ ๐ Secure an MCP Server with OAuth 2.0์ ํ๊ธ๋ก ์ฎ๊ธด ๊ฒ์ ๋๋ค. ์๋ฌธ ํํ์ด ์ฐ์ ํฉ๋๋ค.
๐ OAuth 2.0์ผ๋ก ๋ณด์ MCP ์๋ฒ ์ฐ๋ํ๊ธฐ

์์ด์ ํธ ์ฌ๋ฌ๋ถ, ์ด๋ฒ ๋ฏธ์ Operation Clearance์ ๋ชฉํ๋ OAuth 2.0 ์ธ์ฆ์ผ๋ก ๋ณดํธ๋ MCP ์๋ฒ๋ฅผ Microsoft Copilot Studio ์์ด์ ํธ์ ์ฐ๊ฒฐํ๋ ๊ฒ์ ๋๋ค. ํ ํฐ ์์ด๋ ์ ๊ทผ ๋ถ๊ฐ. Entra ID์ ์๊ฒฉ์ฆ๋ช ์ ๋ฑ๋กํ๊ณ , Authorization Code Flow๋ฅผ ์ฐ๊ฒฐํ๊ณ , ์ธ์ฆ๋ ์ด์์๋ง HR ์ฑ์ฉ ํ๋ณด ํ์ผ์ ์ ๊ทผํ ์ ์์์ ์ฆ๋ช ํฉ๋๋ค. ๐ฏ๐
์ฐธ๊ณ : ์ด ๋ฏธ์ ์ ์ Copilot Studio ์์ฑ ํ๊ฒฝ(New Experience) ๊ธฐ์ค์ผ๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
์ด ๋ฏธ์ ์ Microsoft Copilot Studio โค๏ธ MCP ๋ฏธ์ ์ ๊ฐ๋ ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์ด์ ๋ฏธ์ ์์๋ ์ธ์ฆ์ด ์๋ MCP ์๋ฒ๋ฅผ ๋ค๋ค์ต๋๋ค. ์ฌ๊ธฐ์๋ ์ปค์คํ MCP ์๋ฒ๋ฅผ OAuth 2.0 ์ธ์ฆ์ผ๋ก ๋ณดํธํฉ๋๋ค.
๐ง ๋ง๋ค ๊ฒ๋ค
- OAuth 2.0 JWT bearer ํ ํฐ์ ๊ฒ์ฆํ๋ ์ฌ์ ์ ์ HR MCP ์๋ฒ (.NET)
- ๋ ๊ฐ์ Microsoft Entra ID ์ฑ ๋ฑ๋ก โ ๋ฐฑ์๋(API)์ฉ๊ณผ ํด๋ผ์ด์ธํธ(Copilot Studio)์ฉ
- OAuth 2.0 ์ธ์ฆ์ ์ฌ์ฉํด ๋ณด์ MCP ๋๊ตฌ๋ฅผ ํธ์ถํ๋ Copilot Studio ์์ด์ ํธ
โ๏ธ ์ฌ์ ์ค๋น
- Microsoft Copilot Studio ์ฒดํํ ๋๋ ์ ๋ฃ ๊ณ์ . ๊ณ์ ์ด ์๋ค๋ฉด ์ฝ์ค ์ค์ ์๋ด๋ฅผ ์ฐธ๊ณ ํ์ธ์.
- Microsoft Entra ID์ ์ฑ์ ๋ฑ๋กํ๊ณ ๊ด๋ฆฌ์ ๋์๋ฅผ ๋ถ์ฌํ ์ ์๋ ๊ถํ.
- ๋ก์ปฌ์ Visual Studio Code, .NET SDK, dev tunnel CLI ์ค์น.
์ฐธ๊ณ : Lab 1.1๊ณผ 1.2๋ ๋ก์ปฌ ๋จธ์ ๊ณผ Entra ๊ด๋ฆฌ ์ผํฐ์์ ์งํํฉ๋๋ค. Lab 1.3โ1.5๋ Copilot Studio์์ ์งํํฉ๋๋ค. ๋ฏธ์ ์ ์ฒด์์ ์๋ฒ์ dev tunnel์ ๊ณ์ ์คํ ์ํ๋ก ์ ์งํ์ธ์.
OAuth 2.0 Authorization Code Flow๋?
OAuth 2.0์ ์์ด์ ํธ์ ๋ณด์ ๊ฒ๋ฌธ์๋ก ์๊ฐํ๋ฉด ๋ฉ๋๋ค. ์ด ๋ฏธ์ ์์์ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฌ์ฉ์ ์ธ์ฆ โ ์์ด์ ํธ์์ MCP ๋๊ตฌ๋ฅผ ํธ์ถํ๋ฉด Microsoft Entra ID ๋ก๊ทธ์ธ์ ์์ฒญํฉ๋๋ค.
- ์ธ์ฆ ์ฝ๋ ๋ฐ๊ธ โ ๋ก๊ทธ์ธ ํ Entra ID๊ฐ ๋ฆฌ๋๋ ์ URI๋ฅผ ํตํด Copilot Studio๋ก ์ธ์ฆ ์ฝ๋๋ฅผ ๋ฐํํฉ๋๋ค.
- ํ ํฐ ๊ตํ โ Copilot Studio๊ฐ ๊ทธ ์ฝ๋(๋ฐ ํด๋ผ์ด์ธํธ ์๊ฒฉ์ฆ๋ช )๋ฅผ ์ก์ธ์ค ํ ํฐ์ผ๋ก ๊ตํํฉ๋๋ค.
- API ์ ๊ทผ โ Copilot Studio๊ฐ ์ก์ธ์ค ํ ํฐ์ MCP ์๋ฒ์ ์ ๋ฌํ๊ณ , ์๋ฒ๋ ์ฒ๋ฆฌ ์ ํ ํฐ์ ๊ฒ์ฆํฉ๋๋ค.
์ด๋ฅผ ํตํด ์ฌ์ฉ์ ์๊ฒฉ์ฆ๋ช ์ด ์๋ฒ์ ๋ ธ์ถ๋์ง ์๊ณ , ํ ํฐ์ ์๋ช ๊ณผ ๋ฒ์๊ฐ ์ ํ๋๋ฉฐ, ์๋ฒ๊ฐ ์ ์๊ณผ ๊ถํ์ ๊ฒ์ฆํ ์ ์์ต๋๋ค.
๐ฏ ์๋๋ฆฌ์ค
Zava์ HR ํ์ ๋ฏผ๊ฐํ ์ธ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ ธ์ถํ๋ ํ๋ณด ๊ด๋ฆฌ MCP ์๋ฒ๋ฅผ ์ด์ํ๊ณ ์์ต๋๋ค. ๋น์ธ์ฆ ์๋ํฌ์ธํธ๋ ํ๋ก๋์ ์ ๋ถ์ ํฉํฉ๋๋ค. ์ฌ๋ฌ๋ถ์ ์๋ฌด: OAuth 2.0์ผ๋ก ๋ณดํธํ๊ณ , Copilot Studio ์์ด์ ํธ์ ์ฐ๊ฒฐํด ์ธ์ฆ๋ ์ง์๋ง ํ๋ณด๋ฅผ ์กฐํยท๊ฒ์ยท์ถ๊ฐยท์์ ยท์ญ์ ํ ์ ์๋๋ก ๋ง๋ญ๋๋ค.
๐งช Lab 1.1 โ ๋ณด์ MCP ์๋ฒ ์ค์
๋ณด์ HR MCP ์๋ฒ๋ OAuth 2.0์ผ๋ก ๋ณดํธ๋ ํ์ค HR ํ๋ณด ์๋ฒ์ ๋๋ค. ๋์ผํ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- list_candidates โ ์ ์ฒด ํ๋ณด ๋ชฉ๋ก ๋ฐํ
- search_candidates โ ์ด๋ฆ, ์ด๋ฉ์ผ, ๊ธฐ์ , ์ญํ ๋ก ๊ฒ์
- add_candidate โ ์ ํ๋ณด ์ถ๊ฐ
- update_candidate โ ์ด๋ฉ์ผ๋ก ๊ธฐ์กด ํ๋ณด ์ ๋ณด ์์
- remove_candidate โ ์ด๋ฉ์ผ๋ก ํ๋ณด ์ญ์
์ฐจ์ด์ : ๋ชจ๋ ์์ฒญ์ ์ ํจํ OAuth 2.0 ์ก์ธ์ค ํ ํฐ์ด Authorization ํค๋์ ํ์ํ๋ฉฐ, Entra ID ํ
๋ํธ์ ๋ํด JWT๋ก ๊ฒ์ฆ๋ฉ๋๋ค.
-
./assets/hr-mcp-server-secured/์ ์๋ ์ฌ์ ์ ์ ๋ณด์ HR MCP ์๋ฒ ํ์ผ์ ์ฝ๋๋ค. -
Visual Studio Code๋ก ํด๋๋ฅผ ์ฝ๋๋ค. ์๋ฒ์๋ OAuth 2.0 ๋ณด์์ด ์ด๋ฏธ ๊ตฌํ๋์ด ์์ต๋๋ค.
ํ๋ก์ ํธ์ ์ฃผ์ ๊ตฌ์ฑ ์์:
Configuration/HRMCPServerConfiguration.csโ OAuth ํฌํจ ๊ตฌ์ฑ ์ค์ Data/candidates.jsonโ ํ๋ณด ๋ชฉ๋กServices/โICandidateService.cs/CandidateService.cs,IAuthorizationService.cs/AuthorizationService.csTools/HRTools.cs,Tools/Models.csโ MCP ๋๊ตฌ ๋ฐ ๋ฐ์ดํฐ ๋ชจ๋ธappsettings.json.sampleโ ๊ตฌ์ฑ ํ ํ๋ฆฟProgram.csโ ์ง์ ์ . MCP ์๋ฒ๊ฐ JWT ์ธ์ฆ์ ์ด๊ธฐํํ๋ ๊ณณ
์ฐธ๊ณ : ์๋ฒ์๋ Entra ID ํ ๋ํธ ๊ธฐ์ค์ผ๋ก ์์ ํ ํฐ์ ๊ฒ์ฆํ๋ JWT bearer ์ธ์ฆ ๋ฏธ๋ค์จ์ด๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ธ์ฆ๋ ์ฌ์ฉ์๋ง HR ๋๊ตฌ์ ์ ๊ทผํ ์ ์์ต๋๋ค.

๐งช Lab 1.2 โ Microsoft Entra ID ์ฑ ๋ฑ๋ก ์ค์
๋ ๊ฐ์ ์ฑ์ ๋ฑ๋กํฉ๋๋ค. ํ๋๋ HR MCP ์๋ฒ(๋ฐฑ์๋/API)์ฉ, ํ๋๋ Copilot Studio ํด๋ผ์ด์ธํธ(ํ๋ฐํธ์๋)์ฉ์ ๋๋ค.
HR MCP ์๋ฒ ์ฑ ๋ฑ๋ก (๋ฐฑ์๋)
-
ํ์ฌ ๊ณ์ ์ผ๋ก https://entra.microsoft.com์ ์ฝ๋๋ค.
-
์ผ์ชฝ ํ์์์ ์ฑ ๋ฑ๋ก โ + ์ ๋ฑ๋ก์ ์ ํํฉ๋๋ค.

Entra ID ์ฑ ๋ฑ๋ก ํ๋ฉด -
๋ค์ ์ค์ ์ผ๋ก ์ฑ์ ๊ตฌ์ฑํฉ๋๋ค.
- ์ด๋ฆ:
HR MCP Server - ์ง์๋๋ ๊ณ์ ์ ํ: ์ด ์กฐ์ง ๋๋ ํฐ๋ฆฌ์ ๊ณ์ ๋ง
- ๋ฆฌ๋๋ ์ URI: ์ง๊ธ์ ๋น์ ๋ (๋์ค์ ๊ตฌ์ฑ)
- ์ด๋ฆ:
-
๋ฑ๋ก์ ์ ํํด ์ฑ์ ๋ง๋ญ๋๋ค.

์ฑ ๋ฑ๋ก ์๋ฃ ๋ฒํผ
๋ฐฑ์๋์์ API ๋ ธ์ถ
-
HR MCP Server ์ฑ์์ API ๋ ธ์ถ์ ์ ํํฉ๋๋ค.
-
์ ํ๋ฆฌ์ผ์ด์ ID URI ์์ ์ถ๊ฐ๋ฅผ ์ ํํ๊ณ , ๊ธฐ๋ณธ๊ฐ(
api://<client-id>)์ ๊ทธ๋๋ก ์๋ฝํ ๋ค ์ ์ฅํฉ๋๋ค.
API ๋ ธ์ถ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ID URI ์ ์ฅ -
์ด API์์ ์ ์ํ ๋ฒ์์์ + ๋ฒ์ ์ถ๊ฐ๋ฅผ ์ ํํ๊ณ ๋ค์์ ์ค์ ํฉ๋๋ค.
- ๋ฒ์ ์ด๋ฆ:
HR.Manage - ๋์ ๊ฐ๋ฅ ๋์: ๊ด๋ฆฌ์ ๋ฐ ์ฌ์ฉ์
- ๊ด๋ฆฌ์ ๋์ ํ์ ์ด๋ฆ:
Manage HR data - ๊ด๋ฆฌ์ ๋์ ์ค๋ช
:
Allows managing HR data as an Admin - ์ฌ์ฉ์ ๋์ ํ์ ์ด๋ฆ:
Manage HR data - ์ฌ์ฉ์ ๋์ ์ค๋ช
:
Allows managing HR data as a user - ์ํ: ์ฌ์ฉ
- ๋ฒ์ ์ด๋ฆ:
-
๋ฒ์ ์ถ๊ฐ๋ฅผ ์ ํํฉ๋๋ค.

HR.Manage ๋ฒ์ ์ถ๊ฐ -
๊ฐ์ ํ์ด์ง์์ ์ ํ๋ฆฌ์ผ์ด์ (ํด๋ผ์ด์ธํธ) ID์ ๋๋ ํฐ๋ฆฌ(ํ ๋ํธ) ID๋ฅผ ๋ฉ๋ชจํฉ๋๋ค โ ๋์ค์ ํ์ํฉ๋๋ค.
Copilot Studio ํด๋ผ์ด์ธํธ ์ฑ ๋ฑ๋ก (ํ๋ฐํธ์๋)
์ด์ Copilot Studio๊ฐ HR MCP Server๋ฅผ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ ์ฑ์ ๋ง๋ญ๋๋ค.
-
์ฑ ๋ฑ๋ก์์ + ์ ๋ฑ๋ก์ ์ ํํฉ๋๋ค.
-
๋ค์ ์์ฑ์ผ๋ก ๊ตฌ์ฑํ๊ณ ๋ฑ๋กํฉ๋๋ค.
- ์ด๋ฆ:
HR MCP Consumer - ์ง์๋๋ ๊ณ์ ์ ํ: ์ด ์กฐ์ง ๋๋ ํฐ๋ฆฌ์ ๊ณ์ ๋ง
- ๋ฆฌ๋๋ ์ URI: ๋น์ ๋ (Copilot Studio๊ฐ ๋์ค์ ์ ๊ณต)
- ์ด๋ฆ:
ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ ๋ง๋ค๊ธฐ
-
HR MCP Consumer ์ฑ์์ ์ธ์ฆ์ ๋ฐ ๋น๋ฐ โ + ์ ํด๋ผ์ด์ธํธ ์ํธ๋ฅผ ์ ํํฉ๋๋ค.
-
์ค๋ช ๊ณผ ๋ง๋ฃ ๊ธฐ๊ฐ(์: 12๊ฐ์)์ ์ค์ ํ๊ณ ์ถ๊ฐ๋ฅผ ์ ํํฉ๋๋ค.
์ค์: ๋น๋ฐ ๊ฐ์ ์ฆ์ ๋ณต์ฌํ๊ณ ์์ ํ๊ฒ ์ ์ฅํ์ธ์ โ ์ดํ์๋ ๋ค์ ํ์๋์ง ์์ต๋๋ค.
API ๊ถํ ๊ตฌ์ฑ
-
API ๊ถํ โ + ๊ถํ ์ถ๊ฐ โ ๋ด ์กฐ์ง์์ ์ฌ์ฉํ๋ API๋ฅผ ์ ํํ๊ณ HR MCP Server๋ฅผ ๊ฒ์ํด ์ ํํฉ๋๋ค.

HR MCP Server API ์ ํ -
์์๋ ๊ถํ์ ์ ํํ๊ณ HR.Manage๋ฅผ ์ฒดํฌํ ๋ค ๊ถํ ์ถ๊ฐ๋ฅผ ์ ํํฉ๋๋ค.

HR.Manage ์์๋ ๊ถํ ์ถ๊ฐ -
Microsoft Graph ์์๋ ๊ถํ๋ ์ถ๊ฐํฉ๋๋ค: + ๊ถํ ์ถ๊ฐ โ Microsoft Graph โ ์์๋ ๊ถํ โ email, openid, profile, User.Read ์ ํ โ ๊ถํ ์ถ๊ฐ.
-
[ํ ๋ํธ]์ ๋ํ ๊ด๋ฆฌ์ ๋์ ๋ถ์ฌ๋ฅผ ์ ํํ๊ณ ์๋ก ํ์ธํฉ๋๋ค.

๊ด๋ฆฌ์ ๋์ ๋ถ์ฌ ์๋ฃ -
๊ฐ์ ํ์ด์ง์์ ์ ํ๋ฆฌ์ผ์ด์ (ํด๋ผ์ด์ธํธ) ID๋ฅผ ๋ฉ๋ชจํฉ๋๋ค(๋น๋ฐ ๊ฐ์ ์ด๋ฏธ ์ ์ฅํด ๋์์ต๋๋ค).
MCP ์๋ฒ ๊ตฌ์ฑ ๋ฐ ์คํ
-
appsettings.json.sample์ ๋ณต์ฌํดappsettings.json์ผ๋ก ๋ง๋ค๊ณAzureAd์น์ ์ ์ ๋ฐ์ดํธํฉ๋๋ค.{ "AzureAd": { "Instance": "https://login.microsoftonline.com/", "TenantId": "[YOUR_TENANT_ID]", "ClientId": "[YOUR_HR_MCP_SERVER_CLIENT_ID]", "Audience": "[YOUR_HR_MCP_SERVER_CLIENT_ID]", "Scopes": "[YOUR_APPLICATION_ID_URI]/HR.Manage" } }[YOUR_TENANT_ID],[YOUR_HR_MCP_SERVER_CLIENT_ID]๋ ๋ฐฑ์๋ ์ฑ์ ๊ฐ์ผ๋ก,[YOUR_APPLICATION_ID_URI]๋ ์ ํ๋ฆฌ์ผ์ด์ ID URI(์:api://xxxxxxxx-...)๋ก ๊ต์ฒดํฉ๋๋ค. -
ํ์ผ์ ์ ์ฅํ๊ณ ์๋ฒ๋ฅผ ์์ํฉ๋๋ค.
dotnet run์ ํจํ ์ก์ธ์ค ํ ํฐ ์์ด ๋ค์ด์ค๋ ๋ชจ๋ ์์ฒญ์ ์ด์ 401 Unauthorized๋ก ๊ฑฐ๋ถ๋ฉ๋๋ค.
dev tunnel๋ก ์๋ฒ ์ธ๋ถ ๋ ธ์ถ
-
dev tunnel์ด ์ค์น๋์ด ์์ง ์๋ค๋ฉด dev tunnels ์์ ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํด ์ค์นํ ํ ํฐ๋์ ํธ์คํ ํฉ๋๋ค.
์ค์:
hr-mcp-secured๋ฅผ ๊ณ ์ ํ ์ด๋ฆ(์:hr-mcp-secured-alex)์ผ๋ก ๊ต์ฒดํ์ธ์.devtunnel create hr-mcp-secured -a --host-header unchanged devtunnel port create hr-mcp-secured -p 47002 devtunnel host hr-mcp-secured -
๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์ฐ๊ฒฐ URL์ ๋ณต์ฌํด ์ ์ฅํฉ๋๋ค โ Copilot Studio์ Entra ID์์ ์ฌ์ฉํฉ๋๋ค.

dev tunnel ์คํ ๋ฐ ์ฐ๊ฒฐ URL ํ์ธ
ํ: ๋ฏธ์
์ ์ฒด์์ ์๋ฒ(dotnet run)์ ํฐ๋(devtunnel host hr-mcp-secured)์ ๋ชจ๋ ์คํ ์ํ๋ก ์ ์งํ์ธ์.
์ ํ๋ฆฌ์ผ์ด์ ID URI ๋ฐ ๊ตฌ์ฑ ์ ๋ฐ์ดํธ
-
Entra ๊ด๋ฆฌ ์ผํฐ์์ HR MCP Server ์ฑ โ API ๋ ธ์ถ โ ์ ํ๋ฆฌ์ผ์ด์ ID URI ์ ํธ์ง์ ์ ํํ๊ณ ,
api://<guid>๋ฅผ dev tunnel URL(ํํ ์ฌ๋์ ์์ด, ์:https://hr-mcp-secured.devtunnels.ms)๋ก ๊ต์ฒดํ๊ณ ์ ์ฅํฉ๋๋ค. -
appsettings.json์Scopes๊ฐ dev tunnel URL์ ์ฌ์ฉํ๋๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.{ "AzureAd": { "Instance": "https://login.microsoftonline.com/", "TenantId": "[YOUR_TENANT_ID]", "ClientId": "[YOUR_HR_MCP_SERVER_CLIENT_ID]", "Audience": "[YOUR_HR_MCP_SERVER_CLIENT_ID]", "Scopes": "[YOUR_DEVTUNNEL_URL]/HR.Manage" } } -
ํ์ผ์ ์ ์ฅํ๊ณ ์๋ฒ๋ฅผ ์ค์ง(
Ctrl+C)ํ ๋คdotnet run์ผ๋ก ๋ค์ ์์ํฉ๋๋ค.
๐งช Lab 1.3 โ Copilot Studio์์ ์์ด์ ํธ ๋ง๋ค๊ธฐ
์ด์ ๋ณด์ MCP ์๋ฒ๋ฅผ ์ฌ์ฉํ ์์ด์ ํธ๋ฅผ ๋ง๋ญ๋๋ค.
-
Microsoft Copilot Studio๋ก ์ด๋ํด ๋ก๊ทธ์ธํฉ๋๋ค. ํ ํ์ด์ง์์ ๋๋ ๋น๋ํ ํญ๋ชฉ ์ ํ ์๋ ์์ด์ ํธ ์นด๋๋ฅผ ์ ํํฉ๋๋ค. Build ํธ์ง๊ธฐ๋ก ๋ฐ๋ก ์ด๋๋ฉ๋๋ค.

์์ด์ ํธ ๋ง๋ค๊ธฐ -
์์ด์ ํธ ์ด๋ฆ ์ง์ ํ๋์ ๋ค์์ ๋ถ์ฌ๋ฃ์ต๋๋ค.
HR Candidate Management (Secured)
์์ด์ ํธ ์ด๋ฆ ์ ๋ ฅ ํ๋ฉด -
Build ํญ์ ์ง์นจ ํ๋๋ฅผ ์ ํํ๊ณ ๋ค์์ ๋ถ์ฌ๋ฃ์ต๋๋ค.
You are a helpful HR assistant that specializes in secure candidate management. You can help users search for candidates, check their availability, get detailed candidate information, and add new candidates to the system. All operations require user authentication through OAuth 2.0 to ensure data security and compliance with enterprise policies. Always provide clear and helpful information about candidates, including their skills, experience, contact details, and availability status. -
์ค๋ฅธ์ชฝ ๊ตฌ์ฑ ํจ๋์์ ๋ชจ๋ธ ๋๋กญ๋ค์ด์ ์ด๊ณ GPT-5 Chat์ ์ ํํฉ๋๋ค.

GPT-5 Chat ๋ชจ๋ธ ์ ํ -
์๋จ ๋๊ตฌ ๋ชจ์์์ ์ ์ฅ์ ์ ํํฉ๋๋ค.

์์ด์ ํธ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์๋ฃ -
Build ํญ์ ์ง์ ์น์ ์์ ๋ชจ๋ ์น ์ฌ์ดํธ ๊ฒ์ ์์ค์ X(์ ๊ฑฐ)๋ฅผ ์ ํํด ์ญ์ ํฉ๋๋ค. ์์ด์ ํธ๊ฐ ๋ช ์์ ์ผ๋ก ๊ตฌ์ฑํ ๋๊ตฌ์ ์ง์๋ง ์ฌ์ฉํ๋๋ก ์ ํํฉ๋๋ค.
-
๋ํ ์์ ๋ฌธ๊ตฌ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ์๋จ ๋๊ตฌ ๋ชจ์์์ ์ถ๊ฐ ์ต์ (โฆ) โ ์ค์ โ ์ธ์ฌ๋ง ๋ฐ ํ๋กฌํํธ ํญ โ ์ถ์ฒ ํ๋กฌํํธ ์๋ ์ถ์ฒ ํ๋กฌํํธ ์ถ๊ฐ๋ฅผ ์ ํํ๊ณ ๊ฐ ์ ๋ชฉ๊ณผ ๋ฉ์์ง๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- ์ ๋ชฉ:
List all candidatesโ ๋ฉ์์ง:Show me all candidates in the HR system - ์ ๋ชฉ:
Search candidatesโ ๋ฉ์์ง:Search for candidates with skills in [SKILL] - ์ ๋ชฉ:
Add new candidateโ ๋ฉ์์ง:Add a new candidate with firstname [FIRSTNAME], lastname [LASTNAME], email [EMAIL], role [ROLE], languages [LANGUAGES], and skills [SKILLS]

์ถ์ฒ ํ๋กฌํํธ ๊ตฌ์ฑ ์๋ฃ - ์ ๋ชฉ:
-
์ค์ ์ ๋ซ๊ณ ์ ์ฅ์ ์ ํํฉ๋๋ค.
๐งช Lab 1.4 โ OAuth 2.0์ผ๋ก MCP ๋๊ตฌ ๋ฑ๋ก
์ด์ ๋ณด์ MCP ์๋ฒ๋ฅผ ๋๊ตฌ๋ก ์ถ๊ฐํ๊ณ OAuth 2.0์ ์ฐ๊ฒฐํฉ๋๋ค.
-
์ค๋ฅธ์ชฝ ๊ตฌ์ฑ ํจ๋์ ๋๊ตฌ ์น์ ์์ ๋๊ตฌ ์ถ๊ฐ๋ฅผ ์ ํํฉ๋๋ค. ๋๊ตฌ ์ถ๊ฐ ๋ํ ์์์์ ์ปค์คํ ์ถ๊ฐ(+) ์ปจํธ๋กค์ ์ ํํ๊ณ Model Context Protocol(MCP) ์ ์ ํํด ์ ์ปค์คํ MCP ์๋ฒ๋ฅผ ๋ง๋ญ๋๋ค.

์ปค์คํ MCP ๋๊ตฌ ์ถ๊ฐ ํ๋ฉด -
MCP ์๋ฒ ์ถ๊ฐ ๋ํ ์์์์ ๊ธฐ๋ณธ ์ค์ ์ ์ ๋ ฅํฉ๋๋ค.
- ์๋ฒ ์ด๋ฆ:
HR MCP Server Secured - ์๋ฒ ์ค๋ช
:
Securely manages HR candidates with OAuth 2.0 authentication for enterprise compliance - ์๋ฒ URL: ์์ ์ ์ฅํ dev tunnel ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์ฐ๊ฒฐ URL

MCP ์๋ฒ ์ด๋ฆ, ์ค๋ช , URL ์ ๋ ฅ - ์๋ฒ ์ด๋ฆ:
-
์ธ์ฆ ์๋ OAuth 2.0์ ์ ํํ๊ณ ๊ตฌ์ฑ ์ ํ์ ์๋์ผ๋ก ์ค์ ํ ๋ค ๋ค์์ ์ ๋ ฅํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ ID: HR MCP Consumer ์ฑ์ ์ ํ๋ฆฌ์ผ์ด์ (ํด๋ผ์ด์ธํธ) ID
- ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ: ์์ ์ ์ฅํ ํด๋ผ์ด์ธํธ ์ํธ ๊ฐ
- ์ธ์ฆ URL:
https://login.microsoftonline.com/[YOUR_TENANT_ID]/oauth2/v2.0/authorize - ํ ํฐ URL:
https://login.microsoftonline.com/[YOUR_TENANT_ID]/oauth2/v2.0/token - ์๋ก ๊ณ ์นจ ํ ํฐ URL:
https://login.microsoftonline.com/[YOUR_TENANT_ID]/oauth2/v2.0/token - ๋ฒ์: ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ๋ฒ์ ์ ๋ ฅ
์ค์: ์ด ๋ฒ์๋ ์์์ ๋๋ค โ ์ฐ๊ฒฐ์ด ํ๋ฆฝ๋๋ฉด ๋ณด์ ์๋ฒ์ ์ค์ ๋ฒ์(
[YOUR_DEVTUNNEL_URL]/HR.Manage)๋ก ๊ต์ฒดํฉ๋๋ค.
OAuth 2.0 ์๋ ๊ตฌ์ฑ ํ๋ฉด -
์ถ๊ฐ๋ฅผ ์ ํํด MCP ์๋ฒ ๊ตฌ์ฑ์ ๋ง๋ญ๋๋ค.
-
๋๊ตฌ๊ฐ ๋ง๋ค์ด์ง๋ฉด Copilot Studio๊ฐ ๋ฆฌ๋๋ ์ URL์ ์์ฑํฉ๋๋ค. ์ด๋ฅผ ๋ณต์ฌํ ๋ค Entra ๊ด๋ฆฌ ์ผํฐ์์ HR MCP Consumer ์ฑ โ ์ธ์ฆ โ + ํ๋ซํผ ์ถ๊ฐ/+ ๋ฆฌ๋๋ ์ URI ์ถ๊ฐ โ ์น์ ์ ํํ๊ณ URL์ ๋ถ์ฌ๋ฃ์ด ๊ตฌ์ฑํฉ๋๋ค.

Entra ID์ ๋ฆฌ๋๋ ์ URI ๋ฑ๋ก -
(์ ํ ์ฌํญ) ํ๊ฒฝ์ Power Apps ์ปค์คํ ์ปค๋ฅํฐ๊ฐ ํ์ํ๋ค๋ฉด, Power Automate์์ ์ฌ๋ฐ๋ฅธ ํ๊ฒฝ ์ ํ โ ๋ ๋ณด๊ธฐ โ ๋ชจ๋ ๊ฒ์ โ ์ปค์คํ ์ปค๋ฅํฐ๋ก ์ด๋ํด HR MCP Server Secured ์ปค๋ฅํฐ์ ๋ณด์ ํญ์์ ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ, ๋ฆฌ์์ค URL(dev tunnel URL), ๋ฒ์(
HR.Manage)๋ฅผ ์ค์ ํ๊ณ ์ปค๋ฅํฐ ์ ๋ฐ์ดํธ๋ฅผ ์ ํํฉ๋๋ค. -
์ฐ๊ฒฐ ์๋ฃ: ๋๊ตฌ ๊ตฌ์ฑ์์ ์ฐ๊ฒฐ ์ ๋จ โ ์ ์ฐ๊ฒฐ ๋ง๋ค๊ธฐ โ ๋ง๋ค๊ธฐ๋ฅผ ์ ํํ๊ณ ์ ํจํ ํ์ฌ ๊ณ์ ์ผ๋ก ์ธ์ฆํ ๋ค ๋์๋ฅผ ๋ถ์ฌํฉ๋๋ค. ์ดํ ์ถ๊ฐ๋ฅผ ์ ํํฉ๋๋ค.
-
HR MCP Server Secured ๋๊ตฌ ์นฉ์ ์ด์ด
list_candidates,search_candidates,add_candidate,update_candidate,remove_candidate๋ค์ฏ ๊ฐ ๋๊ตฌ๊ฐ ๋ชจ๋ ํ์๋๋์ง ํ์ธํฉ๋๋ค.
๐งช Lab 1.5 โ ์์ด์ ํธ ํ ์คํธ
์ด์ OAuth 2.0์ด ์ ๋๋ก ์งํค๊ณ ์๋์ง ํ์ธํฉ๋๋ค.
-
์๋จ ๋๊ตฌ ๋ชจ์์์ ๊ฒ์๋ฅผ ์ ํํ๊ณ ๊ฒ์๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
-
๋ฏธ๋ฆฌ ๋ณด๊ธฐ ํญ์ ์ ํํฉ๋๋ค. ์๋ฅผ ๋ค์ด List all candidates ์ถ์ฒ ํ๋กฌํํธ๋ฅผ ์ ํํด ๋ฉ์์ง๋ฅผ ์ ์กํฉ๋๋ค.

์ถ์ฒ ํ๋กฌํํธ๊ฐ ์๋ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ํ๋ฉด -
๋ณด์ ๋๊ตฌ๊ฐ ์ฒ์ ํธ์ถ๋๋ฉด ์ธ๋ถ ์๋ฒ์ ์๊ฒฉ์ฆ๋ช ์ ์ฌ์ฉํ๊ฒ ๋๋ ์ธ๋ผ์ธ ๊ถํ ํ์ ์นด๋๊ฐ ํ์๋ฉ๋๋ค. ํ์ฉ์ ์ ํํฉ๋๋ค.
์ฐธ๊ณ : ์ฐ๊ฒฐ์ด ์๊ฑฐ๋ ํ ํฐ์ด ๋ง๋ฃ๋ ๊ฒฝ์ฐ ์ฐ๊ฒฐ ๊ด๋ฆฌ์ ์ด๊ธฐ ๋ฉ์์ง๊ฐ ํ์๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์ฐ๊ฒฐ์ ์ ํํ๊ณ ํ์ฌ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํด ๋์๋ฅผ ๋ถ์ฌํ ๋ค ์ฐ๊ฒฐ์ด ์ฐ๊ฒฐ๋จ ์ํ์ธ์ง ํ์ธํ๊ณ ๋ฉ์์ง๋ฅผ ๋ค์ ์ ์กํฉ๋๋ค.
-
์์ด์ ํธ๊ฐ ๋ณด์ MCP ์๋ฒ๋ฅผ ํธ์ถํ๊ณ ํ๋ณด ๋ชฉ๋ก์ ๋ฐํํ๋์ง ํ์ธํฉ๋๋ค. ๋ค๋ฅธ ๋๊ตฌ๋ ํ ์คํธํด ๋ด ๋๋ค.
Search for candidates with Training skillsGet candidate with email bob.brown@example.comํ: ์ฒซ ์ธ์ฆ ์ดํ ์ก์ธ์ค ํ ํฐ์ด ์บ์๋๋ฏ๋ก ๋ง๋ฃ๋๊ฑฐ๋ ์ทจ์๋์ง ์๋ ํ ๋งค ์์ฒญ๋ง๋ค ์ฌ์ธ์ฆํ ํ์๊ฐ ์์ต๋๋ค.
์๋ฒ ๋ชจ๋ํฐ๋ง: ์์ด์ ํธ ์คํ ์ค .NET ํฐ๋ฏธ๋์ ๊ฐ ๋๊ตฌ ํธ์ถ๊ณผ ์์ Authorization: Bearer ํค๋๊ฐ ๊ธฐ๋ก๋ฉ๋๋ค. ์ด๋ฅผ ํตํด JWT ์ก์ธ์ค ํ ํฐ์ด ์ ์กยท๊ฒ์ฆ๋๋์ง ํ์ธํ ์ ์์ต๋๋ค.
โ ๋ฏธ์ ์๋ฃ!
์ถํํฉ๋๋ค, ์์ด์ ํธ ์ฌ๋ฌ๋ถ โ Operation Clearance ์๋ฃ! Copilot Studio ์์ด์ ํธ๊ฐ ์ด์ OAuth 2.0 ๊ฒ๋ฌธ์๋ฅผ ํต๊ณผํ ํ์๋ง HR ํ๋ณด ํ์ผ์ ์ ๊ทผํฉ๋๋ค.
์ด ๋ฏธ์ ์์ ๋ฌ์ฑํ ๊ฒ๋ค:
โ
๋ณด์ MCP: OAuth 2.0 JWT ํ ํฐ ๊ฒ์ฆ์ด ์ ์ฉ๋ MCP ์๋ฒ ๊ตฌ์ฑ
โ
Entra ID ๋ฑ๋ก: ์์ ํ API ์ ๊ทผ์ ์ํ ๋ฐฑ์๋ ๋ฐ ํด๋ผ์ด์ธํธ ์ฑ ๋ฑ๋ก
โ
Authorization Code Flow: Copilot Studio์์ OAuth 2.0 ์๋ํฌ์๋ ๊ตฌ์ฑ
โ
์ธ์ฆ๋ ๋๊ตฌ ์ฌ์ฉ: ์ํฐํ๋ผ์ด์ฆ๊ธ ์ธ์ฆ์ผ๋ก ๋ณด์ MCP ๋๊ตฌ ์ฌ์ฉ
๐ ์๋ฃ ๋ฐฐ์ง ํ๋

๐ ์ฐธ๊ณ ์๋ฃ
๐ Microsoft Learn MCP Server โ ํธ์คํ ๋ Microsoft Learn Docs MCP Server๋ฅผ ์์ด์ ํธ์ ์ฐ๊ฒฐ
๐ Microsoft Copilot Studio โค๏ธ MCP โ ์ปค์คํ MCP ์๋ฒ ๊ตฌ์ถ ๋ฐ ๋ฐฐํฌ
๐ Copilot Studio MCP ์ฐ๊ฒฐ
๐ Microsoft Entra ID ์ฑ ๋ฑ๋ก