Descope Auth MCP Server Template
Шаблон MCP-сервера с аутентификацией Descope
Простой шаблон сервера FastMCP для Render с полной аутентификацией MCP от Descope.
Что включено
Рабочий MCP-сервер, использующий FastMCP с потоковым HTTP-транспортом
Полная поддержка авторизации MCP с помощью
DescopeProviderиз FastMCP и SDKdescope-mcpПример инструмента (
hello), который возвращает"Hello, world!"и требует наличия определенной области доступа (mcp:greet)Blueprint
render.yamlдля простого развертывания
Примечание: По умолчанию этот шаблон развертывается на бесплатном тарифе Render. Бесплатные сервисы переходят в спящий режим после 15 минут бездействия, что вызывает «холодный старт» длительностью 30-60 секунд при следующем запросе. MCP-клиенты могут выдать ошибку по таймауту во время этой задержки. Для надежного использования перейдите на платный тариф в панели управления Render — тариф Starter поддерживает ваш сервис в постоянно активном состоянии.
Related MCP server: MCP Server Template
Предварительные требования
Настройка Descope
Войдите в консоль Descope.
Перейдите в Agentic Identity Hub → MCP Servers.
Нажмите + MCP Server, чтобы создать новый MCP-сервер, и дайте ему имя.
В разделе MCP Client Registration включите Client ID Metadata Documents (CIMD) и Dynamic Client Registration (DCR). При желании вы можете ограничить разрешенные домены для клиентов, регистрирующихся через CIMD (например,
https://claude.ai) — это поле можно оставить пустым.В разделе MCP Server Scopes добавьте область (scope) с именем
mcp:greetи простым описанием, например «Приветствие пользователя».Нажмите Create.
Разверните раздел
Connect your MCP server to Descopeна странице подтверждения.Скопируйте Well-Known URL. Он выглядит так:
https://api.descope.com/v1/apps/agentic/.../.well-known/openid-configurationЭто ваш
DESCOPE_CONFIG_URL.
Примечание: Descope выпускает токены в соответствии с Resource Indicators (RFC 8707), как того требует спецификация MCP. При развертывании на Render или локальном запуске вам нужно будет обновить раздел MCP Server URLs.
Развертывание на Render
Убедитесь, что вы выполнили шаг Настройка Descope перед локальной разработкой, так как вам понадобится ваш
DESCOPE_CONFIG_URL.
Сделайте форк этого репозитория в свой аккаунт GitHub.
Нажмите Deploy to Render (или форкните этот репозиторий на GitHub и импортируйте его как Blueprint в свой аккаунт Render).
В своих конфигурациях установите переменную окружения, используя значение, полученное на шаге Настройка Descope:
Ключ
Значение
DESCOPE_CONFIG_URLВаш Well-Known URL из консоли Descope
Нажмите Deploy Blueprint.
После запуска скопируйте URL вашего сервиса Render (например,
https://<your-project>.onrender.com), добавьте в конце/mcpи внесите его в MCP Server URLs в консоли Descope.
Теперь у вас есть удаленно размещенный MCP-сервер с полной поддержкой спецификации авторизации!
Локальная разработка
Убедитесь, что вы выполнили шаг Настройка Descope перед локальной разработкой, так как вам понадобится ваш
DESCOPE_CONFIG_URL.
Сначала сделайте форк этого репозитория в свой аккаунт GitHub, затем следуйте инструкциям ниже для настройки окружения.
# Install dependencies
uv sync
# Set required environment variables
export DESCOPE_CONFIG_URL="<your URL from Descope>"
export SERVER_URL="http://localhost:8000"
# Run the server
uv run server.py --transport http --port 8000При локальном запуске ваш сервер будет доступен по адресу http://localhost:8000/mcp.
Доступные инструменты
Инструмент | Описание | Требуемая область (scope) |
| Возвращает |
|
Дальнейшие шаги
Теперь, когда все настроено, мы рекомендуем выполнить еще несколько шагов, если вы планируете использовать свой MCP-сервер в продакшене.
Добавление собственных инструментов
Замените или расширьте инструмент hello в файле server.py своей логикой. Для каждого нового инструмента:
Определите новую область в консоли Descope в разделе MCP Server Scopes (например,
mcp:your-scope).Добавьте инструмент, используя декоратор
@mcp.tool().Вызовите
require_scopes(token, ["mcp:your-scope"])внутри тела инструмента для обеспечения контроля доступа.Добавьте новый инструмент и требуемую для него область в таблицу Доступные инструменты выше.
@mcp.tool()
def my_tool() -> str:
token = validate_token()
require_scopes(token, ["mcp:your-scope"])
return "your result"Использование собственного домена на Render
По умолчанию ваш сервис доступен по адресу https://<your-project>.onrender.com. Чтобы использовать собственный домен:
В панели управления Render перейдите в свой сервис → Settings → Custom Domains.
Добавьте свой домен и следуйте предоставленным инструкциям по DNS.
После подтверждения домена обновите MCP Server URLs в консоли Descope, чтобы использовать ваш собственный домен (например,
https://mcp.yourdomain.com/mcp).Изменения в коде не требуются —
RENDER_EXTERNAL_URLустанавливается автоматически сервисом Render и будет отражать основной домен.
Защита всех инструментов областями доступа
Проверка require_scopes() намеренно сделана опциональной для каждого инструмента, чтобы вы могли при необходимости добавлять неаутентифицированные инструменты. Для продакшн-сервера хорошей практикой является вызов require_scopes() в каждом инструменте. Вы также можете централизовать это, написав вспомогательную функцию, которая оборачивает validate_token() и require_scopes(), и вызывая ее в начале каждого обработчика инструментов.
Как работает авторизация MCP
MCP-клиент (например, Claude Desktop, Cursor) обнаруживает метаданные OAuth из
/.well-known/oauth-authorization-serverпри попытке подключения к вашему MCP-серверу.Клиент динамически регистрируется (через CIMD или DCR) на сервере авторизации и перенаправляет пользователя на поток входа/согласия Descope.
После входа Descope выдает подписанный JWT. Клиент включает его в качестве Bearer-токена в каждый запрос MCP.
DescopeProviderпроверяет JWT с помощью эндпоинта JWKS от Descope перед вызовом любого инструмента.Внутри инструмента
validate_token()анализирует утверждения (claims), аrequire_scopes()проверяет наличиеmcp:greet, возвращая ошибку клиенту, если область отсутствует.
Узнать больше
This server cannot be deployed
Maintenance
Related MCP Connectors
- StytchOAuthdev.stytch.mcp
The Stytch MCP server is a reference implementation that demonstrates remote MCP server authentication and authorization using Stytch Connected Apps. It provides OAuth 2.1-compliant authorization (including PKCE), Dynamic Client Registration, and validates Stytch-issued access tokens to enable AI agents to securely interact with external services through permissioned access, supporting scopes like openid, email, profile, and manage:project_data.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
- ArcjetOAuthcom.arcjet
An MCP server for Arcjet - the runtime security platform that ships with your AI code.
MCP server for Boson Protocol — on-chain agentic commerce for physical & digital goods.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA minimal FastMCP server template for Render deployment with streamable HTTP transport. Provides a starting point for building custom MCP servers with easy one-click deployment capabilities.-
- FlicenseNot gradedqualityNot gradedmaintenanceA minimal FastMCP server template for quick deployment to Render with streamable HTTP transport. Provides a foundation for building custom MCP servers with easy local development and one-click deployment capabilities.-
- FlicenseNot gradedqualityDmaintenanceA minimal FastMCP server template for Render deployment with streamable HTTP transport. Provides a starting point for building custom MCP servers with easy deployment options.-
- FlicenseNot gradedqualityDmaintenanceA minimal, production-ready FastMCP server template with auto-discovery, YAML configuration, authentication, and a knowledgebase, enabling quick scaffolding of new MCP servers.-