{
"event": "PreToolUse",
"tool_name": "Write",
"tool_input": {
"file_path": "\/var\/www\/mcp-servers\/shared\/server_factory.py",
"content": "\"\"\"\nServer Factory for MCP Server Creation.\n\nProvides standardized server initialization with explicit env_path parameter.\n\"\"\"\n\nimport logging\nimport sys\nfrom pathlib import Path\nfrom typing import Optional\n\nfrom dotenv import load_dotenv\nfrom mcp.server.fastmcp import FastMCP\n\n\ndef create_server(\n name: str,\n env_path: Optional[Path] = None,\n log_level: int = logging.INFO,\n) -> FastMCP:\n \"\"\"\n Create a standardized MCP server.\n\n Args:\n name: Server name (e.g., \"mcp_docs\")\n env_path: Explicit path to .env file. REQUIRED for production.\n log_level: Logging level (default: INFO)\n\n Returns:\n Configured FastMCP instance\n \"\"\"\n # Configure logging to stderr (important for MCP!)\n handler = logging.StreamHandler(sys.stderr)\n handler.setFormatter(\n logging.Formatter(\"%(asctime)s - %(levelname)s - %(message)s\")\n )\n\n logger = logging.getLogger(name)\n logger.setLevel(log_level)\n logger.addHandler(handler)\n\n # Load .env if provided\n if env_path:\n if not env_path.exists():\n logger.warning(f\".env not found at {env_path}\")\n else:\n load_dotenv(env_path)\n logger.info(f\"Loaded .env from {env_path}\")\n\n # Create FastMCP instance\n mcp = FastMCP(name)\n\n logger.info(f\"Starting {name} Server\")\n\n return mcp\n"
}
}
{
"tool_response": {
"type": "create",
"filePath": "\/var\/www\/mcp-servers\/shared\/server_factory.py",
"content": "\"\"\"\nServer Factory for MCP Server Creation.\n\nProvides standardized server initialization with explicit env_path parameter.\n\"\"\"\n\nimport logging\nimport sys\nfrom pathlib import Path\nfrom typing import Optional\n\nfrom dotenv import load_dotenv\nfrom mcp.server.fastmcp import FastMCP\n\n\ndef create_server(\n name: str,\n env_path: Optional[Path] = None,\n log_level: int = logging.INFO,\n) -> FastMCP:\n \"\"\"\n Create a standardized MCP server.\n\n Args:\n name: Server name (e.g., \"mcp_docs\")\n env_path: Explicit path to .env file. REQUIRED for production.\n log_level: Logging level (default: INFO)\n\n Returns:\n Configured FastMCP instance\n \"\"\"\n # Configure logging to stderr (important for MCP!)\n handler = logging.StreamHandler(sys.stderr)\n handler.setFormatter(\n logging.Formatter(\"%(asctime)s - %(levelname)s - %(message)s\")\n )\n\n logger = logging.getLogger(name)\n logger.setLevel(log_level)\n logger.addHandler(handler)\n\n # Load .env if provided\n if env_path:\n if not env_path.exists():\n logger.warning(f\".env not found at {env_path}\")\n else:\n load_dotenv(env_path)\n logger.info(f\"Loaded .env from {env_path}\")\n\n # Create FastMCP instance\n mcp = FastMCP(name)\n\n logger.info(f\"Starting {name} Server\")\n\n return mcp\n",
"structuredPatch": [],
"originalFile": null
}
}