はじめに
みなさんは、MCPを使っていますか?
僕がMCPの中でも、もっとよく使っているMCPは、GitHub MCPです。
GitHub MCPは、AIエージェントがGiHubを操作できるようにしてくれる仕組みです。
といっても、実際に何ができるのか、AIエージェントにどのようにお願いするかなど、わかりにくいことが多いかと思います。
そのためこの記事では、GitHub MCPにできること、AIエージェントにお願いする方法をまとめようと思います。
GitHub MCP にできること
以下のツールをAIエージェントが使えるようにする
Actionsを操作するツール
-
cancel_workflow_run
- 走っているワークフローをキャンセルする
-
owner(required)、repo(required)、run_id(required)
-
delete_workflow_run_logs
- ワークフローのログを削除する
-
owner(required)、repo(required)、run_id(required)
-
download_workflow_run_artifact
- ワークフローアーティファクトをダウンロードする
-
owner(required)、repo(required)、artifact_id(required)
-
get_job_logs
- ジョブのログを取得する
-
failed_only(optional)、job_id(optional)、owner(required)、repo(required)、return_content(optional)、run_id(optional)、tail_lines(optional)
-
get_workflow_run
- ワークフローの実行を取得する
-
owner(required)、repo(required)、run_id(required)
-
get_workflow_run_logs
- ワークフローのログを取得する
-
owner(required)、repo(required)、run_id(required)
-
get_workflow_run_usage
- ワークフローの使用量を取得する
-
owner(required)、repo(required)、run_id(required)
-
list_workflow_jobs
- ワークフローのジョブを取得する
-
filter(optional)、owner(required)、page(optional)、perPage(optional)、repo(required)、run_id(required)
-
list_workflow_run_artifacts
- ワークフローのアーティファクトを取得する
-
owner(required)、page(optional)、perPage(optional)、repo(required)、run_id(required)、page(optional)、perPage(optional)、repo(required)、run_id(required)
-
list_workflow_runs
- ワークフローの実行を取得する
-
actor(optional)、branch(optional)、event(optional)、owner(required)、page(optional)、perPage(optional)、repo(required)、status(optional)、workflow_id(required)
-
list_workflows
- ワークフローを取得する
-
owner(required)、page(optional)、perPage(optional)、repo(required)
-
rerun_failed_jobs
- 失敗したジョブを再実行する
-
owner(required)、repo(required)、run_id(required)
-
rerun_workflow_run
- ワークフローの実行を再実行する
-
owner(required)、repo(required)、run_id(required)
-
run_workflow
- ワークフローを実行する
-
inputs(optional)、owner(required)、ref(required)、repo(required)、workflow_id(required)
Code Security
-
get_code_scanning_alert
- コードスキャンアラートを取得する
-
alertNumber(required)、owner(required)、repo(required)
-
list_code_scanning_alerts
- コードスキャンアラートを一覧取得する
-
owner(required)、ref(optional)、repo(required)、severity(optional)、state(optional)、tool_name(optional)
Context
-
get_me
- ユーザーのプロフィールを取得する
- パラメーターは不要
-
get_team_members
- チームメンバーを取得する
-
org(required)、team_slug(required)
-
get_teams
- チームを取得する
-
user(optional)
Dependabot
-
get_dependabot_alert
- Dependabotアラートを取得する
-
alertNumber(required)、owner(required)、repo(required)
-
list_dependabot_alerts
- Dependabotアラートを一覧取得する
-
owner(required)、repo(required)、severity(optional)、state(optional)
Discussions
-
get_discussion
- ディスカッションを取得する
-
discussionNumber(required)、owner(required)、repo(required)
-
get_discussion_comments
- ディスカッションのコメントを取得する
-
after(optional)、discussionNumber(required)、owner(required)、perPage(optional)、repo(required)
-
list_discussion_categories
- ディスカッションのカテゴリを一覧取得する
-
owner(required)、repo(optional)
-
list_discussions
- ディスカッションを一覧取得する
-
after(optional)、category(optional)、direction(optional)、orderBy(optional)、owner(required)、perPage(optional)、repo(optional)
Gists
-
create_gist
- Gistを作成する
-
content(required)、description(optional)、filename(required)、public(optional)
-
get_gist
- Gistを取得する
-
gist_id(required)
-
list_gists
- Gistを一覧取得する
-
page(optional)、perPage(optional)、since(optional)、username(optional)
-
update_gist
- Gistを更新する
-
content(required)、description(optional)、filename(required)、gist_id(required)
Issues
-
add_issue_comment
- Issueにコメントを追加する
-
body(required)、issue_number(required)、owner(required)、repo(required)
-
assign_copilot_to_issue
- IssueにCopilotを割り当てる
-
issueNumber(required)、owner(required)、repo(required)
-
get_label
- ラベルを取得する
-
name(required)、owner(required)、repo(required)
-
issue_read
- Issueを取得する
-
issue_number(required)、method(required)、owner(required)、page(optional)、perPage(optional)、repo(required)
-
issue_write
- Issueを作成または更新する
-
assignees(optional)、body(optional)、duplicate_of(optional)、issue_number(optional)、labels(optional)、method(required)、milestone(optional)、owner(required)、repo(required)、state(optional)、state_reason(optional)、title(optional)、type(optional)
-
list_issue_types
- Issueタイプを一覧取得する
-
owner(required)
-
list_issues
- Issueを一覧取得する
-
after(optional)、direction(optional)、labels(optional)、orderBy(optional)、owner(required)、perPage(optional)、repo(required)、since(optional)、state(optional)
-
search_issues
- Issueを検索する
-
order(optional)、owner(optional)、page(optional)、perPage(optional)、query(required)、repo(optional)、sort(optional)
-
sub_issue_write
- Sub-Issueを作成または更新する
-
after_id(optional)、before_id(optional)、issue_number(required)、method(required)、owner(required)、repo(required)、replace_parent(optional)、sub_issue_id(required)
Labels
-
get_label
- ラベルを取得する
-
name(required)、owner(required)、repo(required)
-
label_write
- ラベルを作成または更新する
-
color(optional)、description(optional)、method(required)、name(required)、new_name(optional)、owner(required)、repo(required)
-
list_label
- ラベルを一覧取得する
-
owner(required)、repo(required)
Notifications
-
dismiss_notification
- 通知を無視する
-
state(optional)、threadID(required)
-
get_notification_details
- 通知の詳細を取得する
-
notificationID(required)
-
list_notifications
- 通知を一覧取得する
-
before(optional)、filter(optional)、owner(optional)、page(optional)、perPage(optional)、repo(optional)、since(optional)
-
manage_notification_subscription
- 通知の設定を管理する
-
action(required)、notificationID(required)
-
manage_repository_notification_subscription
- リポジトリの通知設定を管理する
-
action(required)、owner(required)、repo(required)
-
mark_all_notifications_read
- 通知を既読にする
-
lastReadAt(optional)、owner(optional)、repo(optional)
Organizations
-
search_orgs
- Organizationsを検索する
-
order(optional)、page(optional)、perPage(optional)、query(required)、sort(optional)
Projects
-
add_project_item
- プロジェクトにアイテムを追加する
-
item_id(required)、item_type(required)、owner(required)、owner_type(required)、project_number(required)
-
delete_project_item
- プロジェクトのアイテムを削除する
-
item_id(required)、owner(required)、owner_type(required)、project_number(required)
-
get_project
- プロジェクトを取得する
-
owner(required)、owner_type(required)、project_number(required)
-
get_project_field
- プロジェクトのフィールドを取得する
-
field_id(required)、owner(required)、owner_type(required)、project_number(required)
-
get_project_item
- プロジェクトのアイテムを取得する
-
fields(optional)、item_id(required)、owner(required)、owner_type(required)、project_number(required)
-
list_project_fields
- プロジェクトのフィールドを一覧取得する
-
owner(required)、owner_type(required)、per_page(optional)、project_number(required)
-
list_project_items
- プロジェクトのアイテムを一覧取得する
-
fields(optional)、owner(required)、owner_type(required)、per_page(optional)、project_number(required)、query(optional)
-
list_projects - List projects
- プロジェクトを一覧取得する
-
owner(required)、owner_type(required)、per_page(optional)、query(optional)
-
update_project_item
- プロジェクトのアイテムを更新する
-
item_id(required)、owner(required)、owner_type(required)、project_number(required)、updated_field(required)
Pull Requests
-
add_comment_to_pending_review
- リクエスターの最新の保留中のプルリクエストのレビューコメントを追加する
-
body(required)、line(optional)、owner(required)、path(required)、pullNumber(required)、repo(required)、side(optional)、startLine(optional)、startSide(optional)、subjectType(required)
-
create_pull_request
- 新しいプルリクエストを作成する
-
base(required)、body(optional)、draft(optional)、head(required)、maintainer_can_modify(optional)、owner(required)、repo(required)、title(required)
-
list_pull_requests
- プルリクエストを一覧取得する
-
base(optional)、direction(optional)、head(optional)、owner(required)、page(optional)、perPage(optional)、repo(required)、sort(optional)、state(optional)
-
merge_pull_request
- プルリクエストをマージする
-
commit_message(optional)、commit_title(optional)、merge_method(optional)、owner(required)、pullNumber(required)、repo(required)
-
pull_request_read
- プルリクエストの詳細を取得する
-
method(required)、owner(required)、page(optional)、perPage(optional)、pullNumber(required)、repo(required)
-
pull_request_review_write
- プルリクエストのレビューを作成する
-
body(optional)、commitID(optional)、event(optional)、method(required)、owner(required)、pullNumber(required)、repo(required)
-
request_copilot_review
- Copilotのレビューをリクエストする
-
owner(required)、pullNumber(required)、repo(required)
-
search_pull_requests
- プルリクエストを検索する
-
order(optional)、owner(optional)、page(optional)、perPage(optional)、query(required)、repo(optional)、sort(optional)
-
update_pull_request
- プルリクエストを更新する
-
base(optional)、body(optional)、draft(optional)、maintainer_can_modify(optional)、owner(required)、pullNumber(required)、repo(required)、reviewers(optional)、state(optional)、title(optional)
-
update_pull_request_branch
- プルリクエストのブランチを更新する
-
expectedHeadSha(optional)、owner(required)、pullNumber(required)、repo(required)
Repositories
-
create_branch
- ブランチを作成する
-
branch(required)、from_branch(optional)、owner(required)、repo(required)
-
create_or_update_file
- ファイルを作成または更新する
-
branch(required)、content(required)、message(required)、owner(required)、path(required)、repo(required)、sha(optional)
-
create_repository
- リポジトリを作成する
-
autoInit(optional)、description(optional)、name(required)、organization(optional)、private(optional)
-
delete_file
- ファイルを削除する
-
branch(required)、message(required)、owner(required)、path(required)、repo(required)
-
fork_repository
- リポジトリをフォークする
-
organization(optional)、owner(required)、repo(required)
-
get_commit
- コミットの詳細を取得する
-
include_diff(optional)、owner(required)、page(optional)、perPage(optional)、repo(required)、sha(required)
-
get_file_contents
- ファイルまたはディレクトリの内容を取得する
-
owner(required)、path(optional)、ref(optional)、repo(required)、sha(optional)
-
get_latest_release
- 最新のリリースを取得する
-
owner(required)、repo(required)
-
get_release_by_tag
- タグ名によるリリースを取得する
-
owner(required)、repo(required)、tag(required)
-
get_tag
- タグの詳細を取得する
-
owner(required)、repo(required)、tag(required)
-
list_branches
- ブランチを一覧取得する
-
owner(required)、page(optional)、perPage(optional)、repo(required)
-
list_commits - List commits
- コミットを一覧取得する
-
author(optional)、owner(required)、page(optional)、perPage(optional)、repo(required)、sha(optional)
-
list_releases
- リリースを一覧取得する
-
owner(required)、page(optional)、perPage(optional)、repo(required)
-
list_tags
- タグを一覧取得する
-
owner(required)、page(optional)、perPage(optional)、repo(required)
-
push_files
- ファイルをプッシュする
-
branch(required)、files(required)、message(required)、owner(required)、repo(required)
-
search_code
- コードを検索する
-
order(optional)、page(optional)、perPage(optional)、query(required)、sort(optional)
-
search_repositories
- リポジトリを検索する
-
minimal_output(optional)、order(optional)、page(optional)、perPage(optional)、query(required)、sort(optional)
Secret Protection
-
get_secret_scanning_alert
- シークレットスキャンアラートを取得する
-
alertNumber(required)、owner(required)、repo(required)
-
list_secret_scanning_alerts
- シークレットスキャンアラートを一覧取得する
-
owner(required)、repo(required)、resolution(optional)、secret_type(optional)、state(optional)
Security Advisories
-
get_global_security_advisory
- グローバルセキュリティアドバイスを取得する
-
ghsaId(required)
-
list_global_security_advisories
- グローバルセキュリティアドバイスを一覧取得する
-
affects(optional)、cveId(optional)、cwes(optional)、ecosystem(optional)、ghsaId(optional)、isWithdrawn(optional)、modified(optional)、published(optional)、severity(optional)、type(optional)、updated(optional)
-
list_org_repository_security_advisories
- 組織のリポジトリのセキュリティアドバイスを一覧取得する
-
direction(optional)、org(required)、sort(optional)、state(optional)
-
list_repository_security_advisories
- リポジトリのセキュリティアドバイスを一覧取得する
-
direction(optional)、owner(required)、repo(required)、sort(optional)、state(optional)
Stargazers
-
list_starred_repositories - List starred repositories
- スターしたリポジトリを一覧取得する
-
direction(optional)、page(optional)、perPage(optional)、sort(optional)、username(optional)
-
star_repository
- リポジトリをスターする
-
owner(required)、repo(required)
-
unstar_repository
- リポジトリのスターを解除する
-
owner(required)、repo(required)
Users
-
search_users
- ユーザーを検索する
-
order(optional)、page(optional)、perPage(optional)、query(required)、sort(optional)
AIエージェントにGitHub MCPを使わせる
上記にあるようなツールをAIエージェントに任せるには、以下のような文章をプロンプトに渡すといい感じになります。
GitHub MCPを使ってGitHub MCPの〇〇を使って
GitHub MCP の add_comment_to_pending_review ツールを使用して、以下の内容に合わせて、レビューコメントを追加してください
- body: {{ レビューコメント }}
- line: {{ 最後の行 }}
- owner: {{ owner }}
- path: {{ 選択しているファイルの相対パス }}
- pullNumber: {{ プルリクエスト番号 }}
- repo: {{ リポジトリ名 }}
- side: "RIGHT"(削除された行へのコメントを求められた場合は "LEFT")
- startLine: {{ 最初の行 }}(1行のコメントを求められた場合は指定しない)
- startSide: "RIGHT"(削除された行へのコメントを求められた場合は "LEFT"、1行のコメントを求められた場合は指定しない)
- subjectType: "LINE"(ファイル全体に対するコメントや画像ファイルへのコメントを求められた場合は "FILE")
まとめ
このように、GitHub MCPを利用することで、AIエージェントにいろんなことをさせることができるようになります。
ぜひこの記事を参考にGitHub MCPを使ってみてください
最後まで読んでくださってありがとうございます!
普段はデザインやフロントエンドを中心にQiitaに記事を投稿しているので、ぜひQiitaのフォローとX(Twitter)のフォローをお願いします。