zee5-catalog-mcp
by samayyy
README.md
# 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
```bash
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).
## Smoke test
```bash
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
```bash
pip install -r requirements.txt
PORT=8081 python server.py # http://127.0.0.1:8081/mcp
```
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues