Connectors · Developer & infrastructure
GitHub MCP server for AI agents.
actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to GitHub and the rest of your systems. It gives your agent 602 GitHub actions (321 reads, 177 writes and 104 that wait for a confirmation) and holds the GitHub credential itself, so the agent never does. It paces GitHub's limits and records every call.
100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.
claude mcp add --transport http actionlake https://connect.actionlake.com/mcpdo { action: "github.users.list", intent: "check which GitHub account is connected"}# List users · read · 1 upstream call- 602actionsin one signed file
- 321readlook, never change
- 177writecreate and update
- 104wait for a yesdestructive, confirmed first
Set up
Connect GitHub in three steps.
- 01
Add actionlake to Claude.
Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
https://connect.actionlake.com/mcp - 02
Connect GitHub.
Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.
tokenGitHub personal access token
account { op: "connections.requirements", service: "github" } # free: exactly what to paste, and what is found for you - 03
Make the first call. Check before a write.
Ask in plain words; Claude picks the action. Before anything changes,
checkvalidates the call and prices it, for free.do { action: "github.users.list" }# list users · read · 1 upstream callcheck { action: "github.teams.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent
GitHub at a glance
- Sign-in
- Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
- You provide
token- Limits we pace to
- 5,000 calls an hour, per connection
- API covered
- GitHub API 2022-11-28
api.github.com - Built from
- GitHub's documentation, read 15 September 2026OpenAPI spec (GitHub)
- Service file
- Version 2.0.0, signed (Ed25519)
- Cached reads
- 305 of 321 reads, for up to an hour; a write clears what it affects
- Ready-made plans
- 10 in the store
- Shared entities
- 6, so ask can line GitHub up with your other systems
- Data
- Processed and stored in Sydney, Australia. No US region yet
Capabilities
What an AI agent can do in GitHub.
602 actions in 16 areas. Every one carries its effect, so a key can allow the reads and hold the rest.
- 321readlook, never change
- 177writecreate and update
- 104destructivewait for a confirmation
Repositories
14171 read · 46 write · 24 destructive
List organization repositories · List release assets · List repository teams · List repositories for the authenticated user
Actions
7942 read · 18 write · 19 destructive
List selected repositories for an organization secret · List selected repositories for an organization variable · List artifacts for a repository · List workflow run artifacts
Issues
5827 read · 20 write · 11 destructive
List repository issues · List issue comments for a repository · Create an issue · List issues assigned to the authenticated user
Organisations
5026 read · 15 write · 9 destructive
List organizations · List organizations for the authenticated user · List organizations for a user · List organization invitation teams
Users
4728 read · 9 write · 10 destructive
List users · Get a user using their ID · Get a user · Get contextual information for a user
Activity
3424 read · 6 write · 4 destructive
List notifications for the authenticated user · List repository notifications for the authenticated user · Get feeds · List events for the authenticated user
Pull requests
3415 read · 16 write · 3 destructive
List pull requests · Create a pull request stack · Create a pull request · Create a review for a pull request
Teams
3217 read · 8 write · 7 destructive
List teams · List child teams · List child teams (Legacy) · List teams for the authenticated user
8 more areas · 127 actions
- Packages 27
- Projects 26
- Gists 20
- Reactions 15
- Git 13
- Checks 12
- Meta 7
- Search 7
GitHub's own MCP server
GitHub's MCP server, or actionlake?
GitHub runs a remote MCP server at api.githubcopilot.com/mcp, signed in with OAuth or a personal access token, and publishes the same server to run locally.
Use GitHub's server when one person wants to work in GitHub from their own AI client. Use actionlake when you also want GitHub behind the same endpoint as your other systems: a key per agent with allowed actions and a spending cap, a named person's approval before destructive actions, a sealed record of every call, and one ask across GitHub and another system.
Source: GitHub's documentation, checked 22 October 2026.
Top actions
The GitHub API, shaped for agents.
The ids your agent types, what each does, and the one name it shares with other systems. 259 of GitHub's 264 action names are shared with at least one other connector, so an agent learns them once.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
github.users.listList users | List users | read | identity.user.list474 connectors |
github.orgs.listList organizations | List organizations | read | identity.group.list262 connectors |
github.repos.list_for_orgList organization repositories | List organization repositories | read | devops.repository.list28 connectors |
github.repos.list_release_assetsList release assets | List release assets | read | devops.artifact.list17 connectors |
github.teams.listList teams | List teams | read | identity.group.list262 connectors |
github.teams.createCreate a team | Create a team | write | identity.group.create205 connectors |
github.issues.list_for_repoList repository issues | List repository issues | read | work.task.list122 connectors |
github.users.get_by_idGet a user using their ID | Get a user using their ID | read | identity.user.get399 connectors |
github.repos.list_forksList forks | List forks | read | devops.repository.list28 connectors |
github.users.update_authenticatedUpdate the authenticated user | Update the authenticated user | write | identity.user.update280 connectors |
github.orgs.deleteDelete an organization | Delete an organization | destructive | identity.group.delete181 connectors |
github.issues.createCreate an issue | Create an issue | write | work.task.create127 connectors |
Try it
Prompts to paste into Claude.
Each one names the GitHub actions it will call, so you know what it reads and what it changes before you send it.
- Readread
Which GitHub tasks are overdue, and who owns each one?
calls
github.issues.list_for_repo - Planwrite
Audit protection settings on a branch in GitHub.
calls
github.repos.get_branchgithub.repos.get_pull_request_review_protectiongithub.repos.get_all_status_check_contextsgithub.repos.get_teams_with_access_to_protected_branchgithub.repos.set_status_check_contexts+1 more - Planwrite
Create a repository from a template and set it up in GitHub. Ask me before anything is sent or changed.
calls
github.repos.create_using_templategithub.repos.get_readmegithub.repos.create_or_update_file_contentsgithub.repos.create_autolinkgithub.issues.create_milestone+1 more - Writewrite
Create a team in GitHub. Show me exactly what you will send before you save it.
calls
github.teams.create
The plan store
Ready-made plans for GitHub.
10 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.
Collect a weekly health snapshot for a repository
Use it when Someone wants a weekly read-only health snapshot of a single repository.
Triage stale organisation issues and label them
Use it when An agent needs to find and label issues in an organisation that have gone quiet.
Read and clear repository notifications
Use it when A noisy repository notification inbox needs reading and clearing down.
Rotate an organisation Actions secret
Use it when An organisation Actions secret needs a new value pushed with an approval trail.
A person decides
Overwrite organisation secret secret name in org with a new encrypted value. Running workflows will pick it up immediately.
Audit protection settings on a branch
Use it when Someone wants to see how a protected branch is configured and align its required checks.
Publish a draft release and announce it
Use it when A draft GitHub release is ready and someone wants it published with a sign-off.
A person decides
Publish release tag name of owner/repo to the public and mark it latest.
Create a repository from a template and set it up
Use it when A new project repository must be stood up from a template with its initial scaffolding.
A person decides
Create repository org/name from template template owner/template repo.
Approve and merge a pull request once checks are green
Use it when A pull request is ready and someone wants it reviewed and merged with a sign-off.
A person decides
Approve and merge owner/repo pull request #pull number using merge method.
Offboard a member from an organisation
Use it when Someone has left and their organisation access must be revoked with a sign-off.
A person decides
Remove username (role) from the org organisation. This revokes all their access.
Re-run a failed workflow and wait for the result
Use it when A CI run failed and someone wants it retried once a human agrees.
A person decides
Re-run workflow name on owner/repo after failure in job name.
account { op: "plans.install", slug: "github-weekly-repo-health-report" }
# then ask for it by name; a schedule can run it on a timetableGovernance for GitHub
Destructive actions wait for a yes.
104 GitHub actions are destructive. The first 10:
- Delete an organization
github.orgs.delete - Delete a team
github.teams.delete_in_org - Delete a team (Legacy)
github.teams.delete_legacy - Delete a repository
github.repos.delete - Delete an artifact
github.actions.delete_artifact - Delete a release asset
github.repos.delete_release_asset - Unlock an issue
github.issues.unlock - Delete project item for organization
github.projects.delete_item_for_org - Delete project item for user
github.projects.delete_item_for_user - Transfer a repository
github.repos.transfer
A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.
Delete an organization?
intent: the user asked me to delete an organization
account { op: "keys.create", name: "github-agent", allowed_actions: ["github.*"], cap_calls: 2000, confirm_policy: "human_for_writes", approval_rules: [ { match: "github.orgs.delete", approver: "[email protected]" }, { match: "github.teams.delete_in_org", approver: "[email protected]" }, { match: "github.teams.delete_legacy", approver: "[email protected]" } ]}Cost
What GitHub costs on actionlake.
Every GitHub action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call GitHub refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
- 1upstream call per actionall 602 GitHub actions
- 602actions pageeach page of a long list is one call
- 305reads can be cacheda cache hit costs nothing
- 100,000calls a month, freepaid plans from US$49 a month for 250,000
Action index
Every GitHub action.
602 actions by area: the id your agent calls, what it does, and its effect.
Repositories141
github.repos.list_for_authenticated_userList repositories for the authenticated userreadgithub.repos.list_for_orgList organization repositoriesreadgithub.repos.list_release_assetsList release assetsreadgithub.repos.list_teamsList repository teamsreadgithub.repos.accept_invitation_for_authenticated_userAccept a repository invitationwritegithub.repos.add_app_access_restrictionsAdd app access restrictionswrite- and 135 more in this area
Actions79
github.actions.list_artifacts_for_repoList artifacts for a repositoryreadgithub.actions.list_selected_repos_for_org_secretList selected repositories for an organization secretreadgithub.actions.list_selected_repos_for_org_variableList selected repositories for an organization variablereadgithub.actions.list_workflow_run_artifactsList workflow run artifactsreadgithub.actions.add_selected_repo_to_org_secretAdd selected repository to an organization secretwritegithub.actions.add_selected_repo_to_org_variableAdd selected repository to an organization variablewrite- and 73 more in this area
Issues58
github.issues.createCreate an issuewritegithub.issues.listList issues assigned to the authenticated userreadgithub.issues.list_comments_for_repoList issue comments for a repositoryreadgithub.issues.list_for_repoList repository issuesreadgithub.issues.add_assigneesAdd assignees to an issuewritegithub.issues.add_blocked_by_dependencyAdd a dependency an issue is blocked bywrite- and 52 more in this area
Organisations50
github.orgs.listList organizationsreadgithub.orgs.list_for_authenticated_userList organizations for the authenticated userreadgithub.orgs.list_for_userList organizations for a userreadgithub.orgs.list_invitation_teamsList organization invitation teamsreadgithub.orgs.block_userBlock a user from an organizationwritegithub.orgs.cancel_invitationCancel an organization invitationdestructive- and 44 more in this area
Users47
github.users.get_by_idGet a user using their IDreadgithub.users.get_by_usernameGet a userreadgithub.users.get_context_for_userGet contextual information for a userreadgithub.users.listList usersreadgithub.users.add_email_for_authenticated_userAdd an email address for the authenticated userwritegithub.users.add_social_account_for_authenticated_userAdd social accounts for the authenticated userwrite- and 41 more in this area
Activity34
github.activity.get_feedsGet feedsreadgithub.activity.list_events_for_authenticated_userList events for the authenticated userreadgithub.activity.list_notifications_for_authenticated_userList notifications for the authenticated userreadgithub.activity.list_repo_notifications_for_authenticated_userList repository notifications for the authenticated userreadgithub.activity.check_repo_is_starred_by_authenticated_userCheck if a repository is starred by the authenticated userreadgithub.activity.delete_repo_subscriptionDelete a repository subscriptiondestructive- and 28 more in this area
Pull requests34
github.pull_request_stacks.createCreate a pull request stackwritegithub.pulls.createCreate a pull requestwritegithub.pulls.create_reviewCreate a review for a pull requestwritegithub.pulls.listList pull requestsreadgithub.pull_request_stacks.addAdd pull requests to a pull request stackwritegithub.pull_request_stacks.getGet a pull request stackread- and 28 more in this area
Teams32
github.teams.listList teamsreadgithub.teams.list_child_in_orgList child teamsreadgithub.teams.list_child_legacyList child teams (Legacy)readgithub.teams.list_for_authenticated_userList teams for the authenticated userreadgithub.teams.add_member_legacyAdd team member (Legacy)writegithub.teams.add_or_update_membership_for_user_in_orgAdd or update team membership for a userwrite- and 26 more in this area
Packages27
github.packages.list_docker_migration_conflicting_packages_for_authenticated_userGet list of conflicting packages during Docker migration for authenticated-userreadgithub.packages.list_docker_migration_conflicting_packages_for_organizationGet list of conflicting packages during Docker migration for organizationreadgithub.packages.list_docker_migration_conflicting_packages_for_userGet list of conflicting packages during Docker migration for userreadgithub.packages.list_packages_for_authenticated_userList packages for the authenticated user's namespacereadgithub.packages.delete_package_for_authenticated_userDelete a package for the authenticated userdestructivegithub.packages.delete_package_for_orgDelete a package for an organizationdestructive- and 21 more in this area
Projects26
github.projects.add_item_for_orgAdd item to organization owned projectwritegithub.projects.add_item_for_userAdd item to user owned projectwritegithub.projects.create_draft_item_for_authenticated_userCreate draft item for user owned projectwritegithub.projects.create_draft_item_for_orgCreate draft item for organization owned projectwritegithub.projects.add_field_for_orgAdd a field to an organization-owned project.writegithub.projects.add_field_for_userAdd field to user owned projectwrite- and 20 more in this area
Gists20
github.gists.createCreate a gistwritegithub.gists.forkFork a gistwritegithub.gists.listList gists for the authenticated userreadgithub.gists.list_commitsList gist commitsreadgithub.gists.check_is_starredCheck if a gist is starredreadgithub.gists.create_commentCreate a gist commentwrite- and 14 more in this area
Reactions15
github.reactions.create_for_commit_commentCreate reaction for a commit commentwritegithub.reactions.list_for_commit_commentList reactions for a commit commentreadgithub.reactions.list_for_pull_request_review_commentList reactions for a pull request review commentreadgithub.reactions.list_for_releaseList reactions for a releasereadgithub.reactions.create_for_issueCreate reaction for an issuewritegithub.reactions.create_for_issue_commentCreate reaction for an issue commentwrite- and 9 more in this area
Git13
github.git.create_refCreate a referencewritegithub.git.create_tagCreate a tag objectwritegithub.git.get_treeGet a treereadgithub.git.list_matching_refsList matching referencesreadgithub.git.create_blobCreate a blobwritegithub.git.create_commitCreate a commitwrite- and 7 more in this area
Checks12
github.checks.list_annotationsList check run annotationsreadgithub.checks.list_for_refList check runs for a Git referencereadgithub.checks.list_for_suiteList check runs in a check suitereadgithub.checks.list_suites_for_refList check suites for a Git referencereadgithub.checks.createCreate a check runwritegithub.checks.create_suiteCreate a check suitewrite- and 6 more in this area
Meta7
github.licenses.get_for_repoGet the license for a repositoryreadgithub.meta.getGet GitHub meta informationreadgithub.meta.get_all_versionsGet all API versionsreadgithub.meta.get_octocatGet Octocatreadgithub.meta.get_zenGet the Zen of GitHubreadgithub.meta.rootGitHub API Rootread- and 1 more in this area
Search7
github.search.issues_and_pull_requestsSearch issues and pull requestsreadgithub.search.reposSearch repositoriesreadgithub.search.topicsSearch topicsreadgithub.search.usersSearch usersreadgithub.search.codeSearch codereadgithub.search.commitsSearch commitsread- and 1 more in this area
This index shows a sample of each area. All 602 actions, with their inputs and prices, are in the catalogue, which a free sandbox key can search.
Questions
The GitHub MCP server, answered.
Is there a GitHub MCP server for Claude?
Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 602 GitHub actions across repositories, actions, issues and organisations, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by GitHub.
Does GitHub have its own MCP server?
GitHub runs a remote MCP server at api.githubcopilot.com/mcp, signed in with OAuth or a personal access token, and publishes the same server to run locally. (GitHub's documentation, checked 22 October 2026.) Use GitHub's server when one person wants to work in GitHub from their own AI client. Use actionlake when you also want GitHub behind the same endpoint as your other systems: a key per agent with allowed actions and a spending cap, a named person's approval before destructive actions, a sealed record of every call, and one ask across GitHub and another system.
What do I need to connect GitHub?
GitHub personal access token. The free call account { op: "connections.requirements", service: "github" } lists exactly what to paste.
Can an AI agent delete or change things in GitHub?
Only if its key allows it, and only with an explicit confirmation. 104 GitHub actions are destructive, including delete an organization, delete a team and delete a team (Legacy). Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.
Will an AI agent use up my GitHub API limit?
actionlake paces every call to the limits in the GitHub service file: 5,000 calls an hour per connection. Repeated reads are answered from cache (305 GitHub actions can be), which never reaches GitHub.
What does a GitHub action cost?
One upstream call, the only unit actionlake bills. A list that pages bills one call per page (602 GitHub actions page). Cache hits, searches, dry runs and calls GitHub refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
Which GitHub API does it cover?
The GitHub API 2022-11-28 at api.github.com. It is built from GitHub's documentation as read on 15 September 2026. 602 actions in 16 areas, each one in the signed service file (version 2.0.0).
Does actionlake keep my GitHub data, and where?
actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your GitHub credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.
Which AI clients can use it?
Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.
Give your agent GitHub today.
Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.