TL;DR: gemini-faf-mcp now auto-selects its transport — stdio locally, Streamable HTTP on Cloud Run. Same binary, 12 tools, zero config. One binary that's a local MCP server and a hosted one, decided by its environment.
One Command, Both Modes
gemini-faf-mcp reads its environment and adapts. Run it locally and it speaks stdio — the transport uvx and MCP clients expect. Set a PORT (as Google Cloud Run does) and the same binary serves modern Streamable HTTP: stateless, JSON, no SSE. No flags. No second package. No config. The server decides.
uvx gemini-faf-mcp → stdio (local / MCP client)
PORT=8080 → python app → Streamable HTTP (Cloud Run)






