google / google/adk-python

to_a2a(): accept a service_url string instead of separate host/port/protocol params

Open
#5,060 2 comments 0 reactions 2 assignees Claimed by @ankursharmas View on GitHub
core needs review
Dominant language
Python
Stars
21.5k
Forks
4k
Avg merge
1d 14h
Merged PRs (30d)
37

Description

## Feature request

`to_a2a()` currently requires `host`, `port`, and `protocol` as separate parameters:

```python
app = to_a2a(
root_agent,
host="localhost",
port=8002,
protocol="http",
runner=_create_runner,
agent_card=agent_card,
)
```

In practice, the service URL is typically available as a single string (e.g. `SERVICE_URL=http://localhost:8002` for local dev, or `https://my-agent.europe-west1.run.app` on Cloud Run). This forces every consumer to manually parse the URL with `urlparse()` to extract the three components:

```python
parsed = urlparse(settings.SERVICE_URL)
protocol = parsed.scheme or "http"
host = parsed.hostname or "localhost"
port = parsed.port or (443 if protocol == "https" else 80)
```

## Proposal

Accept an optional `service_url` parameter as an alternative to `host`/`port`/`protocol`:

```python
# New — single URL string
app = to_a2a(root_agent, service_url="http://localhost:8002", ...)

# Existing — still works
app = to_a2a(root_agent, host="localhost", port=8002, protocol="http", ...)
```

This would reduce boilerplate for Cloud Run, Kubernetes, and any deployment where the URL comes from an environment variable.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.