Zugriff auf GitHub
Verbinde deinen Agenten mit GitHub-Repositories zum Klonen, Lesen und Erstellen von Pull Requests.
Du kannst ein GitHub-Repository in deine Session-Sandbox einbinden und dich mit dem GitHub MCP verbinden, um Pull Requests zu erstellen.
GitHub-Repositories werden zwischengespeichert, sodass zukünftige Sessions, die dasselbe Repository verwenden, schneller starten.
GitHub MCP und Session-Ressourcen
Erstelle zunächst einen Agenten, der den GitHub-MCP-Server deklariert. Die Agentendefinition enthält die Server-URL, aber kein Authentifizierungstoken:
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.Erstelle dann eine Session, die das GitHub-Repository einbindet. Bei einer limited-Umgebung schlägt die Erstellung der Session mit einem 400-Fehler fehl, wenn der Agent einen MCP-Server deklariert, dessen Host nicht in allowed_hosts enthalten ist. Wenn du allow_mcp_servers in den Netzwerkeinstellungen der Umgebung auf true setzt, wird diese Prüfung deaktiviert.
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",
},
],
)Eine github_repository-Ressource akzeptiert die folgenden Felder:
| Feld | Beschreibung |
|---|---|
type | Erforderlich. Muss "github_repository" sein. |
url | Erforderlich. Die HTTPS-URL des Repositorys in der Form https://github.com/<owner>/<repo>, ohne .git-Suffix. Andere Formen, einschließlich SSH-URLs, werden mit einem invalid_request_error abgelehnt. |
authorization_token | Erforderlich. Das GitHub-Token, das zum Klonen des Repositorys verwendet wird. Es wird in API-Antworten nicht zurückgegeben. Siehe Token-Berechtigungen. |
mount_path | Optional. Das Verzeichnis unter /workspace, in das das Repository geklont wird. Standardmäßig /workspace/<repo-name>. |
checkout | Optional. Ein Branch ({"type": "branch", "name": "main"}) oder Commit ({"type": "commit", "sha": "..."}), der ausgecheckt werden soll. Standardmäßig der Standard-Branch des Repositorys. |
Das Einbinden eines Repositorys lädt außerdem alle Skills, die in dessen Stammverzeichnis .claude/skills gespeichert sind. Skills werden einmal pro Session erkannt, und zwar aus dem Repository-Zustand, der beim Start der Session ausgecheckt ist. Siehe Skills aus einem GitHub-Repository laden.
Token-Berechtigungen
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 |
Mehrere Repositories
Binde mehrere Repositories ein, indem du Einträge zum Array resources 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",
},
]Repositories in einer laufenden Session verwalten
Nachdem eine Session erstellt wurde, kannst du ihre Repository-Ressourcen auflisten und deren Autorisierungstokens rotieren. Jede Ressource hat eine id, die bei der Erstellung der Session (oder über client.beta.sessions.resources.list()) zurückgegeben wird und die du für Aktualisierungen verwendest. Repositories bleiben 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",
)Pull Requests erstellen
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.",
},
],
},
],
)Nächste Schritte
Streame Events und steuere den Agenten, während er den Pull Request öffnet
Verbinde weitere MCP-Server, um dem Agenten zusätzliche Tools zu geben
Binde Dateien neben deinen Repositories in der Sandbox ein
Was this page helpful?