使用说明
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.aiDEDALUS_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).
许可证
麻省理工学院
