GitHub MCP服务

一个基于Dedalus MCP框架构建的GitHub MCP服务器,提供对GitHub仓库、问题、拉取请求、Actions CI等的LLM友好工具。

  • by dedalus-labs
  • Python
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 dedalus-labs/github-mcp

使用说明

github mcp

使用Dedalus MCP框架构建的GitHub MCP服务器。

连接到GitHub REST API,并为 存储库、问题、拉取请求、操作CI、搜索等。 在Dedalus上部署时,凭据通过DAuth注入;PAT是 只需要进行本地测试。

特性

  • 仓库:列表、检查、分支枚举、创建/删除分支、比较引用
  • 文件:读取、创建/更新、删除
  • 问题和评论:CRUD、过滤、标签、受让人
  • 拉取请求:列出、检查、创建、更新、合并、更改的文件
  • 公关评论:列出评论、内联代码评论
  • 行动CI:工作流、运行、调度、重新运行、步骤级故障诊断
  • 承诺与检查:历史、遗留状态API、现代检查运行API
  • 搜索:GitHub上的代码搜索、问题/PR搜索

设置

cp .env.example .env
# Edit .env with your keys

对于本地测试:

  • GITHUB_TOKEN --GitHub PAT(经典或细粒度)。需求 repo 范围最小。

当部署在Dedalus上时, GITHUB_TOKEN 是 不 需要。DAuth处理凭据 运行时注入——服务器永远看不到原始令牌。

对于部署/客户端使用:

  • DEDALUS_API_KEY -您的Dedalus API密钥(dsk_*)
  • DEDALUS_API_URL --默认为 https://api.dedaluslabs.ai
  • DEDALUS_AS_URL --默认为 https://as.dedaluslabs.ai

可选(本地和部署):

  • GITHUB_BASE_URL --默认为 https://api.github.com (为GitHub Enterprise设置)

用法

运行服务器

uv run src/main.py

开始 http://127.0.0.1:8080/mcp (流式HTTP,无状态)。

本地测试

在不部署的情况下验证您的连接配置和令牌是否正常工作:

PYTHONPATH=src uv run python -c "
import asyncio
from dotenv import load_dotenv; load_dotenv()
from dedalus_mcp.testing import ConnectionTester, TestRequest
from gh.config import github

async def test():
    t = ConnectionTester.from_env(github)
    r = await t.request(TestRequest(path='/user'))
    print(f'{r.status} — {r.body[\"login\"]}' if r.success else f'FAIL: {r.status}')

asyncio.run(test())
"

完整的客户端演示(DedalusRunner+OAuth浏览器流)已发布 src/_client.py.

棉绒和字体检查

uv run --group lint ruff check src/
uv run --group lint ruff format --check src/
uv run --group lint ty check

可用工具

工具 描述 R/W
gh_whoami 获取经过身份验证的用户的个人资料 R
gh_list_repos 列出已验证用户的存储库 R
gh_get_repo 获取特定存储库的详细信息 R
gh_list_branches 列出存储库中的分支 R
gh_create_ref 远程创建git ref(分支/标签) W
gh_delete_branch 远程删除分支 W
gh_compare 比较两个引用——提交和文件更改 R
gh_get_file 从存储库获取文件内容 R
gh_put_file 在存储库中创建或更新文件 W
gh_delete_file 从存储库中删除文件 W
gh_list_issues 列出存储库中的问题(不包括拉取请求) R
gh_get_issue 按数字获取特定问题 R
gh_create_issue 创建新问题 W
gh_update_issue 更新现有问题(标题、正文、状态、标签、受让人) W
gh_list_comments 列出对问题或拉取请求的评论 R
gh_create_comment 对问题或拉取请求创建评论 W
gh_list_prs 在存储库中列出拉取请求 R
gh_get_pr 按数字获取特定的拉取请求 R
gh_create_pr 创建拉取请求 W
gh_update_pr 更新PR(标题、正文、州、基本分支) W
gh_merge_pr 合并拉取请求 W
gh_list_pr_files 列出在拉取请求中更改的文件 R
gh_list_pr_reviews 列出拉取请求的评论 R
gh_list_pr_review_comments 列出PR上的内联代码审查注释 R
gh_list_workflows 列出GitHub操作工作流 R
gh_list_workflow_runs 列表工作流运行 R
gh_dispatch_workflow 通过调度事件触发工作流 W
gh_rerun_workflow 重新运行工作流 W
gh_ci_diagnosis 诊断CI故障--运行+作业+失败的步骤 R
gh_list_commits 列出存储库中的提交 R
gh_get_commit_status 获取引用的组合提交状态(遗留状态API) R
gh_list_commit_statuses 列出单个状态检查(传统状态API) R
gh_list_check_runs 列出引用的检查运行(现代检查API/操作) R
gh_search_code 跨GitHub存储库搜索代码 R
gh_search_issues 在GitHub上搜索问题和拉取请求 R

备注

  • 身份验证用途 token {api_key} 标题格式(GitHub PAT)。对于细粒度令牌,授予 您需要的特定存储库权限。经典代币至少需要 repo 范围。
  • 所有列表端点都接受 per_page (默认30,最大100)和分页参数。
  • gh_list_issues 默认情况下排除pull请求(GitHub的REST API将PR作为问题返回)。
  • gh_list_check_runs 是现代的Checks API-将其用于GitHub操作结果。 gh_get_commit_status / gh_list_commit_statuses 仅涵盖传统状态API。
  • gh_ci_diagnosis 是一个复合工具:解析运行(通过ID或分支上的最新值), 获取所有作业,并返回步骤级详细信息,以便代理可以查看 哪一步 失败。
  • gh_compare 返回两个引用之间的提交和更改的文件——这对查看很有用 分行在没有本地结账的情况下推出的产品。
  • gh_create_ref 需要完整的引用路径(例如。 refs/heads/my-branch). gh_delete_branch 只取分支名称。
  • gh_list_pr_review_comments 返回内联(行级)代码审查注释,这些注释是 与以下人员返回的一般问题评论不同 gh_list_comments.
  • gh_search_code 需要至少一个限定符(例如。, repo:, org:, user:).
  • 写入工具需要在目标存储库上具有写入权限的令牌。
  • GITHUB_BASE_URL 支持GitHub企业服务器(https://github.example.com/api/v3).

许可证

麻省理工学院