feat: parse --transport, --host, and --port flags in main.py to allow dynamic SSE/HTTP configurations, release 0.2.13
CI/CD Pipeline / Publish to PyPI (push) Successful in 13s
CI/CD Pipeline / Lint & Check (push) Successful in 11s
CI/CD Pipeline / Build & Push Docker Image (push) Successful in 1m26s

This commit is contained in:
2026-05-30 21:07:29 +02:00
parent a30bef822b
commit 598f3ac5da
2 changed files with 35 additions and 6 deletions
+1 -1
View File
@@ -1,3 +1,3 @@
"""Strava MCP Server""" """Strava MCP Server"""
__version__ = "0.2.12" __version__ = "0.2.13"
+34 -5
View File
@@ -42,8 +42,32 @@ def main() -> None:
load_dotenv() load_dotenv()
validate_credentials() validate_credentials()
host = os.getenv("HOST", "0.0.0.0") import argparse
port = int(os.getenv("PORT", 8000))
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() strava = StravaClient()
@@ -69,9 +93,6 @@ def main() -> None:
register_tools(mcp, strava) register_tools(mcp, strava)
# Check transport mode from environment (Default to stdio for local dev)
transport = os.getenv("MCP_TRANSPORT", "stdio")
if transport == "http": if transport == "http":
# Run in Streamable HTTP mode (standard for Docker, K8s and OpenWebUI) # Run in Streamable HTTP mode (standard for Docker, K8s and OpenWebUI)
print(f"🚀 Starting Strava MCP Server on http://{host}:{port}") print(f"🚀 Starting Strava MCP Server on http://{host}:{port}")
@@ -80,6 +101,14 @@ def main() -> None:
mcp.run(transport="streamable-http") mcp.run(transport="streamable-http")
except KeyboardInterrupt: except KeyboardInterrupt:
pass 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: else:
# Run in STDIO mode (default for local testing and Claude Desktop) # Run in STDIO mode (default for local testing and Claude Desktop)
mcp.run(transport="stdio") mcp.run(transport="stdio")