MovieGlu MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MovieGlu MCP What are the showtimes for Spider-Man at Regal tonight?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MovieGlu MCP
Real theater showtimes, films, cinemas and ticket deep links from the MovieGlu API, exposed to Open WebUI chat sessions as tools.
Two interchangeable integrations, one shared client:
Path | What it is | When to use |
| Single-file OpenWebUI tool | Fastest path: paste into the web UI ( |
| MCP server (stdio + Streamable HTTP) | OpenWebUI's native MCP integration: |
| Drop-in tool folder (same code) | Prefer installing by file into the container: |
openwebui/movieglu_tool.py and openwebui/movieglu/__init__.py are
byte-identical by design — one canonical tool, two delivery forms.
Open WebUI only speaks Streamable HTTP for MCP (no stdio/SSE natively),
so the server ships an HTTP transport; a stdio transport is included for
local testing and for the mcpo bridge if you ever need it.
1. Get MovieGlu credentials
Request an API key at https://developer.movieglu.com/request-key/ and pick a territory (the evaluation key is limited to that country).
You receive an email with:
client(username)x-api-keyauthorization(a full Basic-auth value, e.g.Basic A1B2c3...)evaluation credentials (75 requests) + sandbox credentials (10,000 requests)
HTTP 429means the quota for that credential set is exhausted.
Related MCP server: Movie Booking MCP Server
2. Configure
Copy .env.example to .env and fill in:
MOVIEGLU_API_KEY=...
MOVIEGLU_CLIENT=...
MOVIEGLU_AUTHORIZATION=Basic ...
MOVIEGLU_TERRITORY=US
MOVIEGLU_LAT=37.7749 # optional default location
MOVIEGLU_LNG=-122.4194 # optional default locationFor the custom tool, the same values are set in
Admin Panel → Tools → MovieGlu → ⚙️ (Valves) — or pre-filled in
openwebui/movieglu/config.yaml.
3. Run the MCP server
pip install . # installs movieglu-mcp + its dependencies
# Streamable HTTP (what OpenWebUI connects to), default port 8000
movieglu-mcp --transport http --port 8000
# endpoint: http://0.0.0.0:8000/mcp
# stdio (local MCP clients / mcpo bridge)
movieglu-mcp --transport stdio(Alternatively run without installing: set PYTHONPATH=src /
export PYTHONPATH=src, then python -m movieglu_mcp ....)
Docker (same behavior, credentials via --env-file .env):
docker build -t movieglu-mcp .
docker run --env-file .env -p 8000:8000 movieglu-mcpConnect to Open WebUI
Settings → Admin → Integrations → External Tool Servers → + Add ConnectionType: MCP (Streamable HTTP)
URL:
server on the host, OpenWebUI in Docker:
http://host.docker.internal:8000/mcpboth on the same Docker network:
http://movieglu-mcp:8000/mcpsame machine / published port:
http://<ip>:8000/mcp
Auth: None (credentials live server-side in the .env, not in OpenWebUI)
Save, restart Open WebUI if prompted.
In a chat:
+ → Integrations → Tools → MovieGlu(enable once per chat for the model to use the tools).
Import the single-file tool through the web interface (recommended)
Open
openwebui/movieglu_tool.pyin this project — it is fully self-contained (frontmatter metadata, credentials UI, client and all 12 tools in one file, no local imports).In Open WebUI: Admin Panel → Tools → Create
ID:
moviegluName:
MovieGluDescription:
Real movies, cinemas and theater showtimes from the MovieGlu API
Paste the entire file contents into the code editor → Save. (Equivalent path: Import From Link with a URL to the file, e.g. a raw GitHub link.)
v0.9.2 note (Monolith build): saving a tool actually loads it first. If the code fails to load (wrong class name, missing import, etc.) the request fails and nothing is stored — the tool will not appear in the list even though the dialog closed. This file follows the v0.9.2 contract:
class Toolswith nestedValves/UserValves, zero-arg__init__, plainasyncmethods, no@function_tool. If a save “succeeds” but the tool never lists, that is the cause.Open the ⚙️ gear icon (Valves) next to the tool and fill in the credentials from your MovieGlu email:
api_key,client,authorization(the fullBasic ...value),territory, and an optional defaultdefault_lat/default_lng.In a chat:
+ → Integrations → Tools → MovieGlu(enable per chat, or set as a default tool on a model).
The requirements: requests frontmatter line makes Open WebUI
auto-install requests on first load
(ENABLE_PIP_INSTALL_FRONTMATTER_REQUIREMENTS is on by default).
Alternative: install the drop-in folder (older OpenWebUI builds)
# inside an OpenWebUI container: copy the whole folder to
/app/backend/open_webui/components/tools/tools/movieglu/Not available in v0.9.x (Monolith build): that
components/toolsdirectory does not exist there; tools are DB-stored and created through the Admin Panel (orPOST /api/v1/tools/create). The folder is kept for compatibility with older builds. Restart Open WebUI, then set the credentials underAdmin Panel → Tools → MovieGlu(same Valves).config.yamlpre-fills defaults;requirements.txtcoversrequests.
4. Tools (12, identical in both integrations)
Tool | MovieGlu resource | Notes |
|
| top films by showtime count |
|
| by release date |
|
| returns |
|
| synopsis, cast, ratings |
|
| trailer URLs |
|
| geolocation required |
|
| min 3-char query |
|
| omit |
|
| by distance; geolocation required |
|
| nearest cinema, any date |
|
| deep link to ticketing page |
|
| credential/connectivity diagnostics |
Typical chat flow: search_movies → movie_showtimes → present times →
ticket_link for the chosen showing.
All tools return a uniform envelope:
{ "ok": true, "data": { ...MovieGlu payload incl. status envelope... } }
{ "ok": false, "error": "...", "status_code": 401, "mg_message": "..." }so the model gets an actionable message instead of a crash.
5. MovieGlu quirks baked into the code
Geolocation header uses a semicolon:
51.510391;-0.13013(max 6 decimals).Cinema day runs 03:00–02:59 — post-midnight showtimes belong to the previous calendar day; never "fix" returned times.
device-datetimemust be current (yyyy-mm-ddThh:mm:ss.sss, no TZ offset) — it's regenerated on every request, and a stale one yields 204s.HTTP 204 = no content (usually geolocation outside the licensed territory or no data); 429 = quota exhausted; the
MG-messageresponse header is surfaced in every error.Resource names are case-sensitive (
cinemaShowTimes, notCinemaDetails-style).filmShowTimes/cinemasNearby/closestShowingrequire a geolocation; without lat/lng the configured default location is used, and the error envelope tells you exactly what to set if there isn't one.
6. Verify
python scripts/check_movieglu.py # live ping with your .env creds
python -m pytest tests -q # offline unit tests (mocked requests)7. Repository layout
MovieGlu MCP/
├── pyproject.toml # package + movieglu-mcp console script
├── requirements.txt # mcp, requests, python-dotenv
├── requirements-dev.txt # + pytest
├── Dockerfile # Streamable HTTP image
├── .env.example # credential/transport config template
├── src/movieglu_mcp/
│ ├── client.py # MovieGlu v200 REST client (no MCP deps)
│ ├── config.py # env/.env -> Settings
│ ├── server.py # FastMCP server, 12 tools
│ └── __main__.py # python -m movieglu_mcp [--transport ...]
├── openwebui/
│ ├── movieglu_tool.py # SINGLE FILE for the web UI (Tools > Create)
│ └── movieglu/ # drop-in folder variant (same code + metadata)
│ ├── __init__.py # byte-identical to movieglu_tool.py
│ ├── manifest.yaml
│ ├── config.yaml # default Valve values
│ └── requirements.txt
├── scripts/check_movieglu.py # credential/connectivity gate
└── tests/test_client.py # mocked-request unit testsAvailable Tools
12 toolsapi_statusA
Diagnose the MovieGlu connection: which credentials are present, and whether a live API call succeeds. Use when other tools fail.
Inputs: no named parameters. Returns: result
cinema_showtimesA
All showtimes at one cinema for one date.
With film_id: only that film. Without: every film playing that day. Times are as published by the cinema; times after midnight belong to the previous day (cinema day = 03:00-02:59).
Args: cinema_id: MovieGlu numeric cinema id. date: YYYY-MM-DD (defaults to today). film_id: Optional film id to narrow the schedule to one film. sort: popularity or alphabetical.
Inputs: cinema_id (required), date, sort, film_id. Returns: result
cinemas_nearbyA
List the cinemas nearest to a location, with addresses and distances.
lat/lng are optional: when omitted, the configured default location (MOVIEGLU_LAT / MOVIEGLU_LNG) is used. Only cinemas with showtimes in the next 10 days are returned.
Args: limit: Max cinemas (default 10, max 25). lat: Latitude (-90..90). lng: Longitude (-180..180).
Inputs: lat, lng, limit. Returns: result
closest_showingA
Nearest cinemas showing a film, regardless of date and time.
For 'where can I see this film at all?' A location is required (lat/lng, or the configured default location).
Args: film_id: MovieGlu numeric film id. limit: Max cinemas (default 5, max 20). lat: Latitude (-90..90), optional. lng: Longitude (-180..180), optional.
Inputs: film_id (required), lat, lng, limit. Returns: result
movie_detailsA
Full metadata for one film: synopsis, cast, directors, genres, ratings, trailers, images and nationwide show dates.
Args: film_id: MovieGlu numeric film id (from search / listing tools). size_category: Image size: small, medium, large, xlarge or xxlarge (comma-separated for multiple).
Inputs: film_id (required), size_category. Returns: result
movies_coming_soonA
List films coming soon to cinemas, ordered by release date.
Includes release dates, age ratings and synopses.
Args: limit: How many films to return (default 10, max 15).
Inputs: limit. Returns: result
movie_showtimesA
Showtimes for one film at the cinemas nearest a location, sorted by distance.
A location is required: pass lat/lng, or set a default location (MOVIEGLU_LAT / MOVIEGLU_LNG).
Args: film_id: MovieGlu numeric film id. date: YYYY-MM-DD (defaults to today). limit: Max cinemas (default 10, max 25). lat: Latitude (-90..90), optional. lng: Longitude (-180..180), optional.
Inputs: film_id (required), lat, lng, date, +1 more. Returns: result
movies_now_showingA
List the top films currently in cinemas in the configured territory.
Results are ordered by number of showtimes in the MovieGlu database. Each film carries a film_id — use it with movie_showtimes, closest_showing, movie_details or ticket_link.
Args: limit: How many films to return (default 10, max 25).
Inputs: limit. Returns: result
movie_trailersB
Trailer URLs (with qualities and regions) for one film.
Args: film_id: MovieGlu numeric film id.
Inputs: film_id (required). Returns: result
search_cinemasA
Search cinema names or towns (min 3 characters, search-as-you-type).
Works best with a geolocation (within 75 miles); without it, results are alphabetical. lat/lng fall back to the configured default location.
Args: query: Cinema chain or town name fragment (3+ chars). limit: Max results (default 5, max 25). lat: Latitude (-90..90), optional. lng: Longitude (-180..180), optional.
Inputs: query (required), lat, lng, limit. Returns: result
search_moviesA
Search film titles by name fragment (search-as-you-type).
Results are ordered by popularity (showtime count) and include film_id, release date, duration and age rating.
Args: query: Film title fragment (at least 1 character). limit: Max results (default 5, max 25).
Inputs: query (required), limit. Returns: result
ticket_linkA
Deep link to the cinema's ticketing page with film, date and time pre-selected. Use after presenting a showtime to the user.
MovieGlu does not support seat selection or payment; the link goes to the cinema's own website.
Args: cinema_id: MovieGlu numeric cinema id. film_id: MovieGlu numeric film id. date: Showtime date YYYY-MM-DD. time: Showtime time HH:MM (24h) exactly as published.
Inputs: date (required), time (required), film_id (required), cinema_id (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 12 tools
Most tools target clearly distinct resources and actions: film discovery, cinema lookup, showtimes by film or cinema, and ticketing. The main overlap is movie_trailers versus movie_details (both include trailers), and movie_showtimes versus closest_showing, but the descriptions make the intended use clear.
Names are mostly resource-oriented with a readable pattern: movie_*, cinema_*, search_*. There are minor inconsistencies like movies_now_showing/movies_coming_soon vs movie_details/movie_showtimes, plus standalone names like closest_showing and ticket_link.
12 tools is well-scoped for a cinema information server. Each tool serves a distinct part of the workflow—discovery, details, showtimes, ticketing, and diagnostics—without feeling bloated or redundant.
The set covers the full cinema lookup journey: finding films and cinemas, retrieving metadata and trailers, checking showtimes by film or venue, finding the closest showing, and linking to ticket purchase. No major lifecycle gaps are apparent for the domain.
Maintenance
Related MCP Connectors
Tiqets MCP server for ChatGPT, Claude and any AI agent: search tickets, check availability, book tickets, list my bookings, download e-tickets and cancel booking in your own Tiqets account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Tiqets yourself; Cotlet does not store your password and you need no Tiqets API key. About the official Tiqets API: Tiqets has an API only for distribution partners such as travel agencies, not for customers (checked 11 Oct 2026). It lists the orders a partner generated, so it cannot see the bookings or tickets of your own Tiqets account. Setup and FAQ: https://cotlet.dev/integrations/tiqets-api-mcp-server
MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent
The Ferryhopper MCP server is a connector for LLMs and AI Agents in maritime travel that exposes ferry routes, schedules, and booking options. It enables AI assistants to search ports and connections across 33 countries and 190+ ferry operators, provide real-time ferry itineraries with indicative prices, and assist users with planning island-hopping or multi-leg journeys by processing natural language queries about ferry times, passenger counts, and travel durations.
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides a comprehensive movie booking experience for AMC Theatres, enabling users to discover movies, find showtimes, select seats, and process payments through conversational AI. Supports multi-location theater search with real-time seat availability and booking management.61MIT
- FlicenseNot gradedqualityDmaintenanceEnables searching for movies, checking Google Calendar for conflicts, and booking tickets with seat type and INR pricing, all through natural conversation. Supports demo mode without API keys.-
- AlicenseAqualityDmaintenanceProvides a comprehensive movie booking experience for AMC Theatres, enabling conversational AI assistants to help users discover movies, find showtimes, book seats, and process payments.6MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to retrieve BookMyShow movie listings, showtimes, ticket prices, and venue locations (including GPS coordinates) via MCP tools.71MIT