GitHubリポジトリをセッションのサンドボックスにマウントし、プルリクエストを作成するためにGitHub MCPに接続できます。
GitHubリポジトリはキャッシュされるため、同じリポジトリを使用する以降のセッションはより速く開始されます。
まず、GitHub MCPサーバーを宣言するエージェントを作成します。エージェント定義にはサーバーURLが含まれますが、認証トークンは含まれません。
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: github次に、GitHubリポジトリをマウントするセッションを作成します。
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",
},
],
)resources[].authorization_tokenはリポジトリのクローン操作を認証するために使用され、APIレスポンスには返されません。
リポジトリをマウントすると、そのルートの.claude/skillsディレクトリに保存されているスキルも読み込まれます。スキルはセッションごとに1回、セッション開始時にチェックアウトされたリポジトリの状態から検出されます。詳細はGitHubリポジトリからスキルを読み込むを参照してください。
GitHubトークンを提供する際は、必要最小限の権限を使用してください。
| アクション | 必要なスコープ |
|---|---|
| プライベートリポジトリのクローン | repo |
| PRの作成 | repo |
| Issueの読み取り | repo(プライベート)またはpublic_repo |
| Issueの作成 | repo(プライベート)またはpublic_repo |
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",
},
]セッションの作成後、そのリポジトリリソースを一覧表示し、認証トークンをローテーションできます。各リソースには、セッション作成時(またはresources.listを通じて)返されるidがあり、更新時にこれを使用します。リポジトリはセッションの存続期間中アタッチされたままです。マウントするリポジトリを変更するには、新しいセッションを作成してください。
# セッション上のリソースを一覧表示
listed = client.beta.sessions.resources.list(session.id)
repo_resource_id = listed.data[0].id
print(repo_resource_id) # "sesrsc_01ABC..."
# 認証トークンをローテーション
client.beta.sessions.resources.update(
repo_resource_id,
session_id=session.id,
authorization_token="ghp_your_new_github_token",
)GitHub MCPサーバーを使用すると、エージェントはブランチの作成、変更のコミット、プッシュを行うことができます。
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.",
},
],
},
],
)エージェントがプルリクエストを開いている間、イベントをストリーミングしてエージェントを誘導します
さらに多くのMCPサーバーを接続して、エージェントに追加のツールを提供します
リポジトリと一緒にサンドボックスにファイルをマウントします
Was this page helpful?