Skip to main content
Glama

propublica-mcp

base.py•2.02 kB
from authlib.common.errors import AuthlibHTTPError from authlib.common.urls import add_params_to_uri def invalid_error_characters(text: str) -> list[str]: """Check whether the string only contains characters from the restricted ASCII set defined in RFC6749 for errors. https://datatracker.ietf.org/doc/html/rfc6749#section-4.1.2.1 """ valid_ranges = [ (0x20, 0x21), (0x23, 0x5B), (0x5D, 0x7E), ] return [ char for char in set(text) if not any(start <= ord(char) <= end for start, end in valid_ranges) ] class OAuth2Error(AuthlibHTTPError): def __init__( self, description=None, uri=None, status_code=None, state=None, redirect_uri=None, redirect_fragment=False, error=None, ): # Human-readable ASCII [USASCII] text providing # additional information, used to assist the client developer in # understanding the error that occurred. # Values for the "error_description" parameter MUST NOT include # characters outside the set %x20-21 / %x23-5B / %x5D-7E. if description: if chars := invalid_error_characters(description): raise ValueError( f"Error description contains forbidden characters: {', '.join(chars)}." ) super().__init__(error, description, uri, status_code) self.state = state self.redirect_uri = redirect_uri self.redirect_fragment = redirect_fragment def get_body(self): """Get a list of body.""" error = super().get_body() if self.state: error.append(("state", self.state)) return error def __call__(self, uri=None): if self.redirect_uri: params = self.get_body() loc = add_params_to_uri(self.redirect_uri, params, self.redirect_fragment) return 302, "", [("Location", loc)] return super().__call__(uri=uri)

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