GitHub MCP

官方

官方GitHub MCP伺服器,用於在相容MCP的AI客戶端中進行倉庫搜尋、議題、拉取請求、程式碼上下文及GitHub工作流程。

你可以用 GitHub MCP 做什麼?

  • Repository exploration — 請您的助理瀏覽程式碼、搜尋檔案,並分析您能存取之任何儲存庫中的提交記錄。
  • Issue 與 PR 管理 — 讓 AI 建立、更新及分類 issue 和 pull request,包括審查程式碼變更。
  • CI/CD 監控 — 取得 GitHub Actions 工作流程執行的深入見解、分析建置失敗,並管理發行版本。
  • 安全性分析 — 檢查程式碼掃描結果,並審查 Dependabot 的漏洞警示。
  • 團隊協作 — 存取討論、管理通知,並分析您專案中的團隊活動。

託管 MCP 伺服器

npx add-mcp 'https://api.githubcopilot.com/mcp/'

可安裝到 Claude Code、Codex、Cursor 等客戶端

文件

Go Report Card

GitHub MCP 伺服器

GitHub MCP 伺服器將 AI 工具直接連接到 GitHub 平台。這讓 AI 代理、助理和聊天機器人能夠讀取儲存庫和程式碼檔案、管理 issue 和 PR、分析程式碼,以及自動化工作流程。全部透過自然語言互動完成。

使用案例

  • 儲存庫管理:瀏覽和查詢程式碼、搜尋檔案、分析提交,並了解您有權存取之任何儲存庫的專案結構。
  • Issue 與 PR 自動化:建立、更新和管理 issue 與 pull request。讓 AI 協助分類錯誤、審查程式碼變更,並維護專案看板。
  • CI/CD 與工作流程智慧:監控 GitHub Actions 工作流程執行、分析建置失敗、管理版本,並深入了解您的開發管線。
  • 程式碼分析:檢查安全性發現、審查 Dependabot 警報、了解程式碼模式,並全面了解您的程式碼庫。
  • 團隊協作:存取討論、管理通知、分析團隊活動,並為您的團隊簡化流程。

專為想要將 AI 工具連接到 GitHub 情境和功能的開發者而設計,從簡單的自然語言查詢到複雜的多步驟代理工作流程。

使用 Go 模組

Go 模組路徑為 github.com/github/github-mcp-server/v2。程式庫使用者 必須在匯入時使用此前綴,例如 github.com/github/github-mcp-server/v2/pkg/github,以及在 go get 指令中。 從儲存庫檢出建置時,不需要 /v2 子目錄。

現有的 v2.0.0 標籤早於此模組路徑修正,無法用作 Go 模組。此變更合併後,必須從包含修正模組路徑的提交 標記新版本,例如 v2.0.1。在此之前, 使用者可以使用包含此變更之提交的偽版本。


遠端 GitHub MCP 伺服器

Install in VS Code Install in VS Code Insiders Install in Visual Studio

遠端 GitHub MCP 伺服器由 GitHub 託管,提供最簡單的啟動方式。如果您的 MCP 主機不支援遠端 MCP 伺服器,別擔心!您可以使用本機版 GitHub MCP 伺服器代替。

先決條件

  1. 支援遠端伺服器的相容 MCP 主機(VS Code 1.101+、Claude Desktop、Cursor、Windsurf 等)
  2. 任何適用的已啟用政策

在 VS Code 中安裝

如需快速安裝,請使用上方的一鍵安裝按鈕。完成該流程後,切換代理模式(位於 Copilot Chat 文字輸入旁),伺服器即會啟動。請確保您使用的是 VS Code 1.101 或更新版本以支援遠端 MCP 和 OAuth。

或者,若要手動設定 VS Code,請從下方範例中選擇適當的 JSON 區塊,並將其新增至您的主機設定:

使用 OAuth使用 GitHub PAT
VS Code(1.101 或更高版本)
{
  "servers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/"
    }
  }
}
{
  "servers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/",
      "headers": {
        "Authorization": "Bearer ${input:github_mcp_pat}"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "github_mcp_pat",
      "description": "GitHub Personal Access Token",
      "password": true
    }
  ]
}

在其他 MCP 主機中安裝

注意: 每個 MCP 主機應用程式都需要設定 GitHub App 或 OAuth App,以支援透過 OAuth 進行遠端存取。任何支援遠端 MCP 伺服器的主機應用程式都應支援使用 PAT 驗證的遠端 GitHub 伺服器。設定詳細資訊和支援等級因主機而異。請務必參閱主機應用程式的文件以了解更多資訊。

設定

工具集設定

請參閱遠端伺服器文件以了解遠端伺服器設定、工具集、標頭和進階用法的完整詳細資訊。此檔案提供在 VS Code 和其他 MCP 主機中連接、自訂和安裝遠端 GitHub MCP 伺服器的全面說明和範例。

未指定工具集時,將使用預設工具集。

Insiders 模式

搶先體驗新功能! 遠端伺服器提供 insiders 版本,可搶先使用新功能和實驗性工具。

使用 URL 路徑使用標頭
{
  "servers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/insiders"
    }
  }
}
{
  "servers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/",
      "headers": {
        "X-MCP-Insiders": "true"
      }
    }
  }
}

請參閱遠端伺服器文件以了解更多詳細資訊和範例,並參閱 Insiders 功能以取得可用功能的完整清單。

GitHub Enterprise

具有資料駐留功能的 GitHub Enterprise Cloud(ghe.com)

GitHub Enterprise Cloud 也可以使用遠端伺服器。

使用 GitHub PAT 權杖的 https://octocorp.ghe.com 範例:

{
    ...
    "github-octocorp": {
      "type": "http",
      "url": "https://copilot-api.octocorp.ghe.com/mcp",
      "headers": {
        "Authorization": "Bearer ${input:github_mcp_pat}"
      }
    },
    ...
}

注意: 在 VS Code 和 GitHub Copilot 中使用 OAuth 搭配 GitHub Enterprise 時,您還需要設定 VS Code 設定以指向您的 GitHub Enterprise 執行個體 - 請參閱從 VS Code 驗證

GitHub Enterprise Server

GitHub Enterprise Server 不支援遠端伺服器託管。請參閱本機伺服器設定中的 GitHub Enterprise Server 和具有資料駐留功能的 Enterprise Cloud(ghe.com)。


本機 GitHub MCP 伺服器

Install with Docker in VS Code Install with Docker in VS Code Insiders Install with Docker in Visual Studio

先決條件

  1. 若要在容器中執行伺服器,您需要安裝 Docker。

  2. Docker 安裝完成後,您還需要確保 Docker 正在執行。Docker 映像檔位於 ghcr.io/github/github-mcp-server。該映像檔是公開的;如果拉取時出現錯誤,可能是您的權杖已過期,需要 docker logout ghcr.io。

  3. 驗證。 在 github.com 上,您不需要事先建立任何東西 — 上方的一鍵按鈕會在首次使用時透過 OAuth 讓您登入(瀏覽器型流程;權杖僅保存在記憶體中)。Docker 按鈕會發布固定的回呼連接埠(127.0.0.1:8085),以便容器的登入回呼可被存取。請參閱 本機伺服器 OAuth 登入 以了解其運作方式、無頭/裝置碼後備方案,以及自備 OAuth 或 GitHub App(GitHub Enterprise Server 和 ghe.com 需要)。

    偏好使用權杖?您仍然可以透過設定 GITHUB_PERSONAL_ACCESS_TOKEN 來使用 GitHub 個人存取權杖 進行驗證(它優先於 OAuth)。MCP 伺服器可以使用許多 GitHub API,因此請啟用您認為適合授予 AI 工具的權限(若要了解更多關於存取權杖的資訊,請查閱文件)。

安全處理 PAT

環境變數(建議)

為了讓您的 GitHub PAT 在不同 MCP 主機間保持安全且可重複使用:

  1. 將您的 PAT 儲存在環境變數中

    export GITHUB_PAT=your_token_here
    

    或建立 .env 檔案:

    GITHUB_PAT=your_token_here
    
  2. 保護您的 .env 檔案

    # Add to .gitignore to prevent accidental commits
    echo ".env" >> .gitignore
    
  3. 在設定中引用權杖

    # CLI usage
    claude mcp add github -e GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PAT -- docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server
    
    # In config files (where supported)
    "env": {
      "GITHUB_PERSONAL_ACCESS_TOKEN": "$GITHUB_PAT"
    }
    

注意:環境變數支援因主機應用程式和 IDE 而異。某些應用程式(如 Windsurf)需要在設定檔中硬編碼權杖。

權杖安全最佳實務

  • 最小範圍:僅授予必要的權限

    • repo - 儲存庫操作
    • read:packages - Docker 映像檔存取
    • read:org - 組織團隊存取
  • 分開的權杖:為不同的專案/環境使用不同的 PAT

  • 定期輪換:定期更新權杖

  • 絕不提交:將權杖排除在版本控制之外

  • 檔案權限:限制包含權杖之設定檔的存取

    chmod 600 ~/.your-app/config.json
    

GitHub Enterprise Server 和具有資料駐留功能的 Enterprise Cloud(ghe.com)

旗標 --gh-host 和環境變數 GITHUB_HOST 可用於設定 GitHub Enterprise Server 或具有資料駐留功能的 GitHub Enterprise Cloud 的主機名稱。

  • 對於 GitHub Enterprise Server,請在主機名稱前加上 https:// URI 方案。需要且強制使用 HTTPS:拒絕非 HTTPS 主機,以確保憑證絕不會透過明文傳送(唯一的例外是迴路主機,例如用於本機開發的 http://localhost)。
  • 對於具有資料駐留功能的 GitHub Enterprise Cloud,請使用 https://YOURSUBDOMAIN.ghe.com 作為主機名稱。
"github": {
    "command": "docker",
    "args": [
    "run",
    "-i",
    "--rm",
    "-e",
    "GITHUB_PERSONAL_ACCESS_TOKEN",
    "-e",
    "GITHUB_HOST",
    "ghcr.io/github/github-mcp-server"
    ],
    "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}",
        "GITHUB_HOST": "https://<your GHES or ghe.com domain name>"
    }
}

安裝

在 VS Code 的 GitHub Copilot 中安裝

如需快速安裝,請使用上方的一鍵安裝按鈕。完成該流程後,切換代理模式(位於 Copilot Chat 文字輸入旁),伺服器即會啟動。

更多關於在 VS Code 的代理模式文件中使用 MCP 伺服器工具的資訊。

在其他 IDE(JetBrains、Visual Studio、Eclipse 等)的 GitHub Copilot 中安裝

將以下其中一個 JSON 區塊新增至您 IDE 的 MCP 設定。

使用 OAuth 登入(無需建立或儲存權杖)。 在 github.com 上,官方映像檔已包含應用程式憑證,因此您無需自行提供:它會在首次使用時執行瀏覽器型登入,並將產生的權杖僅保存在記憶體中。在 Docker 中,這需要將固定的回呼連接埠發布到迴路,以便容器的登入回呼可被存取:

{
  "mcp": {
    "servers": {
      "github": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "-p",
          "127.0.0.1:8085:8085",
          "-e",
          "GITHUB_OAUTH_CALLBACK_PORT",
          "ghcr.io/github/github-mcp-server"
        ],
        "env": {
          "GITHUB_OAUTH_CALLBACK_PORT": "8085"
        }
      }
    }
  }
}

請參閱 本機伺服器 OAuth 登入 以了解原生二進位流程(無需固定連接埠)、無頭/裝置碼後備方案、GitHub Enterprise Server / ghe.com,以及自備 OAuth 或 GitHub App。

對於非互動式 stdio 部署,請參閱 GitHub App 驗證。

或使用個人存取權杖驗證。 改為設定 GITHUB_PERSONAL_ACCESS_TOKEN(它優先於 OAuth):

{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "github_token",
        "description": "GitHub Personal Access Token",
        "password": true
      }
    ],
    "servers": {
      "github": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "-e",
          "GITHUB_PERSONAL_ACCESS_TOKEN",
          "ghcr.io/github/github-mcp-server"
        ],
        "env": {
          "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
        }
      }
    }
  }
}

