{"client_config_example": {"mcpServers": {"johnfiocca-magic-ball": {"url": "https://mcp.johnfiocca.com/mcp"}}}, "cloud_function_name": "johnfiocca-mcp-demo", "demo_commands": {"health": "curl https://mcp.johnfiocca.com/healthz/", "mcp_tools_list": "curl -X POST https://mcp.johnfiocca.com/mcp -H 'Content-Type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}'", "open": "curl https://mcp.johnfiocca.com/", "rest_demo": "curl -X POST https://mcp.johnfiocca.com/demo/magic-ball -H 'Content-Type: application/json' -d '{\"question\":\"Will this demo work?\"}'"}, "description": "A small public Model Context Protocol demo hosted as a Google Cloud Run function.", "fastmcp": {"module": "fastmcp_server.py", "note": "FastMCP defines the canonical MCP tools; the Cloud Run function wrapper reuses the same logic."}, "google_cloud_project": "olive-paws", "health_endpoint": "/healthz/", "mcp_endpoint": "/mcp", "name": "mcp.johnfiocca.com public MCP demo", "non_mcp_demo_endpoint": "/demo/magic-ball", "safety": ["Questions are not stored.", "Authorization, Cookie, and other sensitive headers are not logged.", "Magic-ball answers are random, non-advisory, and for demonstration only."], "tools": [{"description": "Accepts a question and returns a random, safe demo answer with a timestamp.", "name": "magic_ball"}, {"description": "Explains what this MCP server exposes and how MCP differs from a regular REST API.", "name": "explain_mcp"}]}