Du kannst ein GitHub-Repository in die Sandbox deiner Session einbinden und dich mit dem GitHub-MCP verbinden, um Pull Requests zu erstellen.
GitHub-Repositories werden gecacht, sodass zukünftige Sessions, die dasselbe Repository verwenden, schneller starten.
Erstelle zunächst einen Agenten, der den GitHub-MCP-Server deklariert. Die Agentendefinition enthält die Server-URL, aber kein Authentifizierungs-Token:
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: githubErstelle dann eine Session, die das GitHub-Repository einbindet:
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",
},
],
)Das resources[].authorization_token authentifiziert den Klonvorgang des Repositories und wird in API-Antworten nicht zurückgegeben.
Beim Einbinden eines Repositories werden auch alle Skills geladen, die im Stammverzeichnis .claude/skills gespeichert sind. Skills werden einmal pro Session erkannt, basierend auf dem Repository-Zustand, der beim Session-Start ausgecheckt wurde. Siehe Skills aus einem GitHub-Repository laden.
Wenn du ein GitHub-Token bereitstellst, verwende die minimal erforderlichen Berechtigungen:
| Aktion | Erforderliche Scopes |
|---|---|
| Private Repos klonen | repo |
| PRs erstellen | repo |
| Issues lesen | repo (privat) oder public_repo |
| Issues erstellen | repo (privat) oder public_repo |
Binde mehrere Repositories ein, indem du Einträge zum resources-Array hinzufügst:
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",
},
]Nachdem eine Session erstellt wurde, kannst du ihre Repository-Ressourcen auflisten und deren Autorisierungs-Tokens rotieren. Jede Ressource hat eine id, die bei der Session-Erstellung (oder über resources.list) zurückgegeben wird und die du für Aktualisierungen verwendest. Repositories sind für die gesamte Lebensdauer der Session angehängt; um zu ändern, welche Repositories eingebunden sind, erstelle eine neue Session.
# Liste die Ressourcen der Session auf
listed = client.beta.sessions.resources.list(session.id)
repo_resource_id = listed.data[0].id
print(repo_resource_id) # "sesrsc_01ABC..."
# Rotiere das Autorisierungs-Token
client.beta.sessions.resources.update(
repo_resource_id,
session_id=session.id,
authorization_token="ghp_your_new_github_token",
)Mit dem GitHub-MCP-Server kann der Agent Branches erstellen, Änderungen committen und sie pushen:
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.",
},
],
},
],
)Streame Events und steuere den Agenten, während er den Pull Request öffnet
Verbinde weitere MCP-Server, um dem Agenten zusätzliche Tools bereitzustellen
Binde Dateien neben deinen Repositories in die Sandbox ein
Was this page helpful?