Skip to main content
Glama
samayyy

zee5-catalog-mcp

by samayyy

zee5-mcp-public — Public Catalog MCP (FastMCP, Cloud Run)

Self-hosted public catalog MCP server for the Stream Discovery ADK agent. Streamable-HTTP MCP (FastMCP 3.x), stateless, mounts at /mcp. All data is synthetic (invented titles — no real catalog/PII).

Tools: search_catalog, get_title_metadata, get_similar_titles, get_trending, get_new_releases.

Deploy to Cloud Run (public, unauthenticated) — Singapore

export PROJECT_ID="gm-test-337806"
export REGION="asia-southeast1"

gcloud config set project "$PROJECT_ID"
gcloud services enable run.googleapis.com cloudbuild.googleapis.com artifactregistry.googleapis.com

git clone https://github.com/<you>/zee5-mcp-public.git && cd zee5-mcp-public

gcloud run deploy zee5-catalog-mcp \
  --source . \
  --region="$REGION" \
  --allow-unauthenticated \
  --min-instances=1 \
  --timeout=3600 \
  --no-cpu-throttling \
  --project="$PROJECT_ID"

# Capture the public URL (the MCP endpoint is <URL>/mcp):
gcloud run services describe zee5-catalog-mcp --region="$REGION" \
  --project="$PROJECT_ID" --format='value(status.url)'

If --allow-unauthenticated fails with One or more users named in the policy do not belong to a permitted customer (org Domain-Restricted-Sharing), replace it with --no-invoker-iam-check (makes the service public without an allUsers IAM binding).

Related MCP server: Catalog Services MCP Server

Smoke test

URL=$(gcloud run services describe zee5-catalog-mcp --region="$REGION" --format='value(status.url)')
curl -s "$URL/mcp" -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | head -c 600

Local run

pip install -r requirements.txt
PORT=8081 python server.py    # http://127.0.0.1:8081/mcp

Related MCP Connectors

Related MCP Servers