Movie Booking Assistant MCP Server

Local setup required. This server has to be cloned and prepared on your machine before you register it in Claude Code.
1

Set the server up locally

Run this once to clone and prepare the server before adding it to Claude Code.

Run in terminal
pip install -r requirements.txt
2

Register it in Claude Code

After the local setup is done, run this command to point Claude Code at the built server.

Run in terminal
claude mcp add -e "GEMINI_API_KEY=${GEMINI_API_KEY}" movie-booking-assistant -- python "<FULL_PATH_TO_MOVIE_MCP>/dist/index.js"

Replace <FULL_PATH_TO_MOVIE_MCP>/dist/index.js with the actual folder you prepared in step 1.

Required:GEMINI_API_KEY
README.md

A demo movie booking system for Bangalore cinemas

Movie Booking Assistant

A demo movie booking system for Bangalore cinemas, built to showcase two ways of integrating AI with a Python backend:

  1. Gemini chat — a terminal chatbot powered by Google Gemini with function calling
  2. MCP server — exposes the same APIs as tools for MCP-compatible AI clients (e.g. Claude)

Project Structure

demo1/
├── api_v1.py       # Movies & Showtimes API
├── api_v2.py       # Bookings API
├── api_v3.py       # Theatres & Seats API
├── chat.py         # Gemini AI terminal chatbot
└── mcp_server.py   # MCP server (for Claude / other MCP clients)

API Files

File Responsibility Key Functions
api_v1.py Movies & showtimes search_movies, get_movie_details, get_showtimes
api_v2.py Bookings book_tickets, cancel_booking, get_booking_details, list_user_bookings
api_v3.py Theatres & seats list_theatres, get_theatre_details, check_seat_availability

All data is hardcoded in-memory — no database required.


How It Works

Gemini Chat (`chat.py`)

You type a message
  → Sent to Gemini API
    → Gemini picks a tool to call (based on function docstrings)
      → Your code runs the function locally
        → Result sent back to Gemini
          → Gemini replies in plain English

Gemini never runs your code directly. It reads the function name, parameters, and docstring to decide what to call — your code executes it and reports back.

MCP Server (`mcp_server.py`)

FastMCP automatically converts each FastAPI app into MCP tools, namespaced as movies_*, bookings_*, and theatres_*. An MCP-compatible client (like Claude Code) connects to the server and calls tools the same way Gemini does — but over the MCP protocol instead.


Setup

1. Install dependencies

pip install -r requirements.txt

2. Set your Gemini API key

Create a .env file in the project root:

GEMINI_API_KEY=your_key_here

Get a key at aistudio.google.com.


Usage

Run the Gemini chatbot

python chat.py

Example interaction:

You: What sci-fi movies are showing today?
  [calling tool: search_movies with {'genre': 'Sci-Fi'}]

Gemini: There are two sci-fi movies showing today — Inception and The Matrix...

You: Book 2 tickets for Inception at PVR Orion Mall
  [calling tool: get_showtimes with {'movie_id': 'MOVIE-003'}]
  [calling tool: book_tickets with {'showtime_id': 'SHOW-001', 'seats': 2, 'user_name': 'Joshua'}]

Gemini: Done! I've booked 2 tickets for Inception...

Type quit or exit to stop.

Run the MCP server

python mcp_server.py

Then connect any MCP-compatible client to it. For Claude Code, add it to your MCP settings pointing to this script.


Data Overview

  • 10 movies — including Inception, The Matrix, Oppenheimer, and more
  • 10 theatres — across Bangalore (PVR, INOX, Cinepolis)
  • 15 showtimes — across 2 days, with 2D and IMAX options
  • 3 pre-existing bookings — for user "Joshua"

Tools (10)

search_moviesSearch for movies by genre or other criteria
get_movie_detailsRetrieve detailed information about a specific movie
get_showtimesGet showtimes for a specific movie
book_ticketsBook tickets for a specific showtime
cancel_bookingCancel an existing ticket booking
get_booking_detailsRetrieve details of a specific booking
list_user_bookingsList all bookings for a specific user
list_theatresList available theatres in Bangalore
get_theatre_detailsGet details for a specific theatre
check_seat_availabilityCheck seat availability for a showtime

Environment Variables

GEMINI_API_KEYrequiredAPI key for Google Gemini services

Configuration

claude_desktop_config.json
{"mcpServers": {"movie-booking": {"command": "python", "args": ["/path/to/mcp_server.py"]}}}

Try it

What sci-fi movies are showing in Bangalore today?
Check seat availability for Inception at PVR Orion Mall.
Book 2 tickets for The Matrix at the nearest cinema.
List all my current movie bookings.
Cancel my booking for the 6 PM show.

Frequently Asked Questions

What are the key features of Movie Booking Assistant?

Search movies by genre and retrieve detailed information. Check real-time showtimes and seat availability for Bangalore cinemas. Manage end-to-end ticket bookings including creation and cancellation. List and view details of existing user bookings. Exposes FastAPI-based APIs as standardized MCP tools.

What can I use Movie Booking Assistant for?

Demonstrating AI-driven function calling for service interactions. Building an automated personal assistant for cinema planning. Testing MCP client integration with Python-based backend services. Managing movie schedules and ticket reservations in a local environment.

How do I install Movie Booking Assistant?

Install Movie Booking Assistant by running: pip install -r requirements.txt

What MCP clients work with Movie Booking Assistant?

Movie Booking Assistant works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep Movie Booking Assistant docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare