Was this page helpful?
Vous pouvez monter un dépôt GitHub dans le conteneur de votre session et vous connecter au MCP GitHub pour créer des pull requests.
Les dépôts GitHub sont mis en cache, de sorte que les sessions futures utilisant le même dépôt démarrent plus rapidement.
Toutes les requêtes de l'API Managed Agents nécessitent l'en-tête bêta managed-agents-2026-04-01. Le SDK définit automatiquement l'en-tête bêta.
Tout d'abord, créez un agent qui déclare le serveur MCP GitHub. La définition de l'agent contient l'URL du serveur mais pas de jeton d'authentification :
agent_id=$(curl -fsS https://api.anthropic.com/v1/agents \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
--data @- <<JSON | jq -r '.id'
{
"name": "Code Reviewer",
"model": "claude-sonnet-4-6",
"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": "github"
}
]
}
JSON
)Ensuite, créez une session qui monte le dépôt GitHub :
Le resources[].authorization_token authentifie l'opération de clonage du dépôt et n'est pas renvoyé dans les réponses de l'API.
Lors de la fourniture d'un jeton GitHub, utilisez les permissions minimales requises :
| Action | Portées requises |
|---|---|
| Cloner des dépôts privés | repo |
| Créer des PR | repo |
| Lire les issues | repo (privé) ou public_repo |
| Créer des issues | repo (privé) ou public_repo |
Utilisez des jetons d'accès personnels à granularité fine avec les permissions minimales requises. Évitez d'utiliser des jetons avec un accès étendu à votre compte GitHub.
Montez plusieurs dépôts en ajoutant des entrées au tableau resources :
Après la création d'une session, vous pouvez lister ses ressources de dépôt et faire tourner leurs jetons d'autorisation. Chaque ressource possède un id renvoyé au moment de la création de la session (ou via resources.list) que vous utilisez pour les mises à jour. Les dépôts sont attachés pour la durée de vie de la session ; pour modifier les dépôts montés, créez une nouvelle session.
Avec le serveur MCP GitHub, l'agent peut créer des branches, valider des modifications et les pousser :
session_id=$(curl -fsS https://api.anthropic.com/v1/sessions \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
--data @- <<JSON | jq -r '.id'
{
"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"
}
]
}
JSON
)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"
}
]'# List resources on the session
repo_resource_id=$(curl -fsS "https://api.anthropic.com/v1/sessions/$session_id/resources" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" | jq -r '.data[0].id')
echo "$repo_resource_id" # "sesrsc_01ABC..."
# Rotate the authorization token
curl -fsS "https://api.anthropic.com/v1/sessions/$session_id/resources/$repo_resource_id" \
-o /dev/null \
--data @- <<JSON
{
"authorization_token": "ghp_your_new_github_token"
}
JSONcurl -fsS "https://api.anthropic.com/v1/sessions/$session_id/events" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
-o /dev/null \
--data @- <<JSON
{
"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."
}
]
}
]
}
JSON