您可以選擇性地將類似的範例(即不含 mcp 金鑰)新增到工作區中名為 .vscode/mcp.json 的檔案。這將允許您與接受相同格式的其他主機應用程式共用設定。

不含 MCP 金鑰的範例 JSON 區塊
{
  "inputs": [
    {
      "type": "promptString",
      "id": "github_token",
      "description": "GitHub Personal Access Token",
      "password": true
    }
  ],
  "servers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
      }
    }
  }
}

在其他 MCP 主機中安裝

對於其他 MCP 主機應用程式,請參閱我們的安裝指南:

如需所有安裝選項的完整概覽,請參閱我們的 安裝指南索引。

注意: 任何支援本機 MCP 伺服器的主機應用程式都應能存取本機 GitHub MCP 伺服器。然而,具體的設定流程、語法和整合穩定性會因主機應用程式而異。雖然許多應用程式可能遵循與上述範例類似的格式,但這並不保證。請參閱您主機應用程式的文件,以了解正確的 MCP 設定語法和設定流程。

從原始碼建置

如果您沒有 Docker,可以使用 go build 在 cmd/github-mcp-server 目錄中建置二進位檔,並使用 github-mcp-server stdio 命令,並將 GITHUB_PERSONAL_ACCESS_TOKEN 環境變數設定為您的 token。若要指定建置的輸出位置,請使用 -o 旗標。您應將伺服器設定為使用建置後的可執行檔作為其 command。

STDIO API 請求將伺服器識別為 github-mcp-server/<version>,並在可用時於括號中保留上游 MCP 用戶端的名稱/版本。用戶端中繼資料中的控制字元、引號、反斜線和括號會被跳脫,以確保 HTTP 標頭有效;一般名稱、版本、空格和可列印的 Unicode 字元則會保留。發行版建置會保留其發行版本。帶有修訂中繼資料的原始碼和預設 Docker 建置使用 vcs-<full-commit-sha>。Docker 發佈工作流程會保留標籤版本(包括預發行版本),並允許分支、拉取請求和非同步建置使用連結的原始碼修訂。-dirty 標記僅在修訂和修改狀態均來自嵌入的 VCS 中繼資料時套用,絕不會套用於有效且明確提供的 main.commit。這是 VCS 建置識別碼,而非發行編號。

使用 go build -o github-mcp-server ./cmd/github-mcp-server 從 Git 檢出中建置完整套件,以嵌入其 VCS 修訂。對於沒有 VCS 中繼資料的建置,請使用 -ldflags '-X main.version=<release>' 提供實際發行版本,或使用 -ldflags '-X main.commit=<sha>' 提供完整的原始碼修訂。有效中繼資料的選擇順序如下:明確的發行版本、明確的原始碼修訂、嵌入的 VCS 修訂,然後是已安裝的主模組版本。即使建置上下文篩選變更了嵌入的 VCS 中繼資料,有效的明確修訂仍具有權威性。缺失或格式錯誤的候選項會依序回退到下一個可用的來源。如果沒有可用的來源,STDIO 仍會以開發標籤 dev 啟動,並在 stderr 上發出警告,將 stdout 保留給 MCP 協定使用。當需要特定版本的歸因時,請提供真實的發行或修訂中繼資料。

例如:

{
  "mcp": {
    "servers": {
      "github": {
        "command": "/path/to/github-mcp-server",
        "args": ["stdio"],
        "env": {
          "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
        }
      }
    }
  }
}

工具設定

GitHub MCP 伺服器支援透過 --toolsets 旗標啟用或停用特定功能群組。這允許您控制哪些 GitHub API 功能可供您的 AI 工具使用。僅啟用您需要的工具集可以幫助 LLM 進行工具選擇並減少上下文大小。

工具集不僅限於工具。相關的 MCP 資源和提示詞在適用時也會包含在內。

當未指定工具集時,將使用預設工具集。

正在尋找範例? 請參閱伺服器設定指南以了解常見的設定方式,例如最小設定、唯讀模式和將工具與工具集結合使用。

指定工具集

若要指定您希望可供 LLM 使用的工具集,您可以透過兩種方式傳遞允許清單:

  1. 使用命令列參數:

    github-mcp-server --toolsets repos,issues,pull_requests,actions,code_security
    
  2. 使用環境變數:

    GITHUB_TOOLSETS="repos,issues,pull_requests,actions,code_security" ./github-mcp-server
    

如果同時提供兩者,環境變數 GITHUB_TOOLSETS 優先於命令列參數。

指定個別工具

您也可以使用 --tools 旗標設定特定工具。工具可以獨立使用,或與工具集結合使用以進行精細控制。

  1. 使用命令列參數:

    github-mcp-server --tools get_file_contents,issue_read,create_pull_request
    
  2. 使用環境變數:

    GITHUB_TOOLS="get_file_contents,issue_read,create_pull_request" ./github-mcp-server
    
  3. 與工具集結合使用(加法式):

    github-mcp-server --toolsets repos,issues --tools get_gist
    

    這會註冊 repos 和 issues 工具集中的所有工具,以及 get_gist。

重要注意事項:

  • 工具和工具集可以一起使用
  • 唯讀模式優先:如果設定了 --read-only,即使透過 --tools 明確請求,寫入工具也會被跳過
  • 工具名稱必須完全相符(例如,get_file_contents,而非 getFileContents)。無效的工具名稱會導致伺服器在啟動時失敗並顯示錯誤訊息
  • 當工具被重新命名時,舊名稱會作為別名保留以維持向後相容性。請參閱工具重新命名以了解詳情。

使用 Docker 搭配工具集

使用 Docker 時,您可以將工具集作為環境變數傳遞:

docker run -i --rm \
  -e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \
  -e GITHUB_TOOLSETS="repos,issues,pull_requests,actions,code_security" \
  ghcr.io/github/github-mcp-server

使用 Docker 搭配工具

使用 Docker 時,您可以將特定工具作為環境變數傳遞。您也可以將工具與工具集結合使用:

# Tools only
docker run -i --rm \
  -e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \
  -e GITHUB_TOOLS="get_file_contents,issue_read,create_pull_request" \
  ghcr.io/github/github-mcp-server

# Tools combined with toolsets (additive)
docker run -i --rm \
  -e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \
  -e GITHUB_TOOLSETS="repos,issues" \
  -e GITHUB_TOOLS="get_gist" \
  ghcr.io/github/github-mcp-server

特殊工具集

"all" 工具集

可以提供特殊工具集 all 來啟用所有可用的工具集,無論其他設定為何:

./github-mcp-server --toolsets all

或使用環境變數:

GITHUB_TOOLSETS="all" ./github-mcp-server

"default" 工具集

預設工具集 default 是在未指定任何工具集時傳遞給伺服器的設定。

預設設定為:

  • context
  • repos
  • issues
  • pull_requests
  • users

若要保留預設設定並新增其他工具集:

GITHUB_TOOLSETS="default,stargazers" ./github-mcp-server

Insiders 模式

本機 GitHub MCP 伺服器提供 insiders 版本,可搶先體驗新功能和實驗性工具。

  1. 使用命令列參數:

    ./github-mcp-server --insiders
    
  2. 使用環境變數:

    GITHUB_INSIDERS=true ./github-mcp-server
    

使用 Docker 時:

docker run -i --rm \
  -e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \
  -e GITHUB_INSIDERS=true \
  ghcr.io/github/github-mcp-server

可用的工具集

以下為可用的工具集:

工具集描述
personcontext強烈建議:提供有關目前使用者和您所操作的 GitHub 環境之上下文的工具
workflowactionsGitHub Actions 工作流程和 CI/CD 操作
code-squarecode_qualityGitHub 程式碼品質相關工具
codescancode_security程式碼安全相關工具,例如 GitHub 程式碼掃描
copilotcopilotCopilot 相關工具
copilotcopilot_issue_intents選擇加入的 Copilot 問題指派工具,帶有中繼資料(理由、信心、建議)
dependabotdependabotDependabot 工具
comment-discussiondiscussionsGitHub Discussions 相關工具
logo-gistgistsGitHub Gist 相關工具
git-branchgit用於底層 Git 操作的 GitHub Git API 相關工具
lawgovernance用於管理儲存庫、組織和企業層級之規則集和自訂屬性的儲存庫治理工具
issue-openedissuesGitHub Issues 相關工具
taglabelsGitHub Labels 相關工具
bellnotificationsGitHub Notifications 相關工具
organizationorgsGitHub Organization 相關工具
projectprojectsGitHub Projects 相關工具
git-pull-requestpull_requestsGitHub Pull Request 相關工具
reporeposGitHub Repository 相關工具
shield-locksecret_protection秘密保護相關工具,例如 GitHub Secret Scanning
shieldsecurity_advisories安全公告相關工具
starstargazersGitHub Stargazers 相關工具
peopleusersGitHub User 相關工具

遠端 GitHub MCP 伺服器中的其他工具集

工具集描述
copilotCopilot 相關工具(例如 Copilot Coding Agent)
copilot_spacesCopilot Spaces 相關工具
github_support_docs_search搜尋文件以回答 GitHub 產品和支援問題

工具

當協商的 MCP 協定版本為受支援的版本 2026-07-28 或更新版本時,儲存庫工具會公開輸出架構和型別的 structuredContent。較舊的用戶端、協定版本未知的用戶端以及省略版本的用戶端,會收到沒有輸出架構或結構化輸出的現有內容。未知版本不會僅因為排序在 2026-07-28 之後而被視為受支援。

對於 get_file_contents,目錄結果(包括欄位投影)是結構化陣列。檔案下載和僅中繼資料的回應使用 content 的型別文字、嵌入資源或資源連結區塊陣列,保留狀態訊息、文字、base64 二進位大型物件、空檔案和下載連結。僅文字的儲存庫變更(例如加星號和刪除)也會傳回結構化的 message;fork 回應會區分儲存庫參考和進行中的訊息。儲存庫刪除在傳回完成的結果之前,仍需要其現有的確認流程。 結構化的儲存庫結果使用精簡的 DTO,而非原始的 REST 物件。發行版查詢與發行版列表共用精簡的發行版形狀;Git 引用保留 ref、物件類型和 SHA;註解標籤保留標籤/訊息/標記者/目標資訊;刪除提交保留 SHA、訊息、作者、樹 SHA、父提交 SHA,以及可用的 html_url 人類可讀資訊。目錄條目保留檔案元資料和有用的 HTML/下載連結,但省略 API 和超媒體路由 URL,即使這些欄位在投影中被請求。舊版和未知的協定版本保留原始文字逐位元組;現代純文字 JSON 回應序列化與 structuredContent 相同的精簡 DTO。非文字資源區塊和工具錯誤保留其現有的內容行為。結構化投影使用與舊版格式化器相同的清理和過濾來源。

對於 get_repository_tree、list_gists、get_gist、create_gist 和 update_gist,gist 結果保留檔案名稱、內容、大小、語言/類型資訊、時間戳記、可見性和精簡的擁有者設定檔,同時省略 API/node 和 Git 傳輸 URL。樹條目省略其可推導的 API URL。建立/更新 gist 結果包含 gist ID 和 HTML URL。現代 JSON 文字和結構化內容序列化相同的精簡結果。較舊或未知的協定版本保留逐位元組的舊版文字,沒有輸出架構或結構化內容。

議題元資料(list_issue_types、list_issue_fields)、評論(add_issue_comment、update_issue_comment)、依賴關係(issue_dependency_read、issue_dependency_write)和重複偵測(find_duplicate)工具為協商支援的協定版本 2026-07-28 或更新版本提供型別化的 outputSchema 和 structuredContent。較舊或未知的協定版本保留相同的文字回應,沒有這些欄位。工具錯誤不返回結構化內容。依賴關係和重複偵測工具保留其現有的功能閘道。

對於協商支援的協定版本 2026-07-28 或更新版本,整合的 Actions 工具(actions_list、actions_get、actions_run_trigger)返回帶有 method 判別器和方法特定型別欄位的結構化物件;JSON 文字包含相同的精簡投影。工作流程、工作和工件投影省略 API/超媒體 URL,同時保留瀏覽器連結和有用的識別碼、狀態、時間戳記和使用持續時間。執行使用列表以確定性的名稱順序列出可計費的執行器環境。較舊和未知協定的文字回應保持不變;get_job_logs 保留其型別化內容、URL 或失敗工作集合變體。

