Movie Reservation MCP
Movie Reservation MCP
MCP wrapper for the movie reservation GraphQL API.
This repository exists so the reservation MCP can have its own issue tracker, CI, and artifact pipeline while the implementation is extracted from the golden-path/demo baseline.
Run
uv run movie-reservation-mcpThe production container runs as UID 10001 and listens on port 8091:
docker build --tag movie-reservation-mcp:local .
docker run --rm --network host movie-reservation-mcp:localThe demo assumes the MCP and reservation API containers share one ECS task
network namespace, so the default downstream address remains
127.0.0.1:3000. Override the downstream URLs when running the containers
independently.
Defaults:
MCP endpoint:
http://127.0.0.1:8091/mcpHealth endpoint:
http://127.0.0.1:8091/healthDownstream GraphQL API:
http://127.0.0.1:3000/graphqlDownstream health API: derived as
http://127.0.0.1:3000/health
browser -> Python agent -> recommendation MCP -> Rust recommendation API
-> reservation MCP -> NestJS reservation APIUseful environment variables:
MOVIE_RESERVATION_GRAPHQL_URLMOVIE_RESERVATION_HEALTH_URLMOVIE_RESERVATION_API_TIMEOUT_SECONDSPORTHOST
Tools
reservation_get_catalogInputs: optional
movie_id, optionalfault, and optional propagation fields.Calls GraphQL
moviesandscreenings(movieId).
reservation_request_seatsInputs:
screening_id,seat_ids, optionalfault, and optional propagation fields.Calls GraphQL
requestReservation(input).
reservation_get_request_statusInputs:
reservation_request_id, optionalfault, and optional propagation fields.Calls GraphQL
reservationRequestStatus(id)andreservationResult(requestId).
reservation_healthCalls downstream
GET /health.
Tools forward:
traceparenttracestateX-Correlation-IdX-Request-IdX-Demo-Fault
Checks
uv sync --frozen
uv run --frozen --no-sync pytest tests
uv run --frozen --no-sync pytest automation/tests
uv run --frozen --no-sync ruff check .
uv run --frozen --no-sync ruff format --check .
uv run --frozen --no-sync python -m compileall src tests automationPushes to main publish a Linux AMD64 candidate to GHCR as
sha-<commit>. CI disables BuildKit's automatic registry attestation to keep
the candidate a single-image manifest, then records explicit GitHub build
provenance against the published digest for the environment admission gate.