import os
import uvicorn
from aws_xray_sdk.core import xray_recorder
from awslabs.openapi_mcp_server.api.config import Config
from awslabs.openapi_mcp_server.server import create_mcp_server
def get_port_from_environment() -> int:
return int(os.getenv("PORT", "8080"))
if __name__ == "__main__":
with xray_recorder.capture("create_config"):
config = Config(
api_name="PetstoreAPI",
api_base_url="https://petstore3.swagger.io/api/v3",
api_spec_url="https://petstore3.swagger.io/api/v3/openapi.json",
transport="http",
auth_type="none",
version="0.1.0",
)
with xray_recorder.capture("create_mcp_server"):
mcp = create_mcp_server(config)
with xray_recorder.capture("create_http_app"):
app = mcp.http_app(
path="/",
transport="http",
stateless_http=True,
)
uvicorn.run(
app,
host="0.0.0.0",
port=get_port_from_environment(),
log_level="info",
)