workflow Actions
  • actions_get - 取得 GitHub Actions 資源的詳細資訊(工作流程、工作流程執行、工作和工件)

    • OAuth Challenge Scopes:repo
    • method:要執行的方法(字串,必填)
    • owner:儲存庫擁有者(字串,必填)
    • repo:儲存庫名稱(字串,必填)
    • resource_id:資源的唯一識別碼。這會根據提供的「method」而有所不同,因此請確保提供正確的 ID:
      • 為「get_workflow」方法提供工作流程 ID 或工作流程檔案名稱(例如 ci.yaml)。
      • 為「get_workflow_run」、「get_workflow_run_usage」和「get_workflow_run_logs_url」方法提供工作流程執行 ID。
      • 為「download_workflow_run_artifact」方法提供工件 ID。
      • 為「get_workflow_job」方法提供工作 ID。 (字串,必填)
  • actions_list - 列出儲存庫中的 GitHub Actions 工作流程

    • OAuth Challenge Scopes:repo
    • method:要執行的動作(字串,必填)
    • owner:儲存庫擁有者(字串,必填)
    • page:分頁的頁碼(預設:1)(數字,選填)
    • perPage:分頁的每頁結果數(預設:30,最大:100)(數字,選填)
    • repo:儲存庫名稱(字串,必填)
    • resource_id:資源的唯一識別碼。這會根據提供的「method」而有所不同,因此請確保提供正確的 ID:
      • 不要為「list_workflows」方法提供任何資源 ID。
      • 為「list_workflow_runs」方法提供工作流程 ID 或工作流程檔案名稱(例如 ci.yaml),或省略以列出儲存庫中的所有工作流程執行。
      • 為「list_workflow_jobs」和「list_workflow_run_artifacts」方法提供工作流程執行 ID。 (字串,選填)
    • workflow_jobs_filter:工作流程工作的篩選器。僅在 method 為「list_workflow_jobs」時使用(物件,選填)
    • workflow_runs_filter:工作流程執行的篩選器。僅在 method 為「list_workflow_runs」時使用(物件,選填)
  • actions_run_trigger - 觸發 GitHub Actions 工作流程動作

    • OAuth Challenge Scopes:repo
    • inputs:工作流程接受的輸入。僅用於「run_workflow」方法。(物件,選填)
    • method:要執行的方法(字串,必填)
    • owner:儲存庫擁有者(字串,必填)
    • ref:工作流程的 Git 引用。引用可以是分支或標籤名稱。「run_workflow」方法必填。(字串,選填)
    • repo:儲存庫名稱(字串,必填)
    • run_id:工作流程執行的 ID。除「run_workflow」外的所有方法必填。(數字,選填)
    • workflow_id:工作流程 ID(數字)或工作流程檔案名稱(例如 main.yml、ci.yaml)。「run_workflow」方法必填。(字串,選填)
  • get_job_logs - 取得 GitHub Actions 工作流程工作日誌

    • OAuth Challenge Scopes:repo
    • failed_only:若為 true,取得 run_id 指定的工作流程執行中所有失敗工作的日誌。需要提供 run_id。(布林值,選填)
    • job_id:工作流程工作的唯一識別碼。取得單一工作的日誌時必填。(數字,選填)
    • owner:儲存庫擁有者(字串,必填)
    • repo:儲存庫名稱(字串,必填)
    • return_content:返回實際日誌內容而非 URL(布林值,選填)
    • run_id:工作流程執行的唯一識別碼。當 failed_only 為 true 以取得執行中所有失敗工作的日誌時必填。(數字,選填)
    • tail_lines:從日誌結尾返回的行數(數字,選填)
code-square 程式碼品質
  • get_code_quality_finding - 取得程式碼品質發現
    • OAuth Challenge Scopes:repo
    • findingNumber:發現的編號。(數字,必填)
    • owner:儲存庫的擁有者。(字串,必填)
    • repo:儲存庫的名稱。(字串,必填)
codescan 程式碼安全
  • get_code_scanning_alert - 取得程式碼掃描警示

    • OAuth Challenge Scopes:security_events
    • alertNumber:警示的編號。(數字,必填)
    • owner:儲存庫的擁有者。(字串,必填)
    • repo:儲存庫的名稱。(字串,必填)
  • list_code_scanning_alerts - 列出程式碼掃描警示

    • OAuth Challenge Scopes:security_events
    • owner:儲存庫的擁有者。(字串,必填)
    • page:分頁的頁碼(最小 1)(數字,選填)
    • perPage:分頁的每頁結果數(最小 1,最大 100)(數字,選填)
    • ref:您要列出結果的 Git 引用。(字串,選填)
    • repo:儲存庫的名稱。(字串,必填)
    • severity:依嚴重性篩選程式碼掃描警示(字串,選填)
    • state:依狀態篩選程式碼掃描警示。預設為 open(字串,選填)
    • tool_name:用於程式碼掃描的工具名稱。(字串,選填)
person 內容
  • get_me - 取得我的使用者設定檔

    • MCP App UI:ui://github-mcp-server/get-me
    • 無需參數
  • get_team_members - 取得團隊成員

    • OAuth Challenge Scopes:read:org
    • org:包含團隊的組織登入名稱(擁有者)。(字串,必填)
    • team_slug:團隊 slug(字串,必填)
  • get_teams - 取得團隊

    • OAuth Challenge Scopes:read:org
    • user:要取得團隊的使用者名稱。如果未提供,則使用已驗證的使用者。(字串,選填)
  • ui_get - 取得 UI 資料

    • OAuth Challenge Scopes:repo、read:org
    • method:要取得的資料類型(字串,必填)
    • owner:儲存庫擁有者(所有方法必填)(字串,必填)
    • repo:儲存庫名稱(標籤、指派者、里程碑、分支、議題欄位、審閱者必填)(字串,選填)
copilot Copilot
  • assign_copilot_to_issue - 指派 Copilot 到議題

    • OAuth Challenge Scopes:repo
    • base_ref:代理程式將開始工作的 Git 引用(例如分支)。如果未指定,預設為儲存庫的預設分支(字串,選填)
    • custom_instructions:可選的自訂指示,用於引導代理程式超越議題主體。使用此選項提供議題描述中未捕獲的額外內容、限制或指導(字串,選填)
    • issue_number:議題編號(數字,必填)
    • owner:儲存庫擁有者(字串,必填)
    • repo:儲存庫名稱(字串,必填)
  • request_copilot_review - 請求 Copilot 審閱

    • OAuth Challenge Scopes:repo
    • owner:儲存庫擁有者(字串,必填)
    • pullNumber:拉取請求編號(數字,必填)
    • repo:儲存庫名稱(字串,必填)
copilot Copilot 議題意圖 - **assign_copilot_to_issue_with_intent** - 將 Copilot 指派給具有意圖的 issue - **OAuth Challenge Scopes**: `repo` - `base_ref`: Git 參考(例如分支),代理程式將從此處開始工作。若未指定,則預設為儲存庫的預設分支。當 is_suggestion 為 true 時忽略(字串,選用) - `confidence`: 您對此選擇的信心程度。'HIGH' 表示明確訊號或使用者明確要求,'MEDIUM' 表示合理推斷但有些模糊,'LOW' 表示在有限訊號下的最佳猜測。(字串,必填) - `custom_instructions`: 可選的自訂指示,用於引導代理程式超越 issue 內容。當 is_suggestion 為 true 時忽略(字串,選用) - `is_suggestion`: 若為 true,則記錄待處理的 Copilot 指派意圖,而非啟動代理程式。之後的核准會提供啟動上下文;在此情況下,base_ref 和 custom_instructions 會被忽略。(布林值,必填) - `issue_number`: Issue 編號(數字,必填) - `owner`: 儲存庫擁有者(字串,必填) - `rationale`: 一句簡潔的句子,說明 issue 中具體哪一點導致選擇 Copilot。陳述具體訊號(例如「範圍明確且具有清晰驗收標準的任務」)。(字串,必填) - `repo`: 儲存庫名稱(字串,必填)
dependabot Dependabot
  • get_dependabot_alert - 取得 Dependabot 警報

    • OAuth Challenge Scopes: security_events
    • alertNumber: 警報的編號。(數字,必填)
    • owner: 儲存庫的擁有者。(字串,必填)
    • repo: 儲存庫的名稱。(字串,必填)
  • list_dependabot_alerts - 列出 Dependabot 警報

    • OAuth Challenge Scopes: security_events
    • after: 用於分頁的游標。使用前一個回應中的游標。(字串,選用)
    • owner: 儲存庫的擁有者。(字串,必填)
    • perPage: 每頁結果數,用於分頁(最小值 1,最大值 100)(數字,選用)
    • repo: 儲存庫的名稱。(字串,必填)
    • severity: 依嚴重性篩選 Dependabot 警報(字串,選用)
    • state: 依狀態篩選 Dependabot 警報。預設為 open(字串,選用)
comment-discussion Discussions
  • discussion_comment_write - 管理討論留言

    • OAuth Challenge Scopes: repo
    • body: 留言內容('add'、'reply' 和 'update' 方法需要)(字串,選用)
    • commentNodeID: 討論留言的 Node ID('reply'、'update'、'delete'、'mark_answer' 和 'unmark_answer' 方法需要)。對於 'reply',這是欲回覆的頂層留言;GitHub Discussions 僅支援一層巢狀結構。(字串,選用)
    • discussionNumber: 討論編號('add' 和 'reply' 方法需要)(數字,選用)
    • method: 要對討論留言執行的寫入操作。 選項有:
      • 'add' - 在討論中新增頂層留言。
      • 'reply' - 回覆頂層討論留言(GitHub Discussions 僅支援一層巢狀結構)。
      • 'update' - 更新現有的討論留言。
      • 'delete' - 刪除討論留言。
      • 'mark_answer' - 將討論留言標記為答案(僅限 Q&A)。
      • 'unmark_answer' - 取消將討論留言標記為答案(僅限 Q&A)。 (字串,必填)
    • owner: 儲存庫擁有者('add' 和 'reply' 方法需要)(字串,選用)
    • repo: 儲存庫名稱('add' 和 'reply' 方法需要)(字串,選用)
  • get_discussion - 取得討論

    • OAuth Challenge Scopes: repo
    • discussionNumber: 討論編號(數字,必填)
    • owner: 儲存庫擁有者(字串,必填)
    • repo: 儲存庫名稱(字串,必填)
  • get_discussion_comments - 取得討論留言

    • OAuth Challenge Scopes: repo
    • after: 用於分頁的游標。使用前一個回應中的游標。(字串,選用)
    • discussionNumber: 討論編號(數字,必填)
    • includeReplies: 若為 true,每個頂層留言將包含巢狀在其中的回覆(每個留言最多 100 個回覆,這是 GitHub API 的上限)。預設為 false。(布林值,選用)
    • owner: 儲存庫擁有者(字串,必填)
    • perPage: 每頁結果數,用於分頁(最小值 1,最大值 100)(數字,選用)
    • repo: 儲存庫名稱(字串,必填)
  • list_discussion_categories - 列出討論類別

    • OAuth Challenge Scopes: repo
    • owner: 儲存庫擁有者(字串,必填)
    • repo: 儲存庫名稱。若未提供,將在組織層級查詢討論類別。(字串,選用)
  • list_discussions - 列出討論

    • OAuth Challenge Scopes: repo
    • after: 用於分頁的游標。使用前一個回應中的游標。(字串,選用)
    • category: 可選的討論類別 ID 篩選條件。若提供,僅列出具有此類別的討論。(字串,選用)
    • direction: 排序方向。(字串,選用)
    • orderBy: 依欄位排序討論。若提供,也需提供 'direction'。(字串,選用)
    • owner: 儲存庫擁有者(字串,必填)
    • perPage: 每頁結果數,用於分頁(最小值 1,最大值 100)(數字,選用)
    • repo: 儲存庫名稱。若未提供,將在組織層級查詢討論。(字串,選用)
