Files
Kathy Wu e8526f7e06 fix: Fix credential manager so that it supports the ServiceAccountCredentialExchanger
This fixes MCP authentication for gcloud service accounts. Previously it was failing to authenticate tool calls.

Co-authored-by: Kathy Wu <wukathy@google.com>
PiperOrigin-RevId: 826639044
2025-10-31 14:55:06 -07:00

2.0 KiB

MCP Service Account Agent Sample

This agent demonstrates how to connect to a remote MCP server using a gcloud service account for authentication. It uses Streamable HTTP for communication.

Setup

Before running the agent, you need to configure the MCP server URL and your service account credentials in agent.py.

  1. Configure MCP Server URL: Update the MCP_SERVER_URL variable with the URL of your MCP server instance.

    # agent.py
    # TODO: Update this to the production MCP server url and scopes.
    MCP_SERVER_URL = "https://test.sandbox.googleapis.com/mcp"
    
  2. Set up Service Account Credentials:

    • Obtain the JSON key file for your gcloud service account.
    • In agent.py, find the ServiceAccountCredential object and populate its parameters (e.g., project_id, private_key, client_email, etc.) with the corresponding values from your JSON key file.
    # agent.py
    # TODO: Update this to the user's service account credentials.
    auth_credential=AuthCredential(
        auth_type=AuthCredentialTypes.SERVICE_ACCOUNT,
        service_account=ServiceAccount(
            service_account_credential=ServiceAccountCredential(
                type_="service_account",
                project_id="example",
                private_key_id="123",
                private_key="123",
                client_email="test@example.iam.gserviceaccount.com",
                client_id="123",
                auth_uri="https://accounts.google.com/o/oauth2/auth",
                token_uri="https://oauth2.googleapis.com/token",
                auth_provider_x509_cert_url=(
                    "https://www.googleapis.com/oauth2/v1/certs"
                ),
                client_x509_cert_url="https://www.googleapis.com/robot/v1/metadata/x509/example.iam.gserviceaccount.com",
                universe_domain="googleapis.com",
            ),
            scopes=SCOPES.keys(),
        ),
    ),
    

Running the Agent

Once configured, you can run the agent.

For example:

adk web