LR

localden/remote-auth-mcp-apim-py

Developer tools

Эта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал

31 stars 13 forks Качество 54 Тренд 11MIT

Удаленный 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=...
Открыть полный README на GitHub

Установка

npx @modelcontextprotocol/[email protected]
Новичок в MCP? Начните с руководства на mcpskill.org →