Skip to main content
Glama
cli.py3.13 kB
""" Command-line interface for scvi-mcp. """ import asyncio import argparse import os import sys def parse_arguments(): """Parse command line arguments""" parser = argparse.ArgumentParser(description='scvi-tools MCP Server') subparsers = parser.add_subparsers(dest='command', help='Available commands') # Add run subcommand run_parser = subparsers.add_parser('run', help='Start scvi-tools MCP Server') run_parser.add_argument( '--log-file', type=str, default=None, help='Log file path. If None, output to stderr' ) run_parser.add_argument( '--data', type=str, default=None, help='Path to h5ad file to load on startup' ) run_parser.add_argument( '-t', '--transport', type=str, default="stdio", choices=["stdio", "sse"], help='Transport type: stdio or sse. Default: stdio' ) run_parser.add_argument( '-p', '--port', type=int, default=8000, help='Port for SSE transport. Default: 8000' ) run_parser.add_argument( '--host', type=str, default="127.0.0.1", help='Host address for SSE transport. Default: 127.0.0.1' ) # Set default subcommand to run parser.set_defaults(command='run') return parser.parse_args() def run_cli(): """CLI entry point function""" args = parse_arguments() # Ensure command is 'run' if args.command == 'run': # Get arguments log_file = getattr(args, 'log_file', None) data = getattr(args, 'data', None) transport = getattr(args, 'transport', "stdio") port = getattr(args, 'port', 8000) host = getattr(args, 'host', "127.0.0.1") # Set environment variables if log_file is not None: os.environ['SCVI_MCP_LOG_FILE'] = log_file else: os.environ['SCVI_MCP_LOG_FILE'] = "" if data is not None: os.environ['SCVI_MCP_DATA'] = data else: os.environ['SCVI_MCP_DATA'] = "" os.environ['SCVI_MCP_TRANSPORT'] = transport os.environ['SCVI_MCP_HOST'] = host os.environ['SCVI_MCP_PORT'] = str(port) try: if transport == "stdio": from .server import run_stdio asyncio.run(run_stdio()) elif transport == "sse": # For SSE transport, get application and run with uvicorn from .server import create_sse_app import uvicorn app = create_sse_app(port=port) uvicorn.run(app, host=host, port=port) else: print(f"Unsupported transport type: {transport}") sys.exit(1) except KeyboardInterrupt: print("\nServer stopped") sys.exit(0) except Exception as e: print(f"Server error: {e}") sys.exit(1) else: print(f"Unknown command: {args.command}") sys.exit(1) if __name__ == "__main__": run_cli()

Latest Blog Posts

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/hyennnnnnn/scvi-mcp'

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