Skip to main content
Glama

propublica-mcp

__main__.py•4.68 kB
import argparse import sys from rich.console import Console from rich_rst import RestructuredText from rich.terminal_theme import TerminalTheme def rgb(r, g, b): """ Function to represent color in RGB format. Parameters ---------- r : int Red color value. g : int Green color value. b : int Blue color value. Returns ------- tuple A tuple representing the RGB color. """ return (r, g, b) def parse_arguments(): """Parse command line arguments.""" parser = argparse.ArgumentParser(description="Render reStructuredText to the console with rich-rst") parser.add_argument("path", metavar="PATH", help="path to file, or - for stdin") parser.add_argument("-c", "--force-color", dest="force_color", action="store_true", default=None, help="force color for non-terminals") parser.add_argument("-e", "--encoding", dest="encoding", type=str, default="utf-8", help="encoding for file (default: utf-8)") parser.add_argument("-w", "--width", type=int, dest="width", default=None, help="width of output (default will auto-detect)") parser.add_argument("-hw", "--html-width", type=str, dest="html_width", default="1675px", help="width of html output (default: 1675px)") parser.add_argument("-t", "--code-theme", dest="code_theme", type=str, default="monokai", help="pygments code theme") parser.add_argument("-html", "--save-html", type=str, dest="html_filename", default=False, help="save to html") parser.add_argument("-r", "--wrap", dest="word_wrap", action="store_true", default=False, help="word wrap long lines") parser.add_argument("-s", "--soft-wrap", action="store_true", dest="soft_wrap", default=False, help="enable soft wrapping mode") parser.add_argument("-gl", "--guess-lexer", action="store_true", dest="guess_lexer", default=False, help="Whether to guess the lexer for code blocks without specified language") parser.add_argument("-dl", "--default-lexer", type=str, dest="default_lexer", default="python", help="The default lexer for code blocks without specified language if no lexer could be guessed or found") parser.add_argument("-he", "--hide-errors", action="store_true", dest="hide_errors", default=False, help="Whether to hide errors or not") return parser.parse_args() def main(): """The main function.""" args = parse_arguments() DRACULA_TERMINAL_THEME = TerminalTheme( rgb(40, 42, 54), rgb(248, 248, 242), [ rgb(40, 42, 54), rgb(255, 85, 85), rgb(80, 250, 123), rgb(241, 250, 140), rgb(189, 147, 249), rgb(255, 121, 198), rgb(139, 233, 253), rgb(255, 255, 255), ], [ rgb(40, 42, 54), rgb(255, 85, 85), rgb(80, 250, 123), rgb(241, 250, 140), rgb(189, 147, 249), rgb(255, 121, 198), rgb(139, 233, 253), rgb(255, 255, 255), ], ) CONSOLE_HTML_FORMAT = f"""\ <!DOCTYPE html> <head> <meta charset="UTF-8"> <style> {{stylesheet}} body {{ color: {{foreground}}; background-color: {{background}}; max-width: {args.html_width} }} pre {{ white-space: pre-wrap; /* Since CSS 2.1 */ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ }} ::-moz-selection {{ /* Code for Firefox */ background: #44475a; }} ::selection {{ background: #44475a; }} </style> </head> <html> <body> <code> <pre style="font-family:ui-monospace,'Fira Code',Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace">{{code}}</pre> </code> </body> </html> """ console = Console(force_terminal=args.force_color, width=args.width, record=bool(args.html_filename)) code = sys.stdin.read() if args.path == "-" else open(args.path, "rt", encoding=args.encoding).read() rst = RestructuredText( code, code_theme=args.code_theme, guess_lexer=args.guess_lexer, default_lexer=args.default_lexer, show_errors=not args.hide_errors, filename=args.path if args.path != "-" else "<stdin>", ) console.print(rst, soft_wrap=args.soft_wrap) if args.html_filename: console.save_html(args.html_filename, theme=DRACULA_TERMINAL_THEME, code_format=CONSOLE_HTML_FORMAT) if __name__ == "__main__": main()

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