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 installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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 gradedqualityCmaintenanceA minimal, production-ready FastMCP server template with auto-discovery, YAML configuration, authentication, and a knowledgebase, enabling quick scaffolding of new MCP servers.
Related MCP Connectors
Primarily to be used as a template repository for developing MCP servers with FastMCP in Python, P…
An MCP server for Arcjet - the runtime security platform that ships with your AI code.
MCP server for verifying EUDI/Talao wallet data via OIDC4VP (pull) for AI agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/render-examples/descope-render'
If you have feedback or need assistance with the MCP directory API, please join our Discord server