logo-gist Gists
  • create_gist - 建立 Gist

    • OAuth Challenge Scopes: gist
    • content: 用於簡單單檔案 Gist 建立的內容(字串,必填)
    • description: Gist 的描述(字串,選用)
    • filename: 用於簡單單檔案 Gist 建立的檔案名稱(字串,必填)
    • public: Gist 是否為公開(布林值,選用)
  • get_gist - 取得 Gist 內容

    • gist_id: Gist 的 ID(字串,必填)
  • list_gists - 列出 Gists

    • page: 用於分頁的頁碼(最小值 1)(數字,選用)
    • perPage: 每頁結果數,用於分頁(最小值 1,最大值 100)(數字,選用)
    • since: 僅列出在此時間之後更新的 Gists(ISO 8601 時間戳記)(字串,選用)
    • username: GitHub 使用者名稱(省略以取得已驗證使用者的 Gists)(字串,選用)
  • update_gist - 更新 Gist

    • OAuth Challenge Scopes: gist
    • content: 檔案的內容(字串,必填)
    • description: Gist 的更新描述(字串,選用)
    • filename: 要更新或建立的檔案名稱(字串,必填)
    • gist_id: 要更新的 Gist ID(字串,必填)
git-branch Git
  • get_repository_tree - 取得儲存庫樹狀結構
    • OAuth Challenge Scopes: repo
    • owner: 儲存庫擁有者(使用者名稱或組織)(字串,必填)
    • path_filter: 可選的路徑前綴,用於篩選樹狀結構結果(例如 'src/' 僅顯示 src 目錄中的檔案)(字串,選用)
    • recursive: 將此參數設為 true 會傳回樹狀結構所引用的物件或子樹。預設為 false(布林值,選用)
    • repo: 儲存庫名稱(字串,必填)
    • tree_sha: 樹狀結構的 SHA1 值或 ref(分支或標籤)名稱。預設為儲存庫的預設分支(字串,選用)
law Governance
  • create_repository_ruleset - 建立儲存庫規則集

    • OAuth Challenge Scopes: repo, admin:org, admin:enterprise
    • bypass_actors: 可以繞過此規則集中規則的參與者(物件陣列,選用)
    • conditions: 此規則集適用的條件,例如 {"ref_name": {"include": ["refs/heads/main"], "exclude": []}}(物件,選用)
    • enforcement: 規則集的執行層級。'evaluate' 允許管理員在執行規則前進行測試(字串,必填)
    • enterprise: Enterprise 別名。當層級為 'enterprise' 時需要。(字串,選用)
    • level: 規則集設定的層級:
      • 'repository':單一儲存庫上的規則集(需要 'owner' 和 'repo')。
      • 'organization':涵蓋組織中儲存庫的規則集(需要 'org')。
      • 'enterprise':涵蓋整個 enterprise 中儲存庫的規則集(需要 'enterprise')。(字串,必填)
    • name: 規則集的名稱(字串,必填)
    • org: 組織名稱。當層級為 'organization' 時需要。(字串,選用)
    • owner: 儲存庫擁有者。當層級為 'repository' 時需要。(字串,選用)
    • repo: 儲存庫名稱。當層級為 'repository' 時需要。(字串,選用)
    • rules: 規則集中的規則陣列。每個規則是一個物件,包含 'type'(例如 'creation'、'deletion'、'non_fast_forward'、'required_signatures'、'pull_request'、'required_status_checks'),以及對於需要設定的規則,還包含 'parameters' 物件(物件陣列,必填)
    • target: 規則集的目標。預設為 'branch'。'repository' 僅對 'organization' 和 'enterprise' 層級的規則集有效。(字串,選用)
  • custom_properties_read - 讀取自訂屬性

    • OAuth Challenge Scopes: repo, read:org, read:enterprise
    • enterprise: Enterprise 別名。當層級為 'enterprise' 時需要。(字串,選用)
    • level: 管理自訂屬性的層級:
      • 'repository':指派給儲存庫的自訂屬性值(需要 'owner' 和 'repo')。
      • 'organization':組織的自訂屬性定義(結構描述)(需要 'org')。
      • 'enterprise':enterprise 的自訂屬性定義(結構描述)(需要 'enterprise')。(字串,必填)
    • org: 組織名稱。當層級為 'organization' 時需要。(字串,選用)
    • owner: 儲存庫擁有者。當層級為 'repository' 時需要。(字串,選用)
    • repo: 儲存庫名稱。當層級為 'repository' 時需要。(字串,選用)
  • custom_properties_write - 設定自訂屬性

    • OAuth 挑戰範圍:repo、admin:org、admin:enterprise
    • enterprise:企業 slug。當 level 為 'enterprise' 時必填。(字串,選填)
    • level:管理自訂屬性的層級:
      • 'repository':指派給儲存庫的自訂屬性值(需要 'owner' 和 'repo')。
      • 'organization':組織的自訂屬性定義(schema)(需要 'org')。
      • 'enterprise':企業的自訂屬性定義(schema)(需要 'enterprise')。(字串,必填)
    • org:組織名稱。當 level 為 'organization' 時必填。(字串,選填)
    • owner:儲存庫擁有者。當 level 為 'repository' 時必填。(字串,選填)
    • properties:要建立或更新的自訂屬性。在儲存庫層級,每個項目指派一個值('property_name' 和 'value');在組織和企業層級,每個項目定義 schema('property_name' 和 'value_type',以及選填的定義欄位)。(物件[],必填)
    • repo:儲存庫名稱。當 level 為 'repository' 時必填。(字串,選填)
  • repository_ruleset_read - 讀取儲存庫規則集

    • OAuth 挑戰範圍:repo、read:org、read:enterprise
    • actor_name:用於篩選規則套件的 GitHub 使用者帳號代碼。由 'list_rule_suites' 方法使用。(字串,選填)
    • branch:分支名稱。'get_rules_for_branch' 方法必填。(字串,選填)
    • enterprise:企業 slug。當 level 為 'enterprise' 時必填。(字串,選填)
    • evaluate_status:依規則集評估模式篩選規則套件。由 'list_rule_suites' 方法使用。(字串,選填)
    • includes_parents:包含在更高層級設定且同樣適用的規則集。預設為 true。由儲存庫層級的 'get' 和 'list' 方法使用。(布林值,選填)
    • level:規則集設定的層級:
      • 'repository':單一儲存庫上的規則集(需要 'owner' 和 'repo')。
      • 'organization':涵蓋組織內儲存庫的規則集(需要 'org')。
      • 'enterprise':涵蓋企業內儲存庫的規則集(需要 'enterprise')。(字串,必填)
    • method:要執行的操作:
      • 'get':依 ID 取得特定規則集(需要 'ruleset_id')。所有層級皆支援。
      • 'list':列出所有規則集。所有層級皆支援。
      • 'get_rules_for_branch':取得套用至分支的所有規則(需要 'branch')。僅限儲存庫層級。
      • 'list_rule_suites':列出規則套件,即規則對推送的評估結果。僅限儲存庫和組織層級。
      • 'get_rule_suite':依 ID 取得特定規則套件(需要 'rule_suite_id')。僅限儲存庫和組織層級。(字串,必填)
    • org:組織名稱。當 level 為 'organization' 時必填。(字串,選填)
    • owner:儲存庫擁有者。當 level 為 'repository' 時必填。(字串,選填)
    • page:分頁的頁碼(最小值 1)(數字,選填)
    • perPage:分頁的每頁結果數(最小值 1,最大值 100)(數字,選填)
    • ref:用於篩選規則套件的 ref(分支、標籤等)名稱。由 'list_rule_suites' 方法使用。(字串,選填)
    • repo:儲存庫名稱。當 level 為 'repository' 時必填。(字串,選填)
    • repository_name:用於篩選規則套件的儲存庫名稱。由組織層級的 'list_rule_suites' 方法使用。(字串,選填)
    • rule_suite_id:規則套件 ID。'get_rule_suite' 方法必填。(數字,選填)
    • rule_suite_result:要篩選的規則套件結果。由 'list_rule_suites' 方法使用。(字串,選填)
    • ruleset_id:規則集 ID。'get' 方法必填。(數字,選填)
    • time_period:用於篩選規則套件的時間範圍。由 'list_rule_suites' 方法使用。(字串,選填)
