Claude Platform Docs
Managed AgentsAgentenkontext verwalten

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
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:

FeldBeschreibung
typeErforderlich. Muss "github_repository" sein.
urlErforderlich. 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_tokenErforderlich. Das GitHub-Token, das zum Klonen des Repositorys verwendet wird. Es wird in API-Antworten nicht zurückgegeben. Siehe Token-Berechtigungen.
mount_pathOptional. Das Verzeichnis unter /workspace, in das das Repository geklont wird. Standardmäßig /workspace/<repo-name>.
checkoutOptional. 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:

AktionErforderliche Scopes
Private Repos klonenrepo
PRs erstellenrepo
Issues lesenrepo (privat) oder public_repo
Issues erstellenrepo (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?