Accesso a GitHub
Connetti il tuo agente ai repository GitHub per clonare, leggere e creare pull request.
Puoi montare un repository GitHub nel 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.
GitHub MCP e risorse della sessione
Per prima cosa, crea un agente che dichiara il server GitHub MCP. La definizione dell'agente contiene l'URL del server ma nessun token di autenticazione:
ant apply code-reviewer.md---
name: Code Reviewer
model: claude-opus-5-5
mcp_servers:
- type: url
name: github
url: https://api.githubcopilot.com/mcp/
tools:
- type: agent_toolset_20260401
- type: mcp_toolset
mcp_server_name: github
---
You are a code review assistant with access to GitHub.Quindi crea una sessione che monti il repository GitHub. Con un ambiente limited, la creazione della sessione fallisce con un errore 400 quando l'agente dichiara un server MCP il cui host non è presente in allowed_hosts. Impostare allow_mcp_servers su true nella configurazione di rete dell'ambiente disattiva questo controllo.
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",
},
],
)Una risorsa github_repository accetta i seguenti campi:
| Campo | Descrizione |
|---|---|
type | Obbligatorio. Deve essere "github_repository". |
url | Obbligatorio. L'URL HTTPS del repository nella forma https://github.com/<owner>/<repo>, senza il suffisso .git. Altre forme, inclusi gli URL SSH, vengono rifiutate con un invalid_request_error. |
authorization_token | Obbligatorio. Il token GitHub utilizzato per clonare il repository. Non viene restituito nelle risposte API. Consulta Permessi del token. |
mount_path | Opzionale. La directory sotto /workspace in cui clonare il repository. Il valore predefinito è /workspace/<repo-name>. |
checkout | Opzionale. Un branch ({"type": "branch", "name": "main"}) o commit ({"type": "commit", "sha": "..."}) da effettuare il checkout. Il valore predefinito è il branch predefinito del repository. |
Il montaggio di un repository carica anche eventuali skill memorizzate nella sua directory radice .claude/skills. Le skill vengono individuate una volta per sessione, dallo stato del repository sottoposto a checkout all'avvio della sessione. Consulta Caricare skill da un repository GitHub.
Permessi del token
Quando fornisci un token GitHub, usa i permessi minimi richiesti:
| Azione | Scope richiesti |
|---|---|
| Clonare repo privati | repo |
| Creare PR | repo |
| Leggere issue | repo (privato) o public_repo |
| Creare issue | repo (privato) o public_repo |
Repository multipli
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",
},
]Gestione dei repository su una sessione in esecuzione
Dopo aver creato una sessione, puoi elencarne le risorse repository e ruotarne i token di autorizzazione. Ogni risorsa ha un id restituito al momento della creazione della sessione (o tramite client.beta.sessions.resources.list()) che usi per gli aggiornamenti. I repository restano collegati per tutta la durata della sessione; per cambiare i repository 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",
)Creazione di pull request
Con il server GitHub MCP, l'agente può creare branch, effettuare il commit delle modifiche e inviarle:
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.",
},
],
},
],
)Prossimi passi
Trasmetti eventi in streaming e guida l'agente mentre apre la pull request
Connetti altri server MCP per fornire all'agente strumenti aggiuntivi
Monta file nel sandbox insieme ai tuoi repository
Was this page helpful?