Files
adk-python/contributing/samples/mcp_service_account_agent/README.md
T
Kathy WuandCopybara-Service 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

55 lines
2.0 KiB
Markdown

# 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.
```python
# 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.
```python
# 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:
```bash
adk web
```