Descope Auth MCP Server Template
Plantilla de servidor MCP con autenticación Descope
Una plantilla de servidor FastMCP sencilla para Render, con autenticación MCP completa mediante Descope.
Qué incluye
Un servidor MCP funcional que utiliza FastMCP con transporte HTTP Streamable
Soporte completo de autorización MCP con el
DescopeProviderde FastMCP y el SDKdescope-mcpUna herramienta de ejemplo (
hello) que devuelve "Hello, world!" y aplica requisitos de ámbito a nivel de herramienta (mcp:greet)Un Blueprint
render.yamlpara una fácil implementación
Nota: Esta plantilla se implementa en el plan gratuito de Render de forma predeterminada. Los servicios gratuitos se desactivan tras 15 minutos de inactividad, lo que provoca arranques en frío de 30 a 60 segundos en la siguiente solicitud. Los clientes MCP pueden agotar el tiempo de espera durante este retraso. Para un uso fiable, actualice a un plan de pago en el panel de control de Render: el plan Starter mantiene su servicio funcionando continuamente.
Related MCP server: MCP Server Template
Requisitos previos
Configuración de Descope
Inicie sesión en la Consola de Descope.
Navegue a Agentic Identity Hub → MCP Servers.
Haga clic en + MCP Server para crear un nuevo servidor MCP y asígnele un nombre.
En MCP Client Registration, habilite Client ID Metadata Documents (CIMD) y Dynamic Client Registration (DCR). Opcionalmente, puede restringir los dominios permitidos para los clientes que se registren a través de CIMD (por ejemplo,
https://claude.ai); puede dejar este campo en blanco.En MCP Server Scopes, añada un ámbito llamado
mcp:greety una descripción sencilla como "Saludar al usuario".Haga clic en Create.
Expanda la sección
Connect your MCP server to Descopeen la página de confirmación.Copie la Well-Known URL. Se ve así:
https://api.descope.com/v1/apps/agentic/.../.well-known/openid-configurationEsta es su
DESCOPE_CONFIG_URL.
Nota: Descope emite tokens siguiendo los indicadores de recursos (RFC 8707), tal como requiere la especificación MCP. Cuando implemente en Render o ejecute localmente, deberá actualizar la sección de URLs del servidor MCP.
Implementación en Render
Asegúrese de haber completado el paso de Configuración de Descope antes de desarrollar localmente, ya que necesitará su
DESCOPE_CONFIG_URL.
Haga un fork de este repositorio en su cuenta de GitHub.
Haga clic en Deploy to Render (o haga un fork de este repositorio en GitHub e impórtelo como un Blueprint en su cuenta de Render).
En sus configuraciones especificadas, establezca la variable de entorno con el valor obtenido en el paso de Configuración de Descope:
Clave
Valor
DESCOPE_CONFIG_URLSu Well-Known URL de la consola de Descope
Haga clic en Deploy Blueprint.
Una vez activo, copie la URL de su servicio de Render (por ejemplo,
https://<your-project>.onrender.com), añada/mcpal final y agréguela a MCP Server URLs en la consola de Descope.
¡Ahora tiene un servidor MCP alojado de forma remota con la especificación de autenticación completa soportada!
Desarrollo local
Asegúrese de haber completado el paso de Configuración de Descope antes de desarrollar localmente, ya que necesitará su
DESCOPE_CONFIG_URL.
Primero, haga un fork de este repositorio en su cuenta de GitHub y luego siga las instrucciones a continuación para configurar su entorno.
# 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 8000Cuando ejecute esto localmente, su servidor se ejecutará en http://localhost:8000/mcp.
Herramientas disponibles
Herramienta | Descripción | Ámbito requerido |
| Devuelve "Hello, world!" |
|
Próximos pasos
Ahora que todo está configurado, le recomendamos algunos pasos más si va a llevar su servidor MCP a producción.
Añada sus propias herramientas
Reemplace o amplíe la herramienta hello en server.py con su propia lógica. Para cada nueva herramienta:
Defina un nuevo ámbito en la consola de Descope en MCP Server Scopes (por ejemplo,
mcp:your-scope).Añada la herramienta usando el decorador
@mcp.tool().Llame a
require_scopes(token, ["mcp:your-scope"])dentro del cuerpo de la herramienta para aplicar el control de acceso.Añada la nueva herramienta y su ámbito requerido a la tabla de Herramientas disponibles anterior.
@mcp.tool()
def my_tool() -> str:
token = validate_token()
require_scopes(token, ["mcp:your-scope"])
return "your result"Use un dominio personalizado en Render
De forma predeterminada, su servicio es accesible en https://<your-project>.onrender.com. Para usar un dominio personalizado:
En el panel de control de Render, vaya a su servicio → Settings → Custom Domains.
Añada su dominio y siga las instrucciones de DNS proporcionadas.
Una vez verificado el dominio, actualice MCP Server URLs en la consola de Descope para usar su dominio personalizado (por ejemplo,
https://mcp.yourdomain.com/mcp).No se necesitan cambios en el código:
RENDER_EXTERNAL_URLes configurado automáticamente por Render y reflejará el dominio principal.
Proteja todas las herramientas con ámbitos
La comprobación require_scopes() es intencionalmente opcional por herramienta para que pueda añadir herramientas sin autenticación si es necesario. Para un servidor de producción, es una buena práctica llamar a require_scopes() en cada herramienta. También puede centralizar esto escribiendo un asistente que envuelva validate_token() y require_scopes() y llamándolo al principio de cada manejador de herramientas.
Cómo funciona la autenticación MCP
Un cliente MCP (por ejemplo, Claude Desktop, Cursor) descubre los metadatos de OAuth desde
/.well-known/oauth-authorization-serveral intentar conectarse a su servidor MCP.El cliente se registra dinámicamente (a través de CIMD o DCR) en el servidor de autorización y redirige al usuario al flujo de inicio de sesión/consentimiento de Descope.
Después de iniciar sesión, Descope emite un JWT firmado. El cliente incluye esto como un token Bearer en cada solicitud MCP.
DescopeProvidervalida el JWT usando el endpoint JWKS de Descope antes de que se llame a cualquier herramienta.Dentro de la herramienta,
validate_token()analiza las reclamaciones yrequire_scopes()comprueba quemcp:greetesté presente, devolviendo un error al cliente si no lo está.
Más información
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.-