@@ -111,18 +111,30 @@ def health_check(request: Request) -> Response:
111111 is_flag = True ,
112112 help = "Enable auto-reload for development (default: False)" ,
113113)
114- def main (log_level : str = "INFO" , reload : bool = False ) -> None :
114+ @click .option (
115+ "--transport" ,
116+ default = "http" ,
117+ type = click .Choice (["stdio" , "http" ]),
118+ help = "Transport type for the MCP server (default: http)" ,
119+ )
120+ def main (log_level : str = "INFO" , reload : bool = False , transport : str = "http" ) -> None :
115121 """Main entry point for the MCP server."""
116122 logging_dict = configure_logging (log_level = log_level )
117- uvicorn .run (
118- "plotting_mcp.server:starlette_app" ,
119- host = mcp .settings .host ,
120- port = mcp .settings .port ,
121- log_config = logging_dict ,
122- reload = reload ,
123- reload_dirs = [str (Path (__file__ ).parent .absolute ())],
124- timeout_graceful_shutdown = 2 ,
125- )
123+
124+ if transport == "stdio" :
125+ mcp .run ("stdio" )
126+ elif transport == "http" :
127+ uvicorn .run (
128+ "plotting_mcp.server:starlette_app" ,
129+ host = mcp .settings .host ,
130+ port = mcp .settings .port ,
131+ log_config = logging_dict ,
132+ reload = reload ,
133+ reload_dirs = [str (Path (__file__ ).parent .absolute ())],
134+ timeout_graceful_shutdown = 2 ,
135+ )
136+ else :
137+ raise ValueError (f"Unsupported transport type: { transport } " )
126138
127139
128140if __name__ == "__main__" :
0 commit comments