diff --git a/src/strava_mcp_server/__init__.py b/src/strava_mcp_server/__init__.py index b5bc102..6c809e1 100644 --- a/src/strava_mcp_server/__init__.py +++ b/src/strava_mcp_server/__init__.py @@ -1,3 +1,3 @@ """Strava MCP Server""" -__version__ = "0.2.12" +__version__ = "0.2.13" diff --git a/src/strava_mcp_server/main.py b/src/strava_mcp_server/main.py index 3c3666a..248f410 100644 --- a/src/strava_mcp_server/main.py +++ b/src/strava_mcp_server/main.py @@ -42,8 +42,32 @@ def main() -> None: load_dotenv() validate_credentials() - host = os.getenv("HOST", "0.0.0.0") - port = int(os.getenv("PORT", 8000)) + import argparse + + parser = argparse.ArgumentParser(description="Strava MCP Server") + parser.add_argument( + "--transport", + choices=["stdio", "sse", "http"], + default=os.getenv("MCP_TRANSPORT", "stdio"), + help="Transport protocol (stdio, sse, or http/streamable-http)", + ) + parser.add_argument( + "--host", + default=os.getenv("HOST", "0.0.0.0"), + help="Host address to bind to for HTTP / SSE", + ) + parser.add_argument( + "--port", + type=int, + default=int(os.getenv("PORT", 8000)), + help="Port to listen on for HTTP / SSE", + ) + + args, unknown = parser.parse_known_args() + + host = args.host + port = args.port + transport = args.transport strava = StravaClient() @@ -69,9 +93,6 @@ def main() -> None: register_tools(mcp, strava) - # Check transport mode from environment (Default to stdio for local dev) - transport = os.getenv("MCP_TRANSPORT", "stdio") - if transport == "http": # Run in Streamable HTTP mode (standard for Docker, K8s and OpenWebUI) print(f"🚀 Starting Strava MCP Server on http://{host}:{port}") @@ -80,6 +101,14 @@ def main() -> None: mcp.run(transport="streamable-http") except KeyboardInterrupt: pass + elif transport == "sse": + # Run in Server-Sent Events (SSE) mode + print(f"🚀 Starting Strava MCP Server via SSE on http://{host}:{port}") + print(f" MCP endpoint: http://{host}:{port}/sse") + try: + mcp.run(transport="sse") + except KeyboardInterrupt: + pass else: # Run in STDIO mode (default for local testing and Claude Desktop) mcp.run(transport="stdio")