GitHub MCP增强型服务器
使用模型上下文协议(MCP)构建的高级GitHub集成服务器,通过标准化工具提供对GitHub API的全面访问。此服务器支持自动化、批处理操作以及与GitHub存储库的无缝集成。
特性
- 通过MCP工具完成GitHub API集成
- 高级批处理操作,可高效处理多个文件和目录
- 目录扫描和同步功能
- 支持多个身份的身份验证管理
- 实时记录和监控
- 速率限制跟踪和管理
先决条件
- Python 3.8+
- 具有适当权限的GitHub个人访问令牌
安装
- 克隆存储库:
git clone https://github.com/Praveens1234/github-mcp-enhanced.git
cd github-mcp-enhanced- 安装依赖项:
pip install mcp starlette uvicorn httpx aiofiles- 配置凭据:
创建一个 credentials.json 使用您的GitHub令牌的文件:
{
"identities": [
{
"id": "your_github_username",
"type": "pat",
"token": "your_personal_access_token_here"
}
]
}用法
启动服务器:
python server.py服务器将于启动 http://0.0.0.0:8001 SSE运输 /sse 和消息处理 /messages.
工具类别
库管理
用于管理存储库的工具,包括创建、删除、归档和传输存储库。
组织工具
用于检索组织信息的工具。
提交工具
用于列出和检索提交信息的工具。
问题管理
用于创建、列出、更新问题和添加评论的工具。
拉取请求工具
用于列出、创建和合并拉取请求的工具。
工作流程自动化
用于管理GitHub Actions工作流、运行和触发器的工具。
搜索功能
用于搜索代码、问题、存储库和用户的工具。
协作工具
用于管理协作者、webhooks和gist的工具。
发布管理
用于创建版本和管理安全设置的工具。
项目和里程碑工具
管理项目和里程碑的工具。
标签管理
用于创建、列出和删除标签的工具。
批处理操作(增强功能)
用于批量处理文件和目录的高级工具:
scan_local_directory-分析本地目录结构read_multiple_files-高效读取多个文件upload_directory_to_github-上传整个目录upload_multiple_directories_to_github-上传多个目录sync_local_directory_with_github-同步目录sync_multiple_directories_with_github-同步多个目录get_batch_operation_status-跟踪批量操作进度cancel_batch_operation-取消正在进行的操作
完整的工具参考
存储库工具
list_repositories
列出经过身份验证的用户或组织的存储库。
参数:
visibility(string):存储库可见性(all,public,private)-默认值:allsort(字符串):排序顺序-默认值:updatedorg(string):组织名称(可选)
create_repository
创建新存储库。
参数:
name(string):存储库名称(必填)description(string):存储库描述private(boolean):存储库是否为私有-默认值:falseauto_init(boolean):使用README初始化-默认值:trueorg(string):要创建的组织(可选)
get_repository
获取特定存储库的详细信息。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)
delete_repository
删除存储库。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)
transfer_repository
转移存储库。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)new_owner(string):新所有者用户名(必填)
update_repository_archive
存档或取消存档存储库。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)archived(布尔值):存档状态(必填)
create_branch
创建分支(ref)。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)ref(string):分支引用(必填)sha(string):引用的SHA1值(必填)
delete_branch
删除分支(ref)。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)ref(string):分支引用(必填)
组织工具
get_organization
获取组织信息。
参数:
org(string):组织名称(必填)
提交工具
list_commits
列出存储库上的提交。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)sha(string):从SHA或分支机构开始上市path(string):按文件路径筛选author(string):按作者筛选since(string):筛选自日期以来的提交until(string):筛选提交日期
get_commit
得到一个具体的承诺。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)ref(string):提交SHA(必填)
问题工具
list_issues
在存储库中列出问题。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)state(string):问题状态(open,closed,all)-默认值:openlabels(string):按标签筛选sort(字符串):排序顺序-默认值:createddirection(字符串):排序方向-默认值:desc
create_issue
制造一个问题。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)title(string):发行标题(必填)body(string):问题正文assignees(数组):受让人用户名labels(数组):要应用的标签
update_issue
更新问题。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)issue_number(整数):发行号(必填)title(string):新标题body(string):新正文state(string):新状态(open,closed)labels(数组):新标签
create_issue_comment
对某个问题或公关发表评论。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)issue_number(整数):发行号(必填)body(string):评论正文(必填)
拉取请求工具
list_pull_requests
列出拉取请求。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)state(string):PR状态(open,closed,all)-默认值:openhead(string):按主用户/分支机构筛选base(string):按基分支筛选
create_pull_request
创建一个pull请求。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)title(字符串):PR标题(必填)head(string):总行(必填)base(string):基础分支(必填)body(string):PR描述draft(boolean):创建草稿
merge_pull_request
合并拉取请求。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)pull_number(整数):PR编号(必填)commit_title(string):提交标题commit_message(string):提交消息merge_method(string):合并方法(merge,squash,rebase)-默认值:merge
工作流工具
list_workflows
列出GitHub操作工作流。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)
list_workflow_runs
列表工作流正在运行。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)workflow_id(string):工作流ID或文件名(必填)status(string):按状态筛选event(string):按事件类型筛选
get_workflow_run
运行特定的工作流。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)run_id(整数):运行ID(必填)
cancel_workflow_run
取消工作流运行。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)run_id(整数):运行ID(必填)
trigger_workflow_dispatch
触发工作流调度事件。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)workflow_id(string):工作流ID或文件名(必填)ref(string):引用(必填)inputs(object):输入参数
搜索工具
search_code
搜索代码。
参数:
q(string):搜索查询(必填)sort(string):排序字段order(string):排序顺序
search_issues
搜索问题并提取请求。
参数:
q(string):搜索查询(必填)sort(string):排序字段order(string):排序顺序
search_repositories
搜索存储库。
参数:
q(string):搜索查询(必填)sort(string):排序字段order(string):排序顺序
search_users
搜索用户。
参数:
q(string):搜索查询(必填)sort(string):排序字段order(string):排序顺序
用户工具
get_user
获取用户信息。
参数:
username(string):用户名(可选,默认为经过身份验证的用户)
协作工具
list_collaborators
列出存储库中的协作者。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)affiliation(字符串):关联筛选器-默认值:all
add_collaborator
添加合作者。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)username(string):要添加的用户名(必填)permission(string):权限级别(pull,push,admin,maintain,triage)-默认值:push
remove_collaborator
删除合作者。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)username(string):要删除的用户名(必填)
Webhook工具
list_webhooks
列出存储库的webhooks。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)
create_webhook
创建一个webhook。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)url(string):Webhook URL(必填)content_type(string):内容类型(json,form)-默认值:jsonevents(数组):事件类型-默认值:["push"]active(布尔值):活动状态-默认值:truesecret(string):签名验证的秘密
delete_webhook
删除webhook。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)hook_id(整数):Webhook ID(必填)
Gist工具
list_gists
列出注册表。
参数:
username(string):列出注册表的用户名(可选)
create_gist
创建要点。
参数:
description(string):Gist描述files(object):文件名到内容的映射(必填)public(boolean):公共可见性-默认值:false
delete_gist
删除要点。
参数:
gist_id(字符串):Gist ID(必填)
发布工具
create_release
创建一个释放。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)tag_name(string):标签名称(必填)name(string):发布名称body(string):发布说明draft(boolean):创建为草稿-默认值:falseprerelease(boolean):标记为预发布-默认值:false
安全工具
enable_vulnerability_alerts
为存储库启用漏洞警报。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)
disable_vulnerability_alerts
禁用存储库的漏洞警报。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)
enable_automated_security_fixes
启用自动安全修复程序。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)
disable_automated_security_fixes
禁用自动安全修复程序。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)
项目工具
list_projects
列出项目(经典)。
参数:
owner(string):组织或用户(必填)repo(string):存储库名称(可选)state(string):项目状态(open,closed,all)-默认值:open
create_project
创建一个项目(经典)。
参数:
owner(string):组织或用户(必填)repo(string):存储库名称(可选)name(string):项目名称(必填)body(string):项目描述
里程碑工具
list_milestones
列出里程碑。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)state(string):里程碑状态(open,closed,all)-默认值:opensort(字符串):排序字段-默认值:due_datedirection(字符串):排序方向-默认值:asc
create_milestone
创建一个里程碑。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)title(字符串):里程碑标题(必填)state(字符串):里程碑状态-默认值:opendescription(string):里程碑描述due_on(字符串):到期日期(ISO 8601时间戳)
标签工具
list_labels
列出标签。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)
create_label
创建标签。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)name(string):标签名称(必填)color(string):颜色代码(6个字符,不带#)(必填)description(string):标签描述
delete_label
删除标签。
参数:
owner(string):存储库所有者(必填)repo(string):存储库名称(必填)name(string):标签名称(必填)
批处理操作工具
scan_local_directory
扫描并分析本地目录结构以进行批处理操作。
参数:
path(string):要扫描的本地目录路径(必需)recursive(boolean):扫描子目录-默认值:trueinclude_hidden(boolean):包含隐藏文件-默认值:falseexclude_patterns(数组):要排除的模式-默认值:[]max_files(整数):要扫描的最大文件数-默认值:1000file_info_level(字符串):详细程度(basic,detailed,full)-默认值:detailed
read_multiple_files
批量读取多个文件的内容,并返回Base64编码的内容。
参数:
paths(array):要读取的文件路径数组(必需)max_total_size(整数):最大总大小(50MB)-默认值:50000000continue_on_error(boolean):出错时继续-默认值:true
upload_directory_to_github
在单个原子操作中将整个本地目录上传到GitHub存储库路径。
参数:
local_path(string):要上传的本地目录路径(必填)owner(string):GitHub仓库所有者(必填)repo(string):GitHub存储库名称(必填)commit_message(string):提交上传消息(必填)repo_path(string):存储库中的目标路径-默认值:""branch(string):目标分支-默认值:"main"author_name(string):提交作者姓名author_email(string):提交作者电子邮件exclude_patterns(数组):要排除的文件模式-默认值:[]include_hidden(boolean):包含隐藏文件-默认值:falseforce_overwrite(boolean):强制覆盖现有文件-默认值:falsedry_run(boolean):执行模拟运行-默认值:false
upload_multiple_directories_to_github
将多个本地目录上传到GitHub存储库中的不同路径。
参数:
directory_mappings(array):本地到存储库路径映射数组(必需)owner(string):GitHub仓库所有者(必填)repo(string):GitHub存储库名称(必填)commit_message(string):提交所有上传的消息(必填)branch(string):目标分支-默认值:"main"author_name(string):提交作者姓名author_email(string):提交作者电子邮件exclude_patterns(数组):要排除的文件模式-默认值:[]include_hidden(boolean):包含隐藏文件-默认值:falsedry_run(boolean):执行模拟运行-默认值:false
sync_local_directory_with_github
将本地目录与GitHub存储库路径同步(添加、更新、删除文件)。
参数:
local_path(string):要同步的本地目录路径(必需)owner(string):GitHub仓库所有者(必填)repo(string):GitHub存储库名称(必填)repo_path(string):存储库中的目标路径-默认值:""branch(string):目标分支-默认值:"main"commit_message_add(string):提交添加消息-默认值:"Add new files"commit_message_update(string):提交更新消息-默认值:"Update existing files"commit_message_delete(string):提交删除消息-默认值:"Remove deleted files"author_name(string):提交作者姓名author_email(string):提交作者电子邮件exclude_patterns(数组):要排除的文件模式-默认值:[]include_hidden(boolean):包含隐藏文件-默认值:falsedelete_remote_files(boolean):删除本地不存在的远程文件-默认值:falsedry_run(boolean):执行模拟运行-默认值:false
sync_multiple_directories_with_github
在GitHub存储库中同步具有不同路径的多个本地目录。
参数:
sync_mappings(array):同步映射数组(必需)owner(string):GitHub仓库所有者(必填)repo(string):GitHub存储库名称(必填)branch(string):目标分支-默认值:"main"commit_message_template(string):提交消息模板-默认值:"Sync {local_path} to {repo_path}"author_name(string):提交作者姓名author_email(string):提交作者电子邮件exclude_patterns(数组):要排除的文件模式-默认值:[]include_hidden(boolean):包含隐藏文件-默认值:falsedry_run(boolean):执行模拟运行-默认值:false
get_batch_operation_status
获取正在进行的批处理操作的状态和进度。
参数:
operation_id(string):批处理操作标识符(可选,如果未提供,则返回全部)
cancel_batch_operation
取消正在进行的批处理操作。
参数:
operation_id(string):批处理操作标识符(必填)
日志记录
服务器在以下位置维护详细的日志:
github_server.log-通用应用程序日志github_server_debug.log-调试级别日志
健康检查
健康检查端点位于 /health 其提供关于以下内容的信息:
- 服务器状态
- 身份验证状态
- 剩余费率限制
贡献
欢迎投稿!请随时提交拉取请求。
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
