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"""
|
"""Strava MCP Server"""
|
||||||
|
|
||||||
__version__ = "0.2.12"
|
__version__ = "0.2.13"
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
Reference in New Issue
Block a user