issue-opened Issues
  • add_issue_comment - 新增評論至 issue 或 pull request

    • OAuth 挑戰範圍:repo
    • body:評論內容。除非提供 reaction,否則必填。(字串,選填)
    • comment_id:要回應的 issue 或 pull request 評論的數字 ID。用於對評論的反應;省略則對 issue 或 pull request 本身反應。不能與 body 合併使用。(整數,選填)
    • issue_number:要評論或反應的 issue 或 pull request 編號。(數字,必填)
    • owner:儲存庫擁有者(字串,必填)
    • reaction:要新增的表情符號反應。除非提供 body,否則必填。(字串,選填)
    • repo:儲存庫名稱(字串,必填)
  • get_label - 從儲存庫取得特定標籤

    • OAuth 挑戰範圍:repo
    • name:標籤名稱。(字串,必填)
    • owner:儲存庫擁有者(使用者名稱或組織名稱)(字串,必填)
    • repo:儲存庫名稱(字串,必填)
  • issue_read - 取得 issue 詳細資料

    • OAuth 挑戰範圍:repo
    • issue_number:issue 的編號(數字,必填)
    • method:對單一 issue 執行的讀取操作。 選項有:
      1. get - 取得 issue 詳細資料。也會傳回盡力而為的階層旗標(has_parent、has_children);parent 和 sub_issues_summary 是選填的關係摘要,closed_by_pull_requests 摘要列出設定為關閉該 issue 的 pull requests,作為 total_count 加上最多 5 個 references。
      2. get_comments - 取得 issue 評論。
      3. get_sub_issues - 取得 issue 的子 issue(子項目)。
      4. get_parent - 如果此 issue 是另一個 issue 的子 issue,取得父 issue。
      5. get_labels - 取得指派給該 issue 的標籤。 (字串,必填)
    • owner:儲存庫的擁有者(字串,必填)
    • page:分頁的頁碼(最小值 1)(數字,選填)
    • perPage:分頁的每頁結果數(最小值 1,最大值 100)(數字,選填)
    • repo:儲存庫的名稱(字串,必填)
  • issue_write - 建立或更新 issue/pull request

    • OAuth 挑戰範圍:repo
    • MCP 應用程式 UI:ui://github-mcp-server/issue-write
    • assignees:要指派給此 issue 的使用者名稱(字串[],選填)
    • body:issue 內文內容(字串,選填)
    • duplicate_of:此 issue 重複的 issue 編號。當 state_reason 為 'duplicate' 時必填。(數字,選填)
    • issue_fields:要設定或清除的 issue 欄位值。每個項目需要 'field_name' 和 'value'、'field_option_name' 或 'delete: true' 其中一個。(物件[],選填)
    • issue_number:要更新的 issue 編號(數字,選填)
    • labels:要套用至此 issue 的標籤(字串[],選填)
    • method:對單一 issue 執行的寫入操作。 選項有:
      • 'create' - 建立新的 issue。
      • 'update' - 更新現有的 issue。 (字串,必填)
    • milestone:里程碑編號(數字,選填)
    • owner:儲存庫擁有者(字串,必填)
    • parent_issue_number:父 issue 的 issue 編號。僅在 method 為 'create' 時使用,且不能與 issue_fields 合併使用。新 issue 會在相同操作中建立並附加到此父 issue。(數字,選填)
    • parent_owner:父 issue 的儲存庫擁有者。必須與 parent_repo 一起提供。兩者都省略則使用 owner 和 repo。僅在 method 為 'create' 且提供 parent_issue_number 時使用。(字串,選填)
    • parent_repo:父 issue 的儲存庫名稱。必須與 parent_owner 一起提供。兩者都省略則使用 owner 和 repo。僅在 method 為 'create' 且提供 parent_issue_number 時使用。(字串,選填)
    • repo:儲存庫名稱(字串,必填)
    • state:新狀態(字串,選填)
    • state_reason:狀態變更的原因。除非狀態有變更,否則忽略。(字串,選填)
    • title:issue 標題(字串,選填)
    • type:此 issue 的類型。對於更新,傳遞 null 以移除目前的類型。僅在此儲存庫啟用 issue 類型時使用。使用 list_issue_types 取得此儲存庫或其擁有者組織的有效類型值。如果儲存庫不支援 issue 類型,請省略此參數。(字串 | null,選填)
  • list_issue_fields - 列出 issue 欄位

    • OAuth 挑戰範圍:repo、read:org
    • owner:儲存庫或組織的帳號擁有者。名稱不區分大小寫。(字串,必填)
    • repo:儲存庫的名稱。提供時,傳回此特定儲存庫的欄位(從其組織繼承)。省略時,直接傳回組織層級的欄位。(字串,選填)
  • list_issue_types - 列出可用的 issue 類型

    • OAuth 挑戰範圍:repo、read:org
    • owner:儲存庫或組織的帳號擁有者。(字串,必填)
    • repo:儲存庫的名稱。提供時,傳回此特定儲存庫的 issue 類型。省略時,直接傳回組織層級的 issue 類型。(字串,選填)
  • list_issues - 列出 issues

    • OAuth 挑戰範圍:repo
    • after:分頁的游標。使用前一個回應的游標。(字串,選填)
    • direction:排序方向。如果提供,也需要提供 'orderBy'。(字串,選填)
    • field_filters:依自訂 issue 欄位值篩選。每個條目包含 field_name 和 value;伺服器會查詢欄位並將值轉換為其類型(單選選項名稱、文字、數字或 YYYY-MM-DD 日期)。(物件[],選填)
    • fields:每個 issue 要傳回的欄位子集。如果省略,傳回所有欄位。當您只需要特定欄位時,使用此選項以減少回應大小;特別省略 'body' 和 'field_values' 會移除每個結果中最大的資料。(字串[],選填)
    • labels:依標籤篩選(字串[],選填)
    • orderBy:依欄位排序 issues。如果提供,也需要提供 'direction'。(字串,選填)
    • owner:儲存庫擁有者(字串,必填)
    • perPage:分頁的每頁結果數(最小值 1,最大值 100)(數字,選填)
    • repo:儲存庫名稱(字串,必填)
    • since:依日期篩選(ISO 8601 時間戳記)(字串,選填)
    • state:依狀態篩選,未提供時預設傳回開啟和關閉的 issues(字串,選填)
  • search_issues - 搜尋議題

    • OAuth Challenge Scopes:repo
    • fields:每個議題結果要回傳的欄位子集。若省略,則回傳所有欄位。當你只需要特定欄位時,可用此選項來減少回應大小;特別是在省略 'body'、'reactions' 和 'labels' 時,可大幅減少每個結果的資料量。(string[],選用)
    • order:排序方式(string,選用)
    • owner:選用的儲存庫擁有者。若與 repo 一起提供,則只列出此儲存庫的議題。(string,選用)
    • page:分頁的頁碼(最小值 1)(number,選用)
    • perPage:分頁時每頁的結果數(最小值 1,最大值 100)(number,選用)
    • query:搜尋查詢,以自然語言表示。當使用者提供不同的措辭時,請將它們作為一般詞彙包含在內,而不是用 OR 連接。(string,必填)
    • repo:選用的儲存庫名稱。若與 owner 一起提供,則只列出此儲存庫的議題。(string,選用)
    • sort:依類別相符數量的排序欄位,預設為最佳相符(string,選用)
  • sub_issue_write - 變更子議題

    • OAuth Challenge Scopes:repo
    • after_id:要優先排序在其後的子議題 ID(需指定 after_id 或 before_id 其中一個)(number,選用)
    • before_id:要優先排序在其前的子議題 ID(需指定 after_id 或 before_id 其中一個)(number,選用)
    • issue_number:父議題的編號(number,必填)
    • method:對單一子議題執行的動作 選項有:
      • 'add' - 在 GitHub 儲存庫中,將子議題新增至父議題。
      • 'remove' - 在 GitHub 儲存庫中,從父議題移除子議題。
      • 'reprioritize' - 在 GitHub 儲存庫中,變更父議題內子議題的順序。使用 'after_id' 或 'before_id' 來指定新位置。 寫入議題階層。若要將子議題移至新的父議題,請使用 add 搭配 replace_parent=true;沒有可寫入的父欄位。 (string,必填)
    • owner:儲存庫擁有者(string,必填)
    • replace_parent:若為 true,則取代子議題目前的父議題。僅可與 'add' 方法一起使用。(boolean,選用)
    • repo:儲存庫名稱(string,必填)
    • sub_issue_id:要新增的子議題 ID。此 ID 與議題編號不同(number,必填)
  • update_issue_comment - 更新議題留言

    • OAuth Challenge Scopes:repo
    • body:新的留言內容(string,必填)
    • comment_id:要更新的議題或提取請求對話留言的數值 ID。請勿使用提取請求審查留言 ID。(integer,必填)
    • owner:儲存庫擁有者(string,必填)
    • repo:儲存庫名稱(string,必填)
tag 標籤
  • get_label - 從儲存庫取得特定標籤

    • OAuth Challenge Scopes:repo
    • name:標籤名稱。(string,必填)
    • owner:儲存庫擁有者(使用者名稱或組織名稱)(string,必填)
    • repo:儲存庫名稱(string,必填)
  • label_write - 儲存庫標籤的寫入操作

    • OAuth Challenge Scopes:repo
    • color:標籤顏色,為 6 字元的十六進位色碼,不含 '#' 前綴(例如 'f29513')。'create' 時必填,'update' 時選用。(string,選用)
    • description:標籤描述文字。'create' 和 'update' 時選用。(string,選用)
    • method:要執行的操作:'create'、'update' 或 'delete'(string,必填)
    • name:標籤名稱 - 所有操作皆必填(string,必填)
    • new_name:標籤的新名稱(僅在 'update' 方法中用於重新命名)(string,選用)
    • owner:儲存庫擁有者(使用者名稱或組織名稱)(string,必填)
    • repo:儲存庫名稱(string,必填)
  • list_label - 從儲存庫列出標籤

    • OAuth Challenge Scopes:repo
    • after:分頁游標。使用前一個回應中的游標。(string,選用)
    • owner:儲存庫擁有者(使用者名稱或組織名稱)- 所有操作皆必填(string,必填)
    • perPage:分頁時每頁的結果數(最小值 1,最大值 100)(number,選用)
    • repo:儲存庫名稱 - 所有操作皆必填(string,必填)
bell 通知
  • dismiss_notification - 關閉通知

    • OAuth Challenge Scopes:notifications
    • state:通知的新狀態(read/done)(string,必填)
    • threadID:通知執行緒的 ID(string,必填)
  • get_notification_details - 取得通知詳細資料

    • OAuth Challenge Scopes:notifications
    • notificationID:通知的 ID(string,必填)
  • list_notifications - 列出通知

    • OAuth Challenge Scopes:notifications
    • before:僅顯示在指定時間(ISO 8601 格式)之前更新的通知(string,選用)
    • filter:篩選通知,除非另有指定,否則使用預設值。已讀通知是指使用者已確認的通知。參與中通知是指使用者直接參與的通知,例如他們留言或建立的議題或提取請求。(string,選用)
    • owner:選用的儲存庫擁有者。若與 repo 一起提供,則只列出此儲存庫的通知。(string,選用)
    • page:分頁的頁碼(最小值 1)(number,選用)
    • perPage:分頁時每頁的結果數(最小值 1,最大值 100)(number,選用)
    • repo:選用的儲存庫名稱。若與 owner 一起提供,則只列出此儲存庫的通知。(string,選用)
    • since:僅顯示在指定時間(ISO 8601 格式)之後更新的通知(string,選用)
  • manage_notification_subscription - 管理通知訂閱

    • OAuth Challenge Scopes:notifications
    • action:要執行的動作:ignore、watch 或 delete 通知訂閱。(string,必填)
    • notificationID:通知執行緒的 ID。(string,必填)
  • manage_repository_notification_subscription - 管理儲存庫通知訂閱

    • OAuth Challenge Scopes:notifications
    • action:要執行的動作:ignore、watch 或 delete 儲存庫通知訂閱。(string,必填)
    • owner:儲存庫的帳戶擁有者。(string,必填)
    • repo:儲存庫的名稱。(string,必填)
  • mark_all_notifications_read - 將所有通知標記為已讀

    • OAuth Challenge Scopes:notifications
    • lastReadAt:描述最後一次檢查通知的時間點(選用)。預設:現在(string,選用)
    • owner:選用的儲存庫擁有者。若與 repo 一起提供,則只將此儲存庫的通知標記為已讀。(string,選用)
    • repo:選用的儲存庫名稱。若與 owner 一起提供,則只將此儲存庫的通知標記為已讀。(string,選用)
organization 組織
  • search_orgs - 搜尋組織
    • OAuth Challenge Scopes:read:org
    • order:排序方式(string,選用)
    • page:分頁的頁碼(最小值 1)(number,選用)
    • perPage:分頁時每頁的結果數(最小值 1,最大值 100)(number,選用)
    • query:組織搜尋查詢。範例:'microsoft'、'location:california'、'created:>=2025-01-01'。搜尋會自動限定在 type:org。(string,必填)
    • sort:依類別的排序欄位(string,選用)
