
localden/remote-auth-mcp-apim-py
Developer toolsЭта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал
Удаленный MCP-сервер с поддержкой Azure API Management
Обзор
Этот образец показывает, как развернуть MCP-сервер, защищенный идентификатором Entra, на Azure. Образец также использует шаблон авторизации, где клиент сначала приобретает токен для MCP-сервера, а затем использует поток пополам для обмена его на токен, который может быть использован с Microsoft Graph. Все это тоже делается совершенно негласно. Эта выборка демонстрирует, как создать защищенный MCP-сервер с Entra ID, реализуя схемы динамической регистрации клиентов OAuth 2.0 и потока PKCE, которые работают вокруг текущих пробелов в нативной поддержке Entra ID для этих стандартов. Хотя он демонстрирует технические возможности, он предназначен только для образовательных и концептуальных целей. Для производственных сценариев рассмотрите возможность использования установленных шаблонов аутентификации с предварительно зарегистрированными приложениями и стандартными потоками OAuth.
Обзор (машинный перевод)
Этот образец показывает, как развернуть MCP-сервер, защищенный идентификатором Entra, на Azure.
Образец также использует шаблон авторизации, где клиент сначала приобретает токен для MCP-сервера , а затем использует поток от начала до конца, чтобы обменять его на токен, который можно использовать с Microsoft Graph. Все это тоже делается совершенно негласно.
️ Важно: экспериментальная реализация
[!Важно] Это экспериментальная реализация и не должна использоваться в производственных сценариях.
Этот образец демонстрирует, как построить защищенный MCP-сервер с Entra ID, реализуя динамические схемы регистрации клиентов OAuth 2.0 и PKCE, которые работают вокруг текущих пробелов в встроенной поддержке Entra ID для этих стандартов. Хотя он демонстрирует технические возможности, он предназначен только для образовательных и концептуальных целей.
Для производственных сценариев рассмотрите возможность использования установленных шаблонов аутентификации с предварительно зарегистрированными приложениями и стандартными потоками OAuth.
Что это такое
Функции Azure Azure API Management
- ↓ Бицеп Python Разработчик Azure CLI
[!ПРИМЕЧАНИЕ]
Эта страница переведена автоматически. Технические детали смотрите в оригинале.
README
Показан фрагмент оригинального README. Открыть оригинал.
🤫 Authenticated Remote MCP Server
This sample shows how to deploy an Entra ID-protected MCP server on Azure.
The sample also uses an authorization pattern where the client acquires a token for the MCP server first, and then uses on-behalf-of flow to exchange it for a token that can be used with Microsoft Graph. It does all this in an entirely secretless manner too.
⚠️ Important: Experimental Implementation
[!IMPORTANT] This is an experimental implementation and should NOT be used in production scenarios.
This sample demonstrates how to build a protected MCP server with Entra ID by implementing OAuth 2.0 Dynamic Client Registration and PKCE flow patterns that work around current gaps in Entra ID’s native support for these standards. While it showcases the technical possibilities, it’s intended for educational and proof-of-concept purposes only.
For production scenarios, consider using established authentication patterns with pre-registered applications and standard OAuth flows.
What it uses
[!NOTE] You can use the Model Context Protocol Inspector or Visual Studio Code to test this MCP server.
How the Authorization Flow Works
This implementation uses a sophisticated OAuth 2.0 flow with PKCE (Proof Key for Code Exchange) to securely authenticate MCP clients. Here’s how it all fits together:
sequenceDiagram
participant Client as MCP Client
participant Browser as User's Browser
participant APIM as API Management
participant Entra as Entra ID
participant Function as Azure Function
participant Graph as Microsoft Graph
Note over Client,Graph: 1. Discovery & Registration
Client->>APIM: GET /.well-known/oauth-authorization-server
APIM->>Client: OAuth metadata (authorization_endpoint, token_endpoint, etc.)
Client->>APIM: POST /register (Dynamic Client Registration)
Note over APIM: Store client info in CosmosDBGenerate unique client_id
APIM->>Client: Client credentials (client_id, no secret)
Note over Client,Graph: 2. Authorization with PKCE
Note over Client: Generate code_verifier & code_challenge
Client->>Browser: Open authorization URL with PKCE params
Browser->>APIM: GET /authorize?client_id=...&code_challenge=...
Установка
npx @modelcontextprotocol/[email protected]