Configurer MCP Auth sur le serveur MCP
Pour connecter votre serveur MCP à un fournisseur OAuth 2.1 ou OpenID Connect, vous devez configurer l’instance MCP Auth. Cela implique d’initialiser l’instance avec les métadonnées du serveur d’autorisation de votre fournisseur et de mettre en place les flux d’autorisation nécessaires.
Initialiser MCP Auth
Récupération automatique des métadonnées
La façon la plus simple d’initialiser l’instance MCP Auth est d’utiliser les fonctions intégrées qui récupèrent les métadonnées à partir d’une URL bien connue. Si votre fournisseur est conforme à l’une des normes suivantes :
Vous pouvez utiliser fetchServerConfig
pour récupérer automatiquement les métadonnées en fournissant l’URL de l’issuer
:
- Python
- Node.js
from mcpauth import MCPAuth
from mcpauth.config import AuthServerType, fetch_server_config
mcp_auth = MCPAuth(
server=fetch_server_config(
'<auth-server-url>',
type=AuthServerType.OIDC # ou AuthServerType.OAUTH
)
)
import { MCPAuth, fetchServerConfig } from 'mcp-auth';
const mcpAuth = new MCPAuth({
server: await fetchServerConfig('<auth-server-issuer>', { type: 'oidc' }), // ou 'oauth'
});
Si votre issuer inclut un chemin, le comportement diffère légèrement entre OAuth 2.0 et OpenID Connect :
- OAuth 2.0 : L’URL bien connue est ajoutée au domaine de l’issuer. Par exemple, si votre issuer est
https://my-project.logto.app/oauth
, l’URL bien connue serahttps://auth.logto.io/.well-known/oauth-authorization-server/oauth
. - OpenID Connect : L’URL bien connue est ajoutée directement à l’issuer. Par exemple, si votre issuer est
https://my-project.logto.app/oidc
, l’URL bien connue serahttps://auth.logto.io/oidc/.well-known/openid-configuration
.
Autres méthodes d’initialisation de MCP Auth
Transpilation personnalisée des données
Dans certains cas, les métadonnées renvoyées par le fournisseur peuvent ne pas être conformes au format attendu. Si vous êtes certain que le fournisseur est conforme, vous pouvez utiliser l’option transpile_data
pour modifier les métadonnées avant leur utilisation :
- Python
- Node.js
from mcpauth import MCPAuth
from mcpauth.config import AuthServerType
from mcpauth.utils import fetch_server_config
mcp_auth = MCPAuth(
server=fetch_server_config(
'<auth-server-url>',
type=AuthServerType.OIDC,
transpile_data=lambda data: {**data, 'response_types_supported': ['code']}
)
)
import { MCPAuth, fetchServerConfig } from 'mcp-auth';
const mcpAuth = new MCPAuth({
server: await fetchServerConfig('<auth-server-issuer>', {
type: 'oidc',
transpileData: (data) => ({ ...data, response_types_supported: ['code'] }),
}),
});
Cela vous permet de modifier l’objet de métadonnées avant qu’il ne soit utilisé par MCP Auth. Par exemple, vous pouvez ajouter ou supprimer des champs, modifier leurs valeurs ou les convertir dans un autre format.
Récupérer les métadonnées depuis une URL spécifique
Si votre fournisseur dispose d’une URL de métadonnées spécifique plutôt que des URLs standard, vous pouvez l’utiliser de manière similaire :
- Python
- Node.js
from mcpauth import MCPAuth
from mcpauth.config import AuthServerType
from mcpauth.utils import fetch_server_config_by_well_known_url
mcp_auth = MCPAuth(
server=fetch_server_config_by_well_known_url(
'<metadata-url>',
type=AuthServerType.OIDC # ou AuthServerType.OAUTH
)
)
import { MCPAuth, fetchServerConfigByWellKnownUrl } from 'mcp-auth';
const mcpAuth = new MCPAuth({
server: await fetchServerConfigByWellKnownUrl('<metadata-url>', { type: 'oidc' }), // ou 'oauth'
});
Récupérer les métadonnées depuis une URL spécifique avec transpilation personnalisée
Dans certains cas, la réponse du fournisseur peut être mal formée ou non conforme au format de métadonnées attendu. Si vous êtes certain que le fournisseur est conforme, vous pouvez transpiler les métadonnées via l’option de configuration :
- Python
- Node.js
from mcpauth import MCPAuth
from mcpauth.config import AuthServerType, fetch_server_config_by_well_known_url
mcp_auth = MCPAuth(
server=fetch_server_config_by_well_known_url(
'<metadata-url>',
type=AuthServerType.OIDC,
transpile_data=lambda data: {**data, 'response_types_supported': ['code']}
)
)
const mcpAuth = new MCPAuth({
server: await fetchServerConfigByWellKnownUrl('<metadata-url>', {
type: 'oidc',
transpileData: (data) => ({ ...data, response_types_supported: ['code'] }),
}),
});
Fournir manuellement les métadonnées
Si votre fournisseur ne prend pas en charge la récupération des métadonnées, vous pouvez fournir manuellement l’objet de métadonnées :
- Python
- Node.js
from mcpauth import MCPAuth
from mcpauth.config import AuthServerConfig, AuthServerType, AuthorizationServerMetadata
mcp_auth = MCPAuth(
server=AuthServerConfig(
type=AuthServerType.OIDC, # ou AuthServerType.OAUTH
metadata=AuthorizationServerMetadata(
issuer='<issuer-url>',
authorization_endpoint='<authorization-endpoint-url>',
# ... autres champs de métadonnées
),
)
)
const mcpAuth = new MCPAuth({
server: {
metadata: {
issuer: '<issuer-url>',
// Les champs de métadonnées doivent être en camelCase
authorizationEndpoint: '<authorization-endpoint-url>',
// ... autres champs de métadonnées
},
type: 'oidc', // ou 'oauth'
},
});