Connect Gemini CLI to the Functionize MCP Server

Gemini CLI connects to the Functionize MCP server natively. It speaks Streamable HTTP, discovers our OAuth configuration on its own, and opens your browser to sign in. No bridge, no Node.js requirement beyond Gemini CLI itself.

The quickest route

gemini mcp add --transport http functionize https://mcp.functionize.com/mcp

To pin a specific team at the same time:

gemini mcp add --transport http \
  --header "X-Functionize-Team-Id: 12345" \
  functionize https://mcp.functionize.com/mcp

Then start Gemini CLI and run /mcp to check the connection. If it needs authenticating, run /mcp auth functionize and complete the sign-in in your browser.

Adding it by hand

Edit one of these:

You, everywhere ~/.gemini/settings.json
Windows: %USERPROFILE%\.gemini\settings.json
One project .gemini/settings.json in the project root
{
  "mcpServers": {
    "functionize": {
      "httpUrl": "https://mcp.functionize.com/mcp",
      "headers": {
        "X-Functionize-Team-Id": "12345"
      },
      "timeout": 600000
    }
  }
}

Use httpUrl, not url. This is the one thing to get right. In Gemini CLI, url selects the legacy SSE transport — it will not error, it will simply connect the wrong way to our Streamable HTTP endpoint. If you have copied a config from another tool's documentation, this is almost certainly what is wrong.

The headers block is optional; omit it to act as whichever team your web login lands on. timeout is in milliseconds and defaults to 600000, or ten minutes.

Leave OAuth settings out entirely. Gemini CLI discovers our authorization and token endpoints automatically the first time it gets a 401, then opens your browser.

Sign in

On first use, Gemini CLI opens your browser and listens on a local callback port. Sign in with the same account you use for Functionize Studio — there is no separate MCP account. If your organisation uses SSO, choose the SSO option rather than typing a password.

Tokens are stored at ~/.gemini/mcp-oauth-tokens.json. Deleting that file forces a fresh sign-in, which is the first thing to try if a previously working connection stops authenticating.

The sign-in page is at functionize.us.auth0.com. If you are ever asked for Functionize credentials on another domain, do not enter them.

Check it worked

In a Gemini CLI session:

/mcp

That shows connection status and the available tools. Then ask it to list your Functionize agent sessions. The list is team-wide, so on a shared team you will see colleagues' sessions too.

Useful commands

gemini mcp listShow configured servers
gemini mcp remove functionizeRemove the entry
/mcpStatus and tools, inside a session
/mcp authList servers needing authentication
/mcp auth functionizeAuthenticate, or re-authenticate after a token expires

Known limitations

Sign-in needs a browser on the same machine. The OAuth callback is served on a local port, so this does not work headless, over SSH without display forwarding, or in a container with no browser. If you work that way, authenticate once on a desktop machine and carry the token file across.

Do not set trust: true. It bypasses every tool-call confirmation for that server, including writes.

If the team header seems ignored, confirm the connection works without it first. Whether a static header is still sent once an OAuth token is attached is not documented by any MCP client vendor, so verify it on your own setup rather than assuming.

For anything else, see Troubleshooting the Functionize MCP Connection.