Skip to main content
Glama
mcp_server_box.py3.79 kB
"""Entry point for the Box MCP Server.""" import argparse import logging import sys from config import ( AppConfig, BoxAuthType, McpAuthType, TransportType, setup_logging, ) from server import create_mcp_server, create_server_info_tool, register_tools # Load configuration from environment once at startup app_config = AppConfig.from_env() # Configure logging setup_logging(app_config.logging.log_level) logger = logging.getLogger(__name__) def parse_arguments() -> argparse.Namespace: """Parse command line arguments.""" parser = argparse.ArgumentParser(description="Box Community MCP Server") parser.add_argument( "--transport", choices=[t.value for t in TransportType], default=app_config.server.transport, help=f"Transport type (default: {app_config.server.transport.value})", ) parser.add_argument( "--host", default=app_config.server.host, help=f"Host for SSE/HTTP transport (default: {app_config.server.host})", ) parser.add_argument( "--port", type=int, default=app_config.server.port, help=f"Port for SSE/HTTP transport (default: {app_config.server.port})", ) parser.add_argument( "--mcp-auth-type", choices=[a.value for a in McpAuthType], default=app_config.server.mcp_auth_type, help=f"Authentication type for MCP server (default: {app_config.server.mcp_auth_type.value})", ) parser.add_argument( "--box-auth-type", choices=[a.value for a in BoxAuthType], default=app_config.server.box_auth, help=f"Authentication type for Box API (default: {app_config.server.box_auth.value})", ) return parser.parse_args() def main() -> int: """Main entry point for the Box MCP Server.""" args = parse_arguments() # Update server config from command line arguments app_config.server.transport = TransportType(args.transport) app_config.server.host = args.host app_config.server.port = args.port app_config.server.box_auth = args.box_auth_type app_config.server.mcp_auth_type = args.mcp_auth_type # Validate and adjust config based on transport type # if the transport is stdio, then the mcp auth must be none if app_config.server.transport == TransportType.STDIO: if app_config.server.mcp_auth_type != McpAuthType.NONE: logger.warning( "MCP auth type must be 'none' when using stdio transport. Overriding to 'none'." ) app_config.server.mcp_auth_type = McpAuthType.NONE if app_config.server.mcp_auth_type == McpAuthType.OAUTH: if app_config.server.box_auth != BoxAuthType.MCP_CLIENT: logger.warning( "Box auth type must be 'mcp_client' when using MCP OAuth authentication. Overriding to 'mcp_client'." ) app_config.server.box_auth = BoxAuthType.MCP_CLIENT # Create and configure MCP server mcp = create_mcp_server( app_config=app_config, ) # Register all tools register_tools(mcp) # Register server info tool create_server_info_tool(mcp, config=app_config.server) # Run server try: logger.info(f"Starting {app_config.server.server_name}") if app_config.server.transport != TransportType.STDIO: logger.info(f"Listening on {app_config.server.host}:{app_config.server.port}") transport_value = app_config.server.transport.value if transport_value == "http": transport_value = "streamable-http" mcp.run(transport=transport_value) return 0 except Exception as e: logger.error(f"Error starting server: {e}") return 1 if __name__ == "__main__": sys.exit(main())

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/box-community/mcp-server-box'

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