project 專案
  • projects_get - 取得 GitHub Projects 資源的詳細資料

    • OAuth Challenge Scopes:read:project
    • field_id:欄位的 ID。'get_project_field' 方法時必填。(number,選用)
    • field_names:取得專案項目時,要包含在回應中的特定欄位名稱清單(例如 ["Status", "Priority"])。會在伺服器端解析為欄位 ID — 當你只知道人類可讀名稱時,請傳遞此參數而非 'fields'。與 'fields' 互斥 — 請提供其中一個,不要兩者都提供。僅用於 'get_project_item' 方法。(string[],選用)
    • fields:取得專案項目時,要包含在回應中的特定欄位 ID 清單(例如 ["102589", "985201", "169875"])。若未提供 'fields' 或 'field_names',則只會包含標題欄位。與 'field_names' 互斥 — 請提供其中一個,不要兩者都提供。僅用於 'get_project_item' 方法。(string[],選用)
    • item_id:項目的 ID。'get_project_item' 方法時必填。(number,選用)
    • method:要執行的方法(string,必填)
    • owner:擁有者(使用者或組織登入名稱)。名稱不區分大小寫。(string,選用)
    • owner_type:擁有者類型(user 或 org)。若未提供,將自動偵測。(string,選用)
    • project_number:專案的編號。(number,選用)
    • status_update_id:專案狀態更新的節點 ID。'get_project_status_update' 方法時必填。(string,選用)
    • view_id:專案檢視的節點 ID。'get_project_view' 方法時必填。(string,選用)
  • projects_list - 列出 GitHub Projects 資源

    • OAuth 挑戰範圍:read:project
    • after:來自先前 pageInfo.nextCursor 的向前分頁游標。(字串,選用)
    • before:來自先前 pageInfo.prevCursor 的向後分頁游標(罕見)。(字串,選用)
    • field_names:列出專案項目時要包含的欄位名稱(例如 ["Status", "Priority"])。會在伺服器端解析為欄位 ID——當您只知道人類可讀名稱時,請傳遞此參數而非 'fields'。無法解析的名稱會回傳結構化錯誤。與 'fields' 互斥——請僅提供其中一個。僅用於 'list_project_items' 方法。(字串陣列,選用)
    • fields:列出專案項目時要包含的欄位 ID(例如 ["102589", "985201"])。重要:務必提供以取得欄位值。若未提供(且未提供 'field_names'),則僅回傳標題。與 'field_names' 互斥——請僅提供其中一個。僅用於 'list_project_items' 方法。(字串陣列,選用)
    • method:要執行的動作(字串,必填)
    • owner:擁有者(使用者或組織登入名稱)。名稱不區分大小寫。(字串,必填)
    • owner_type:擁有者類型(user 或 org)。若未提供,將自動嘗試兩者。(字串,選用)
    • perPage:每頁結果數(最多 50)(數字,選用)
    • project_number:專案編號。用於 'list_project_fields'、'list_project_items'、'list_project_views' 和 'list_project_status_updates' 方法。(數字,選用)
    • query:篩選/查詢字串。對於 list_projects:依標題文字和狀態篩選(例如 "roadmap is:open")。對於 list_project_items:使用 GitHub 的專案篩選語法進行進階篩選。(字串,選用)
  • projects_write - 管理 GitHub Projects

    • OAuth 挑戰範圍:project
    • body:狀態更新的內容(Markdown)。用於 'create_project_status_update' 方法。(字串,選用)
    • field_name:迭代欄位的名稱(例如 'Sprint')。用於 'create_iteration_field' 方法。(字串,選用)
    • filter:已儲存的檢視篩選器;更新時省略以保留,或傳遞 null 以清除。(字串 | null,選用)
    • issue_number:議題編號。當 item_type 為 'issue' 時,用於 'add_project_item'。'update_project_item' 也接受此參數以依議題編號解析項目(需搭配 item_owner 和 item_repo)。(數字,選用)
    • item_id:專案項目 ID。用於 'delete_project_item'。對於 'update_project_item',請提供 item_id,或提供(item_owner + item_repo + issue_number)以依議題解析項目。(數字,選用)
    • item_owner:包含議題或拉取請求的儲存庫擁有者(使用者或組織)。用於 'add_project_item' 方法。'update_project_item' 依議題編號解析項目時也接受此參數。(字串,選用)
    • item_repo:包含議題或拉取請求的儲存庫名稱。用於 'add_project_item' 方法。'update_project_item' 依議題編號解析項目時也接受此參數。(字串,選用)
    • item_type:項目的類型,可為 issue 或 pull_request。用於 'add_project_item' 方法。(字串,選用)
    • items:要使用頂層 'updated_field' 更新的項目。用於 'update_project_items';建議優先使用此方法而非在迴圈中呼叫 'update_project_item'。每個條目必須完全符合一種參考變體:'node_id'、數字 'item_id',或 'item_owner' + 'item_repo' + 'issue_number'。限制:每次呼叫最多 50 個項目。(物件陣列,選用)
    • iteration_duration:欄位迭代的持續天數(例如 7 為每週,14 為雙週)。用於 'create_iteration_field' 方法。(數字,選用)
    • iterations:用於 'create_iteration_field' 方法的自訂迭代。僅在需要不同持續時間、間隔或特定標題的迭代時設定。否則請省略:GitHub 會自動建立三個從 'start_date' 開始、每個 'iteration_duration' 天的迭代,這在大多數情況下是正確的選擇。(物件陣列,選用)
    • layout:檢視版面配置;建立檢視時必填。(字串,選用)
    • method:要執行的方法(字串,必填)
    • name:檢視名稱;建立檢視時必填。(字串,選用)
    • owner:專案擁有者(使用者或組織登入名稱)。名稱不區分大小寫。(字串,必填)
    • owner_type:擁有者類型(user 或 org)。用於 'create_project' 方法。若未提供給其他方法,將自動偵測。(字串,選用)
    • project_number:專案編號。除 'create_project' 外的所有方法皆必填。(數字,選用)
    • pull_request_number:拉取請求編號(當 item_type 為 'pull_request' 時用於 'add_project_item' 方法)。請提供 issue_number 或 pull_request_number 其中之一。(數字,選用)
    • start_date:開始日期,格式為 YYYY-MM-DD。用於 'create_project_status_update' 和 'create_iteration_field' 方法。(字串,選用)
    • status:專案狀態。用於 'create_project_status_update' 方法。(字串,選用)
    • target_date:狀態更新的目標日期,格式為 YYYY-MM-DD。用於 'create_project_status_update' 方法。(字串,選用)
    • title:專案標題。用於 'create_project' 方法。(字串,選用)
    • updated_field:要套用的欄位/值,使用 {"id": 123, "value": ...} 或 {"name": "Status", "value": ...};null 會清除欄位。用於 'update_project_item' 和 'update_project_items',其中一個頂層欄位/值會套用至批次中的每個項目。對於 'update_project_item' 的 SINGLE_SELECT 欄位,名稱形式接受選項名稱;ID 形式則預期選項 ID。(物件,選用)
    • view_id:用於更新或刪除的專案檢視節點 ID;必須屬於 owner/project_number。(字串,選用)
    • visible_field_names:建立時顯示或更新時取代的有序專案欄位名稱;更新時省略以保留,或傳遞 [] 以重設。與 visible_fields 互斥。Roadmap 僅接受 []。(字串陣列,選用)
    • visible_fields:建立時顯示或更新時取代的有序專案欄位資料庫 ID;更新時省略以保留,或傳遞 [] 以重設。與 visible_field_names 互斥。Roadmap 僅接受 []。(字串陣列,選用)
git-pull-request 拉取請求
  • add_comment_to_pending_review - 在請求者最新的待處理拉取請求審查中新增審查評論

    • OAuth 挑戰範圍:repo
    • body:審查評論的文字(字串,必填)
    • line:評論所適用的拉取請求差異中的 blob 行號。對於多行評論,為範圍的最後一行(數字,選用)
    • owner:儲存庫擁有者(字串,必填)
    • path:需要評論的檔案的相對路徑(字串,必填)
    • pullNumber:拉取請求編號(數字,必填)
    • repo:儲存庫名稱(字串,必填)
    • side:要評論的差異側。LEFT 表示先前的狀態,RIGHT 表示新的狀態(字串,選用)
    • startLine:對於多行評論,評論所適用的範圍的第一行(數字,選用)
    • startSide:對於多行評論,評論所適用的差異起始側。LEFT 表示先前的狀態,RIGHT 表示新的狀態(字串,選用)
    • subjectType:評論所針對的層級(字串,必填)
  • add_reply_to_pull_request_comment - 回覆拉取請求評論

    • OAuth 挑戰範圍:repo
    • body:回覆的文字。除非提供 reaction,否則必填。(字串,選用)
    • commentId:要回覆或回應的拉取請求審查評論的數字 ID。請使用 #discussion_r... 錨點中的編號,而非 GraphQL 執行緒節點 ID(PRRT_...)。(數字,必填)
    • owner:儲存庫擁有者(字串,必填)
    • pullNumber:拉取請求編號。當提供 body 時必填。(數字,選用)
    • reaction:要新增的表情符號回應。除非提供 body,否則必填。(字串,選用)
    • repo:儲存庫名稱(字串,必填)
  • create_pull_request - 開啟新的拉取請求

    • OAuth 挑戰範圍:repo
    • MCP 應用程式 UI:ui://github-mcp-server/pr-write
    • base:要合併進去的分支(字串,必填)
    • body:PR 描述(字串,選用)
    • draft:建立為草稿 PR(布林值,選用)
    • head:包含變更的分支(字串,必填)
    • maintainer_can_modify:允許維護者編輯(布林值,選用)
    • owner:儲存庫擁有者(字串,必填)
    • repo:儲存庫名稱(字串,必填)
    • reviewers:要請求審查的 GitHub 使用者名稱或 ORG/team-slug 團隊審查者(字串陣列,選用)
    • title:PR 標題(字串,必填)
  • list_pull_requests - 列出拉取請求

    • OAuth 挑戰範圍:repo
    • base:依基礎分支篩選(字串,選用)
    • direction:排序方向(字串,選用)
    • fields:每個拉取請求要回傳的欄位子集。若省略,則回傳所有欄位。當您只需要特定欄位時,使用此參數可減少回應大小;特別是在省略 'body' 時,可移除每個結果中最大的資料。(字串陣列,選用)
    • head:依 head 使用者/組織和分支篩選(字串,選用)
    • owner:儲存庫擁有者(字串,必填)
    • page:分頁的頁碼(最小 1)(數字,選用)
    • perPage:分頁的每頁結果數(最小 1,最大 100)(數字,選用)
    • repo:儲存庫名稱(字串,必填)
    • sort:排序依據(字串,選用)
    • state:依狀態篩選(字串,選用)
  • merge_pull_request - 合併拉取請求

    • OAuth 挑戰範圍:repo
    • commit_message:合併提交的額外詳細資訊(字串,選用)
    • commit_title:合併提交的標題(字串,選用)
    • expectedHeadSha:拉取請求 HEAD 參照的預期 SHA(字串,選用)
    • merge_method:合併方法(字串,選用)
    • owner:儲存庫擁有者(字串,必填)
    • pullNumber:拉取請求編號(數字,必填)
    • repo:儲存庫名稱(字串,必填)
  • pull_request_read - 取得單一 pull request 的詳細資料

    • OAuth Challenge Scopes: repo
    • after: 用於分頁的游標,僅由 get_review_comments 方法使用。傳入上一頁 PageInfo 的 endCursor 以取得下一頁。(string, optional)
    • method: 指定要從 GitHub 擷取哪些 pull request 資料的動作。 可能的選項:
      1. get - 取得特定 pull request 的詳細資料。
      2. get_diff - 取得 pull request 的 diff。
      3. get_status - 取得 pull request 中 head commit 的合併提交狀態。
      4. get_files - 取得 pull request 中變更的檔案清單。搭配分頁參數以控制回傳結果數量。
      5. get_commits - 取得 pull request 上的 commit 清單。搭配分頁參數以控制回傳結果數量。
      6. get_review_comments - 取得 pull request 上的審查討論串。每個討論串包含在 pull request 審查期間於相同程式碼位置所做的邏輯分組審查評論。回傳討論串中繼資料與評論,其中包含可為 null 的目前與原始行範圍座標(line、start_line、original_line、original_start_line)。當無法取得目前座標時(例如過時評論),會省略目前座標。使用基於游標的分頁(perPage、after)來控制結果。
      7. get_reviews - 取得 pull request 上的審查。當被要求取得審查評論時,請使用 get_review_comments 方法。搭配分頁參數以控制回傳結果數量。
      8. get_comments - 取得 pull request 上的評論。如果使用者沒有特別要求審查評論,請使用此選項。搭配分頁參數以控制回傳結果數量。
      9. get_check_runs - 取得 pull request head commit 的檢查執行。檢查執行是在 PR 上執行的個別 CI/CD 作業與檢查。 (string, required)
    • owner: 儲存庫擁有者 (string, required)
    • page: 分頁的頁碼(最小值 1)(number, optional)
    • perPage: 分頁的每頁結果數(最小值 1,最大值 100)(number, optional)
    • pullNumber: Pull request 編號 (number, required)
    • repo: 儲存庫名稱 (string, required)
  • pull_request_review_write - 對 pull request 審查執行寫入操作(建立、提交、刪除)

    • OAuth Challenge Scopes: repo
    • body: 審查評論文字 (string, optional)
    • commitID: 要審查的 commit 的 SHA (string, optional)
    • event: 要執行的審查動作。(string, optional)
    • method: 要對 pull request 審查執行的寫入操作。(string, required)
    • owner: 儲存庫擁有者 (string, required)
    • pullNumber: Pull request 編號 (number, required)
    • repo: 儲存庫名稱 (string, required)
    • threadId: 審查討論串的節點 ID(例如 PRRT_kwDOxxx)。resolve_thread 和 unresolve_thread 方法需要此參數。使用 pull_request_read 搭配 method get_review_comments 取得討論串 ID。(string, optional)
  • search_pull_requests - 搜尋 pull requests

    • OAuth Challenge Scopes: repo
    • fields: 每個 pull request 結果要回傳的欄位子集。如果省略,則回傳所有欄位。當您只需要特定欄位時,使用此選項可減少回應大小;特別是省略 'body'、'reactions' 和 'labels' 可大幅減少每個結果的資料量。(string[], optional)
    • order: 排序順序 (string, optional)
    • owner: 可選的儲存庫擁有者。如果與 repo 一起提供,則僅列出此儲存庫的 pull requests。(string, optional)
    • page: 分頁的頁碼(最小值 1)(number, optional)
    • perPage: 分頁的每頁結果數(最小值 1,最大值 100)(number, optional)
    • query: 使用 GitHub pull request 搜尋語法的搜尋查詢 (string, required)
    • repo: 可選的儲存庫名稱。如果與 owner 一起提供,則僅列出此儲存庫的 pull requests。(string, optional)
    • sort: 依類別相符數量的排序欄位,預設為最佳相符 (string, optional)
  • update_pull_request - 編輯 pull request

    • OAuth Challenge Scopes: repo
    • MCP App UI: ui://github-mcp-server/pr-edit
    • base: 新的基底分支名稱 (string, optional)
    • body: 新的描述 (string, optional)
    • draft: 將 pull request 標記為草稿(true)或準備好進行審查(false)(boolean, optional)
    • maintainer_can_modify: 允許維護者編輯 (boolean, optional)
    • owner: 儲存庫擁有者 (string, required)
    • pullNumber: 要更新的 pull request 編號 (number, required)
    • repo: 儲存庫名稱 (string, required)
    • reviewers: 要請求審查的 GitHub 使用者名稱或 ORG/team-slug 團隊審查者 (string[], optional)
    • state: 新的狀態 (string, optional)
    • title: 新的標題 (string, optional)
  • update_pull_request_branch - 更新 pull request 分支

    • OAuth Challenge Scopes: repo
    • expectedHeadSha: pull request HEAD 參照的預期 SHA (string, optional)
    • owner: 儲存庫擁有者 (string, required)
    • pullNumber: Pull request 編號 (number, required)
    • repo: 儲存庫名稱 (string, required)
