Skip to main content
Glama

propublica-mcp

cache.py•3.01 kB
from authlib.oauth1 import TemporaryCredential def register_temporary_credential_hooks( authorization_server, cache, key_prefix="temporary_credential:" ): """Register temporary credential related hooks to authorization server. :param authorization_server: AuthorizationServer instance :param cache: Cache instance :param key_prefix: key prefix for temporary credential """ def create_temporary_credential(token, client_id, redirect_uri): key = key_prefix + token["oauth_token"] token["client_id"] = client_id if redirect_uri: token["oauth_callback"] = redirect_uri cache.set(key, token, timeout=86400) # cache for one day return TemporaryCredential(token) def get_temporary_credential(oauth_token): if not oauth_token: return None key = key_prefix + oauth_token value = cache.get(key) if value: return TemporaryCredential(value) def delete_temporary_credential(oauth_token): if oauth_token: key = key_prefix + oauth_token cache.delete(key) def create_authorization_verifier(credential, grant_user, verifier): key = key_prefix + credential.get_oauth_token() credential["oauth_verifier"] = verifier credential["user_id"] = grant_user.get_user_id() cache.set(key, credential, timeout=86400) return credential authorization_server.register_hook( "create_temporary_credential", create_temporary_credential ) authorization_server.register_hook( "get_temporary_credential", get_temporary_credential ) authorization_server.register_hook( "delete_temporary_credential", delete_temporary_credential ) authorization_server.register_hook( "create_authorization_verifier", create_authorization_verifier ) def create_exists_nonce_func(cache, key_prefix="nonce:", expires=86400): """Create an ``exists_nonce`` function that can be used in hooks and resource protector. :param cache: Cache instance :param key_prefix: key prefix for temporary credential :param expires: Expire time for nonce """ def exists_nonce(nonce, timestamp, client_id, oauth_token): key = f"{key_prefix}{nonce}-{timestamp}-{client_id}" if oauth_token: key = f"{key}-{oauth_token}" rv = cache.has(key) cache.set(key, 1, timeout=expires) return rv return exists_nonce def register_nonce_hooks( authorization_server, cache, key_prefix="nonce:", expires=86400 ): """Register nonce related hooks to authorization server. :param authorization_server: AuthorizationServer instance :param cache: Cache instance :param key_prefix: key prefix for temporary credential :param expires: Expire time for nonce """ exists_nonce = create_exists_nonce_func(cache, key_prefix, expires) authorization_server.register_hook("exists_nonce", exists_nonce)

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/asachs01/propublica-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server