Skip to main content
Glama

MCP Server Box

MIT License
82
  • Apple
  • Linux
server.py3.65 kB
"""MCP server configuration and initialization.""" from pathlib import Path import tomli from mcp.server.fastmcp import FastMCP from config import CONFIG, TransportType from middleware import add_auth_middleware from server_context import box_lifespan_ccg, box_lifespan_oauth from tool_registry import register_all_tools from tool_registry.ai_tools import register_ai_tools from tool_registry.collaboration_tools import register_collaboration_tools from tool_registry.doc_gen_tools import register_doc_gen_tools from tool_registry.file_tools import register_file_tools from tool_registry.folder_tools import register_folder_tools from tool_registry.generic_tools import register_generic_tools from tool_registry.group_tools import register_group_tools from tool_registry.metadata_tools import register_metadata_tools from tool_registry.search_tools import register_search_tools from tool_registry.shared_link_tools import register_shared_link_tools from tool_registry.tasks_tools import register_tasks_tools from tool_registry.user_tools import register_user_tools from tool_registry.web_link_tools import register_web_link_tools def get_version() -> str: """Read version from pyproject.toml.""" try: pyproject_path = Path(__file__).parent.parent / "pyproject.toml" with open(pyproject_path, "rb") as f: pyproject_data = tomli.load(f) return pyproject_data.get("project", {}).get("version", "unknown") except Exception: return "unknown" def create_mcp_server( server_name: str = CONFIG.server_name_prefix, transport: str = CONFIG.transport, host: str = CONFIG.host, port: int = CONFIG.port, box_auth: str = CONFIG.box_auth, require_auth: bool = True, ) -> FastMCP: """Create and configure the MCP server.""" # Select appropriate lifespan based on auth type lifespan = box_lifespan_ccg if box_auth == "ccg" else box_lifespan_oauth # Create MCP server with appropriate transport if transport == TransportType.STDIO.value: mcp = FastMCP(server_name, lifespan=lifespan) else: mcp = FastMCP( server_name, stateless_http=True, host=host, port=port, lifespan=lifespan, ) # Add authentication middleware for HTTP transports if require_auth: add_auth_middleware(mcp, transport) return mcp def register_tools(mcp: FastMCP) -> None: """Register all tools with the MCP server.""" register_all_tools( mcp, [ register_generic_tools, register_search_tools, register_ai_tools, register_doc_gen_tools, register_file_tools, register_folder_tools, register_metadata_tools, register_user_tools, register_group_tools, register_collaboration_tools, register_web_link_tools, register_shared_link_tools, register_tasks_tools, ], ) def create_server_info_tool( mcp: FastMCP, transport: str, box_auth: str, host: str = "127.0.0.1", port: int = 8001, ) -> None: """Create and register the server info tool.""" @mcp.tool() def mcp_server_info(): """Returns information about the MCP server.""" info = { "server_name": mcp.name, "version": get_version(), "transport": transport, "box auth": box_auth, } if transport != TransportType.STDIO.value: info["host"] = host info["port"] = str(port) return info

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