feat: parse --transport, --host, and --port flags in main.py to allow dynamic SSE/HTTP configurations, release 0.2.13
This commit is contained in:
@@ -1,3 +1,3 @@
|
||||
"""Strava MCP Server"""
|
||||
|
||||
__version__ = "0.2.12"
|
||||
__version__ = "0.2.13"
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user