repo 儲存庫
  • create_branch - 建立分支

    • OAuth Challenge Scopes: repo
    • branch: 新分支的名稱 (string, required)
    • from_branch: 來源分支(預設為儲存庫預設分支)(string, optional)
    • owner: 儲存庫擁有者 (string, required)
    • repo: 儲存庫名稱 (string, required)
  • create_or_update_file - 建立或更新檔案

    • OAuth Challenge Scopes: repo, workflow
    • allow_symlink_write: 設為 true 以更新符號連結本身;內容必須是其新的目標路徑。(boolean, optional)
    • branch: 要在其中建立/更新檔案的分支 (string, required)
    • content: 檔案內容,必須與寫入後的內容完全一致。請勿進行 base64 編碼;此伺服器會在呼叫 REST API 前執行此操作。(string, required)
    • message: 提交訊息 (string, required)
    • owner: 儲存庫擁有者(使用者名稱或組織)(string, required)
    • path: 要建立/更新檔案的路徑 (string, required)
    • repo: 儲存庫名稱 (string, required)
    • sha: 要取代的檔案的 blob SHA。如果檔案已存在,則為必填。使用 get_file_contents 搭配相同的 owner、repo 和 path,並將 ref 設為此工具的 branch 值來取得。(string, optional)
  • create_repository - 建立儲存庫

    • OAuth Challenge Scopes: repo
    • autoInit: 使用 README 初始化 (boolean, optional)
    • description: 儲存庫描述 (string, optional)
    • name: 儲存庫名稱 (string, required)
    • organization: 要在其中建立儲存庫的組織(省略則在您的個人帳戶中建立)(string, optional)
    • private: 儲存庫是否應為私人。省略時預設為 true(私人)。(boolean, optional)
  • delete_file - 刪除檔案

    • OAuth Challenge Scopes: repo, workflow
    • branch: 要從中刪除檔案的分支 (string, required)
    • message: 提交訊息 (string, required)
    • owner: 儲存庫擁有者(使用者名稱或組織)(string, required)
    • path: 要刪除的檔案路徑 (string, required)
    • repo: 儲存庫名稱 (string, required)
  • delete_repository - 刪除儲存庫

    • OAuth Challenge Scopes: delete_repo, repo
    • owner: 儲存庫擁有者(使用者名稱或組織)(string, required)
    • repo: 儲存庫名稱 (string, required)
  • fork_repository - 複製儲存庫

    • OAuth Challenge Scopes: repo
    • organization: 要複製到的組織 (string, optional)
    • owner: 儲存庫擁有者 (string, required)
    • repo: 儲存庫名稱 (string, required)
  • get_commit - 取得 commit 詳細資料

    • OAuth Challenge Scopes: repo
    • detail: 要包含的變更檔案詳細程度。"none" 完全省略統計資料和檔案。"stats"(預設)包含每個檔案的中繼資料:檔名、狀態和程式碼行數統計(新增、刪除、變更),不含修補程式內容。"full_patch" 另外包含每個檔案的統一 diff 內容,且可能非常龐大。(string, optional)
    • owner: 儲存庫擁有者 (string, required)
    • page: 分頁的頁碼(最小值 1)(number, optional)
    • perPage: 分頁的每頁結果數(最小值 1,最大值 100)(number, optional)
    • repo: 儲存庫名稱 (string, required)
    • sha: Commit SHA、分支名稱或標籤名稱 (string, required)
  • get_file_contents - 取得檔案或目錄內容

    • OAuth Challenge Scopes: repo
    • fields: 當路徑為目錄時,每個條目要回傳的欄位子集。如果省略,則回傳所有欄位。當路徑為單一檔案時忽略。當列出目錄且您只需要特定欄位(例如僅 'name' 和 'type')時,使用此選項可減少回應大小。(string[], optional)
    • owner: 儲存庫擁有者(使用者名稱或組織)(string, required)
    • path: 檔案/目錄路徑 (string, optional)
    • ref: 接受可選的 git 參照,例如 refs/tags/{tag}、refs/heads/{branch} 或 refs/pull/{pr_number}/head (string, optional)
    • repo: 儲存庫名稱 (string, required)
    • sha: 接受可選的 commit SHA。如果指定,將使用它而不是 ref (string, optional)
  • get_latest_release - 取得最新版本

    • OAuth Challenge Scopes: repo
    • owner: 儲存庫擁有者 (string, required)
    • repo: 儲存庫名稱 (string, required)
  • get_release_by_tag - 依標籤名稱取得版本

    • OAuth Challenge Scopes: repo
    • owner: 儲存庫擁有者 (string, required)
    • repo: 儲存庫名稱 (string, required)
    • tag: 標籤名稱(例如 'v1.0.0')(string, required)
  • get_tag - 取得標籤詳細資料

    • OAuth Challenge Scopes: repo
    • owner: 儲存庫擁有者 (string, required)
    • repo: 儲存庫名稱 (string, required)
    • tag: 標籤名稱 (string, required)
  • list_branches - 列出分支

    • OAuth Challenge Scopes: repo
    • owner: 儲存庫擁有者 (string, required)
    • page: 分頁的頁碼(最小值 1)(number, optional)
    • perPage: 分頁的每頁結果數(最小值 1,最大值 100)(number, optional)
    • repo: 儲存庫名稱 (string, required)
  • list_commits - 列出提交

    • OAuth Challenge Scopes:repo
    • author:用於篩選提交的作者使用者名稱或電子郵件地址(字串,選用)
    • fields:每個提交要傳回的欄位子集。若省略,則傳回所有欄位。當您只需要特定欄位(例如僅 'sha' 和 'html_url')時,可使用此選項來減少回應大小。(字串陣列,選用)
    • owner:儲存庫擁有者(字串,必填)
    • page:分頁的頁碼(最小值 1)(數字,選用)
    • path:僅傳回包含此檔案路徑的提交(字串,選用)
    • perPage:分頁的每頁結果數(最小值 1,最大值 100)(數字,選用)
    • repo:儲存庫名稱(字串,必填)
    • sha:要列出提交的提交 SHA、分支或標籤名稱。若未提供,則使用儲存庫的預設分支。若提供提交 SHA,則會列出截至該 SHA 的提交。(字串,選用)
    • since:僅傳回此日期之後的提交(ISO 8601 格式:YYYY-MM-DDTHH:MM:SSZ 或 YYYY-MM-DD)(字串,選用)
    • until:僅傳回此日期之前的提交(ISO 8601 格式:YYYY-MM-DDTHH:MM:SSZ 或 YYYY-MM-DD)(字串,選用)
  • list_releases - 列出發行版本

    • OAuth Challenge Scopes:repo
    • fields:每個發行版本要傳回的欄位子集。若省略,則傳回所有欄位。當您只需要特定欄位時,可使用此選項來減少回應大小;特別是省略 'body' 可刪除每個發行版本中最大的資料。(字串陣列,選用)
    • owner:儲存庫擁有者(字串,必填)
    • page:分頁的頁碼(最小值 1)(數字,選用)
    • perPage:分頁的每頁結果數(最小值 1,最大值 100)(數字,選用)
    • repo:儲存庫名稱(字串,必填)
  • list_repository_collaborators - 列出儲存庫協作者

    • OAuth Challenge Scopes:repo
    • affiliation:依關聯篩選。可為下列其中之一:'outside'(外部協作者)、'direct'(所有具有權限者,無論組織成員資格)、'all'(所有協作者)。預設值:'all'(字串,選用)
    • owner:儲存庫擁有者(字串,必填)
    • page:分頁的頁碼(預設值 1,最小值 1)(數字,選用)
    • perPage:分頁的每頁結果數(預設值 30,最小值 1,最大值 100)(數字,選用)
    • repo:儲存庫名稱(字串,必填)
  • list_tags - 列出標籤

    • OAuth Challenge Scopes:repo
    • owner:儲存庫擁有者(字串,必填)
    • page:分頁的頁碼(最小值 1)(數字,選用)
    • perPage:分頁的每頁結果數(最小值 1,最大值 100)(數字,選用)
    • repo:儲存庫名稱(字串,必填)
  • push_files - 推送檔案至儲存庫

    • OAuth Challenge Scopes:repo、workflow
    • branch:要推送的分支(字串,必填)
    • files:要推送的檔案物件陣列,每個物件包含 path(字串)和 content(字串)(物件陣列,必填)
    • message:提交訊息(字串,必填)
    • owner:儲存庫擁有者(字串,必填)
    • repo:儲存庫名稱(字串,必填)
  • search_code - 搜尋程式碼

    • OAuth Challenge Scopes:repo
    • fields:每個程式碼搜尋結果要傳回的欄位子集。若省略,則傳回所有欄位。當您只需要特定欄位時,可使用此選項來減少回應大小;特別是省略 'repository' 和 'text_matches' 可刪除每個結果中最大的資料。(字串陣列,選用)
    • order:結果的排序順序(字串,選用)
    • page:分頁的頁碼(最小值 1)(數字,選用)
    • perPage:分頁的每頁結果數(最小值 1,最大值 100)(數字,選用)
    • query:搜尋查詢(GitHub 程式碼搜尋 REST)。詞彙之間隱含 AND;支援 OR、NOT 和 "quoted phrase" 以進行精確比對。限定詞:repo:owner/repo、org:、user:、language:、path:dir(前置詞比對)、filename:exact.ext、extension:、in:file、in:path、size:、is:archived、is:fork。最多 256 個字元。範例:WithContext language:go org:github;"package main" repo:o/r;func extension:go path:cmd repo:o/r;NOT TODO language:go repo:o/r。(字串,必填)
    • sort:排序欄位(僅 'indexed')(字串,選用)
  • search_commits - 搜尋提交

    • OAuth Challenge Scopes:repo
    • order:排序順序(字串,選用)
    • page:分頁的頁碼(最小值 1)(數字,選用)
    • perPage:分頁的每頁結果數(最小值 1,最大值 100)(數字,選用)
    • query:提交搜尋查詢(GitHub 提交搜尋 REST)。僅在預設分支上搜尋提交訊息。使用 repo:owner/repo、org: 或 user: 限定搜尋範圍(沒有範圍限定詞的查詢會跨整個 GitHub 搜尋,通常不是您想要的)。其他限定詞:author:、committer:、author-name:、committer-name:、author-email:、committer-email:、author-date:、committer-date:(支援 >、<、>=、<= 和 YYYY-MM-DD..YYYY-MM-DD 範圍)、merge:true|false、hash:、tree:、parent:、is:public。範例:repo:owner/repo fix panic;org:github author:defunkt committer-date:>=2024-01-01;"refactor cache" repo:o/r;hash:abc1234 repo:o/r。(字串,必填)
    • sort:依作者或提交者日期排序(預設為最佳相符)(字串,選用)
  • search_repositories - 搜尋儲存庫

    • OAuth Challenge Scopes:repo
    • minimal_output:傳回精簡的儲存庫資訊(預設值:true)。當為 false 時,現代用戶端會收到額外的精選儲存庫詳細資料,而非完整的 GitHub API 物件。舊版用戶端則保留完整的 GitHub API 儲存庫物件。(布林值,選用)
    • order:排序順序(字串,選用)
    • page:分頁的頁碼(最小值 1)(數字,選用)
    • perPage:分頁的每頁結果數(最小值 1,最大值 100)(數字,選用)
    • query:儲存庫搜尋查詢。範例:'machine learning in:name stars:>1000 language:python'、'topic:react'、'user:facebook'。支援進階搜尋語法以進行精確篩選。(字串,必填)
    • sort:依欄位排序儲存庫,預設為最佳相符(字串,選用)
