MCP Auth im MCP-Server konfigurieren
Um deinen MCP-Server mit einem OAuth 2.1- oder OpenID Connect-Anbieter zu verbinden, musst du die MCP Auth-Instanz konfigurieren. Dies beinhaltet die Initialisierung der Instanz mit den Metadaten des Autorisierungsservers deines Anbieters und das Einrichten der notwendigen Autorisierungsflüsse.
MCP Auth initialisieren
Automatisches Metadaten-Fetching
Der einfachste Weg, die MCP Auth-Instanz zu initialisieren, ist die Verwendung der eingebauten Funktionen, die die Metadaten von einer Well-Known-URL abrufen. Wenn dein Anbieter einem der folgenden Standards entspricht:
Kannst du fetchServerConfig
verwenden, um die Metadaten automatisch abzurufen, indem du die issuer
-URL angibst:
- 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 # oder AuthServerType.OAUTH
)
)
import { MCPAuth, fetchServerConfig } from 'mcp-auth';
const mcpAuth = new MCPAuth({
server: await fetchServerConfig('<auth-server-issuer>', { type: 'oidc' }), // oder 'oauth'
});
Wenn dein Issuer einen Pfad enthält, unterscheidet sich das Verhalten leicht zwischen OAuth 2.0 und OpenID Connect:
- OAuth 2.0: Die Well-Known-URL wird an die Domain des Issuers angehängt. Zum Beispiel, wenn dein Issuer
https://my-project.logto.app/oauth
ist, wird die Well-Known-URLhttps://auth.logto.io/.well-known/oauth-authorization-server/oauth
sein. - OpenID Connect: Die Well-Known-URL wird direkt an den Issuer angehängt. Zum Beispiel, wenn dein Issuer
https://my-project.logto.app/oidc
ist, wird die Well-Known-URLhttps://auth.logto.io/oidc/.well-known/openid-configuration
sein.
Weitere Möglichkeiten zur Initialisierung von MCP Auth
Eigene Daten-Transpilation
In manchen Fällen entsprechen die vom Anbieter zurückgegebenen Metadaten nicht dem erwarteten Format. Wenn du sicher bist, dass der Anbieter konform ist, kannst du die Option transpile_data
verwenden, um die Metadaten vor der Verwendung zu modifizieren:
- 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'] }),
}),
});
Dies ermöglicht es dir, das Metadaten-Objekt zu modifizieren, bevor es von MCP Auth verwendet wird. Zum Beispiel kannst du Felder hinzufügen oder entfernen, deren Werte ändern oder sie in ein anderes Format umwandeln.
Metadaten von einer spezifischen URL abrufen
Wenn dein Anbieter eine spezifische Metadaten-URL anstelle der Standard-URLs hat, kannst du diese ähnlich verwenden:
- 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 # oder AuthServerType.OAUTH
)
)
import { MCPAuth, fetchServerConfigByWellKnownUrl } from 'mcp-auth';
const mcpAuth = new MCPAuth({
server: await fetchServerConfigByWellKnownUrl('<metadata-url>', { type: 'oidc' }), // oder 'oauth'
});
Metadaten von einer spezifischen URL mit eigener Daten-Transpilation abrufen
In manchen Fällen kann die Antwort des Anbieters fehlerhaft oder nicht im erwarteten Metadatenformat sein. Wenn du sicher bist, dass der Anbieter konform ist, kannst du die Metadaten über die Konfigurationsoption transpiliert bereitstellen:
- 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'] }),
}),
});
Metadaten manuell bereitstellen
Wenn dein Anbieter kein Metadaten-Fetching unterstützt, kannst du das Metadaten-Objekt manuell bereitstellen:
- Python
- Node.js
from mcpauth import MCPAuth
from mcpauth.config import AuthServerConfig, AuthServerType, AuthorizationServerMetadata
mcp_auth = MCPAuth(
server=AuthServerConfig(
type=AuthServerType.OIDC, # oder AuthServerType.OAUTH
metadata=AuthorizationServerMetadata(
issuer='<issuer-url>',
authorization_endpoint='<authorization-endpoint-url>',
# ... weitere Metadatenfelder
),
)
)
const mcpAuth = new MCPAuth({
server: {
metadata: {
issuer: '<issuer-url>',
// Metadatenfelder sollten camelCase sein
authorizationEndpoint: '<authorization-endpoint-url>',
// ... weitere Metadatenfelder
},
type: 'oidc', // oder 'oauth'
},
});