Puoi montare un repository GitHub nella sandbox della tua sessione e connetterti al GitHub MCP per creare pull request.
I repository GitHub vengono memorizzati nella cache, quindi le sessioni future che utilizzano lo stesso repository si avviano più velocemente.
Tutte le richieste all'API Managed Agents richiedono l'header beta managed-agents-2026-04-01. L'SDK imposta automaticamente l'header beta.
Per prima cosa, crea un agente che dichiari il server GitHub MCP. La definizione dell'agente contiene l'URL del server ma nessun token di autenticazione:
AGENT_ID=$(ant beta:agents create \
--name "Code Reviewer" \
--model '{id: claude-opus-4-8}' \
--system "You are a code review assistant with access to GitHub." \
--mcp-server '{type: url, name: github, url: https://api.githubcopilot.com/mcp/}' \
--tool '{type: agent_toolset_20260401}' \
--tool '{type: mcp_toolset, mcp_server_name: github}' \
--transform id --raw-output)Quindi crea una sessione che monti il repository GitHub:
session = client.beta.sessions.create(
agent=agent.id,
environment_id=environment.id,
resources=[
{
"type": "github_repository",
"url": "https://github.com/org/repo",
"mount_path": "/workspace/repo",
"authorization_token": "ghp_your_github_token",
},
],
)Il campo resources[].authorization_token autentica l'operazione di clonazione del repository e non viene restituito nelle risposte dell'API.
Quando fornisci un token GitHub, usa i permessi minimi richiesti:
| Azione | Scope richiesti |
|---|---|
| Clonare repository privati | repo |
| Creare PR | repo |
| Leggere issue | repo (privati) o public_repo |
| Creare issue | repo (privati) o public_repo |
Usa "fine-grained personal access tokens" (token di accesso personale granulari) con i permessi minimi richiesti. Evita di usare token con accesso ampio al tuo account GitHub.
Monta più repository aggiungendo voci all'array resources:
resources = [
{
"type": "github_repository",
"url": "https://github.com/org/frontend",
"mount_path": "/workspace/frontend",
"authorization_token": "ghp_your_github_token",
},
{
"type": "github_repository",
"url": "https://github.com/org/backend",
"mount_path": "/workspace/backend",
"authorization_token": "ghp_your_github_token",
},
]Dopo che una sessione è stata creata, puoi elencare le sue risorse repository e ruotare i loro token di autorizzazione. Ogni risorsa ha un id restituito al momento della creazione della sessione (o tramite resources.list) che usi per gli aggiornamenti. I repository sono collegati per l'intera durata della sessione; per cambiare quali repository sono montati, crea una nuova sessione.
# Elenca le risorse nella sessione
listed = client.beta.sessions.resources.list(session.id)
repo_resource_id = listed.data[0].id
print(repo_resource_id) # "sesrsc_01ABC..."
# Ruota il token di autorizzazione
client.beta.sessions.resources.update(
repo_resource_id,
session_id=session.id,
authorization_token="ghp_your_new_github_token",
)Con il server GitHub MCP, l'agente può creare branch, effettuare commit delle modifiche ed eseguirne il push:
client.beta.sessions.events.send(
session.id,
events=[
{
"type": "user.message",
"content": [
{
"type": "text",
"text": "Fix the type error in src/utils.ts, commit it to a new branch, and push it.",
},
],
},
],
)Esegui lo streaming degli eventi e guida l'agente mentre apre la pull request
Connetti più server MCP per fornire all'agente strumenti aggiuntivi
Monta file nella sandbox insieme ai tuoi repository
Was this page helpful?