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.
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 --transform id --raw-output < code-reviewer.agent.yaml)name: Code Reviewer
model:
id: claude-opus-5
system: You are a code review assistant with access to GitHub.
mcp_servers:
- type: url
name: github
url: https://api.githubcopilot.com/mcp/
tools:
- type: agent_toolset_20260401
- type: mcp_toolset
mcp_server_name: githubQuindi 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.
Montare un repository carica anche tutte le skill memorizzate nella sua directory radice .claude/skills. Le skill vengono rilevate una sola volta per sessione, dallo stato del repository di cui è stato effettuato il checkout all'avvio della sessione. Consulta Caricare skill da un repository GitHub.
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 |
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 aver creato una sessione, 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 puoi usare per gli aggiornamenti. I repository rimangono collegati per tutta la durata della sessione; per modificare 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.",
},
],
},
],
)Trasmetti eventi in streaming 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?