shield-lock 密碼保護
  • get_secret_scanning_alert - 取得密碼掃描警示

    • OAuth Challenge Scopes:security_events
    • alertNumber:警示的編號。(數字,必填)
    • owner:儲存庫的擁有者。(字串,必填)
    • repo:儲存庫的名稱。(字串,必填)
  • list_secret_scanning_alerts - 列出密碼掃描警示

    • OAuth Challenge Scopes:security_events
    • owner:儲存庫的擁有者。(字串,必填)
    • page:分頁的頁碼(最小值 1)(數字,選用)
    • perPage:分頁的每頁結果數(最小值 1,最大值 100)(數字,選用)
    • repo:儲存庫的名稱。(字串,必填)
    • resolution:依解決狀態篩選(字串,選用)
    • secret_type:要傳回的密碼類型逗號分隔清單。會傳回所有預設密碼模式。若要傳回通用模式,請在參數中傳入權杖名稱。(字串,選用)
    • state:依狀態篩選(字串,選用)
shield 安全性公告
  • get_global_security_advisory - 取得全域安全性公告

    • OAuth Challenge Scopes:security_events
    • ghsaId:GitHub 安全性公告 ID(格式:GHSA-xxxx-xxxx-xxxx)。(字串,必填)
  • list_global_security_advisories - 列出全域安全性公告

    • OAuth Challenge Scopes:security_events
    • affects:依受影響的套件或版本篩選公告(例如 "package1,package2@1.0.0")。(字串,選用)
    • cveId:依 CVE ID 篩選。(字串,選用)
    • cwes:依 Common Weakness Enumeration ID 篩選(例如 ["79", "284", "22"])。(字串陣列,選用)
    • ecosystem:依套件生態系統篩選。(字串,選用)
    • ghsaId:依 GitHub 安全性公告 ID 篩選(格式:GHSA-xxxx-xxxx-xxxx)。(字串,選用)
    • isWithdrawn:是否僅傳回已撤回的公告。(布林值,選用)
    • modified:依發布或更新日期或日期範圍篩選(ISO 8601 日期或範圍)。(字串,選用)
    • published:依發布日期或日期範圍篩選(ISO 8601 日期或範圍)。(字串,選用)
    • severity:依嚴重性篩選。(字串,選用)
    • type:公告類型。(字串,選用)
    • updated:依更新日期或日期範圍篩選(ISO 8601 日期或範圍)。(字串,選用)
  • list_org_repository_security_advisories - 列出組織儲存庫安全性公告

    • OAuth Challenge Scopes:security_events
    • direction:排序方向。(字串,選用)
    • org:組織登入名稱。(字串,必填)
    • sort:排序欄位。(字串,選用)
    • state:依公告狀態篩選。(字串,選用)
  • list_repository_security_advisories - 列出儲存庫安全性公告

    • OAuth Challenge Scopes:security_events
    • direction:排序方向。(字串,選用)
    • owner:儲存庫的擁有者。(字串,必填)
    • repo:儲存庫的名稱。(字串,必填)
    • sort:排序欄位。(字串,選用)
    • state:依公告狀態篩選。(字串,選用)
star 星星數
  • list_starred_repositories - 列出已加星號的儲存庫

    • OAuth Challenge Scopes:repo
    • direction:結果的排序方向。(字串,選用)
    • page:分頁的頁碼(最小值 1)(數字,選用)
    • perPage:分頁的每頁結果數(最小值 1,最大值 100)(數字,選用)
    • sort:結果的排序方式。可為 'created'(儲存庫被加星號的時間)或 'updated'(儲存庫最後被推送的時間)。(字串,選用)
    • username:要列出已加星號儲存庫的使用者名稱。預設為已驗證的使用者。(字串,選用)
  • star_repository - 為儲存庫加星號

    • OAuth Challenge Scopes:repo
    • owner:儲存庫擁有者(字串,必填)
    • repo:儲存庫名稱(字串,必填)
  • unstar_repository - 取消儲存庫星號

    • OAuth Challenge Scopes:repo
    • owner:儲存庫擁有者(字串,必填)
    • repo:儲存庫名稱(字串,必填)
people 使用者 - **search_users** - 搜尋使用者 - **OAuth 挑戰範圍**:`repo` - `order`:排序方式(字串,選填) - `page`:分頁頁碼(最小值 1)(數字,選填) - `perPage`:每頁結果數(最小值 1,最大值 100)(數字,選填) - `query`:使用者搜尋查詢。範例:'john smith'、'location:seattle'、'followers:>100'。搜尋會自動限定為 type:user。(字串,必填) - `sort`:依追蹤者數、儲存庫數或加入 GitHub 的時間排序使用者。(字串,選填)

遠端 GitHub MCP 伺服器中的其他工具

Copilot
  • create_pull_request_with_copilot - 使用 GitHub Copilot 編碼代理程式執行任務
    • owner:儲存庫擁有者。您可以猜測擁有者,但請在繼續前與使用者確認。(字串,必填)
    • repo:儲存庫名稱。您可以猜測儲存庫名稱,但請在繼續前與使用者確認。(字串,必填)
    • problem_statement:要執行任務的詳細描述(例如「實作一項執行 X 的功能」、「修正錯誤 Y」等)(字串,必填)
    • title:將建立的拉取請求標題(字串,必填)
    • base_ref:代理程式開始工作的 Git 參考(例如分支)。若未指定,預設為儲存庫的預設分支(字串,選填)
Copilot Spaces
  • 驗證注意事項

    • 細粒度 PAT 不會被傳統 PAT 範圍篩選隱藏,因此即使權杖無法使用這些工具,它們仍可能顯示。
    • 對於組織擁有的 spaces,細粒度 PAT 必須安裝在擁有組織上,並包含 organization_copilot_spaces: read。
    • 如果組織擁有的 space 包含以儲存庫為基礎的資源,權杖也必須能存取每個引用的儲存庫,否則該 space 可能被視為找不到。
  • get_copilot_space - 取得 Copilot Space

    • owner:space 的擁有者。(字串,必填)
    • name:space 的名稱。(字串,必填)
  • list_copilot_spaces - 列出 Copilot Spaces

GitHub 支援文件搜尋
  • github_support_docs_search - 擷取與回答 GitHub 產品和支援問題相關的文件。支援主題包括:GitHub Actions 工作流程、驗證、GitHub 支援查詢、拉取請求實務、儲存庫維護、GitHub Pages、GitHub Packages、GitHub Discussions、Copilot Spaces
    • query:使用者關於需要回答問題的輸入。這是最新的原始未編輯使用者訊息。您應始終保持使用者訊息原樣,絕不修改它。(字串,必填)

唯讀模式

若要唯讀模式執行伺服器,您可以使用 --read-only 旗標。這只會提供唯讀工具,防止對儲存庫、議題、拉取請求等進行任何修改。

./github-mcp-server --read-only

使用 Docker 時,您可以將唯讀模式作為環境變數傳遞:

docker run -i --rm \
  -e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \
  -e GITHUB_READ_ONLY=1 \
  ghcr.io/github/github-mcp-server

鎖定模式

鎖定模式限制伺服器從公開儲存庫顯示的內容。啟用時,伺服器會檢查每個項目的作者是否對儲存庫具有推送存取權。私人儲存庫不受影響,協作者保留對其自身內容的完整存取權。

鎖定模式是一種盡力而為的內容篩選器,旨在降低來自不受信任儲存庫內容(議題、拉取請求、評論、提交等)的提示注入風險。它不是授權邊界:它不會改變底層 GitHub 憑證可以讀取或寫入的內容,而從篩選工具回應中隱藏的內容仍可能透過其他工具或使用相同憑證直接存取 GitHub API 來取得。

作為刻意例外,由一小組受信任機器人帳戶(目前為 github-actions[bot] 和 copilot)撰寫的內容一律視為安全,無論推送存取權為何。這可避免篩選掉在鎖定模式下原本會被隱藏的例行自動化輸出(例如 CI 產生的提交或評論)。

./github-mcp-server --lockdown-mode

使用 Docker 執行時,設定對應的環境變數:

docker run -i --rm \
  -e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \
  -e GITHUB_LOCKDOWN_MODE=1 \
  ghcr.io/github/github-mcp-server

在 HTTP 模式下,此旗標(或 GITHUB_LOCKDOWN_MODE)是上限:X-MCP-Lockdown 請求標頭可以在操作員未啟用時啟用鎖定模式,但無法停用操作員已啟用的鎖定模式。詳情請參閱伺服器設定指南。

鎖定模式的行為取決於呼叫的工具。

當作者缺乏推送存取權時,以下工具將傳回錯誤:

  • issue_read:get
  • pull_request_read:get
  • pull_request_read:get_diff
  • pull_request_read:get_files
  • pull_request_read:get_commits

以下工具將篩選掉缺乏推送存取權使用者的內容:

  • issue_read:get_comments
  • issue_read:get_sub_issues
  • pull_request_read:get_comments
  • pull_request_read:get_review_comments
  • pull_request_read:get_reviews

國際化/覆寫描述

工具的描述可以透過在二進位檔相同目錄中建立 github-mcp-server-config.json 檔案來覆寫。

該檔案應包含一個 JSON 物件,以工具名稱作為鍵,新的 描述作為值。例如:

{
  "TOOL_ADD_ISSUE_COMMENT_DESCRIPTION": "an alternative description",
  "TOOL_CREATE_BRANCH_DESCRIPTION": "Create a new branch in a GitHub repository"
}

您可以透過使用 --export-translations 旗標執行二進位檔來建立目前翻譯的匯出。

此旗標會保留您所做的任何翻譯/覆寫,同時新增 自上次匯出以來已新增至二進位檔的任何新翻譯。

./github-mcp-server --export-translations
cat github-mcp-server-config.json

您也可以使用環境變數來覆寫描述。環境 變數名稱與 JSON 檔案中的鍵相同,前面加上 GITHUB_MCP_ 並全部大寫。

例如,若要覆寫 TOOL_ADD_ISSUE_COMMENT_DESCRIPTION 工具,您可以 設定以下環境變數:

export GITHUB_MCP_TOOL_ADD_ISSUE_COMMENT_DESCRIPTION="an alternative description"

覆寫伺服器名稱和標題

相同的覆寫機制可用於自訂 MCP 伺服器在初始化回應中的 name 和 title 欄位。這在執行多個 GitHub MCP 伺服器實例時很有用(例如一個用於 github.com,一個用於 GitHub Enterprise Server),以便代理程式可以區分它們。

鍵環境變數預設值
SERVER_NAMEGITHUB_MCP_SERVER_NAMEgithub-mcp-server
SERVER_TITLEGITHUB_MCP_SERVER_TITLEGitHub MCP Server

例如,若要為 GitHub Enterprise Server 設定伺服器實例:

{
  "SERVER_NAME": "ghes-mcp-server",
  "SERVER_TITLE": "GHES MCP Server"
}

或使用環境變數:

export GITHUB_MCP_SERVER_NAME="ghes-mcp-server"
export GITHUB_MCP_SERVER_TITLE="GHES MCP Server"

程式庫使用

此模組匯出的 Go API 目前應視為不穩定,且可能發生破壞性變更。未來,我們可能提供穩定性;如果有此需求有價值的用例,請提出 issue。

貢獻

歡迎貢獻。在開啟拉取請求之前,請閱讀貢獻指南以了解設定、測試、lint 和文件產生說明。

支援

如需使用 GitHub MCP 伺服器的協助,請參閱支援指南。如果您發現錯誤或想要請求功能,請在開啟新 issue 前搜尋現有 issue。

安全性

請勿透過公開 issue 回報安全漏洞。請遵循安全性政策中的說明負責任地回報漏洞。

授權

此專案根據 MIT 開放原始碼授權條款授權。請參閱 MIT 以了解完整條款。