GitHub仓库管理器MCP服务器
基于令牌的GitHub自动化管理。无需Docker即可实现最佳性能,灵活配置可实现细粒度控制,89种工具可直接集成API。
一个全面的模型上下文协议(MCP)服务器,使您的MCP客户端(Claude Desktop、Roo Code、Cline、Cursor、Windsurf等)能够使用您的GitHub个人访问令牌与GitHub存储库进行交互。
此工具仅使用GitHub令牌进行设置,简化了GitHub存储库的管理。通过跳过Docker,它避免了不必要的复杂性,通过直接的API集成提供快速有效的结果。
该服务器使用Node.js构建,为存储库管理、问题跟踪、协作管理等提供了完整的工具包,同时利用GitHub API实现最佳性能。
跳到快速设置和MCP客户端配置
🚀 与其他GitHub自动化MCP服务器相比的主要优势
🎯 简洁:基于令牌的访问消除了复杂性。 🌿 效率:没有Docker可以确保轻量级、最佳性能。 💪 力量:89个直接集成API的工具提供了无与伦比的灵活性。 🔒 灵活性:使用可配置工具进行细粒度控制。
🎯 简单的设置和操作
✅ 无需Docker -可在任何地方运行的简单Node.js服务器\ ✅ 一个令牌设置 -只需要GitHub个人访问令牌即可工作\ ✅ API直接集成 -不依赖于 gh CLI,更快、更可靠\ ✅ 零配置 -只需令牌即可开箱即用
🔒 高级安全与控制
✅ 允许的存储库 -将操作限制到特定的仓库或所有者\ ✅ 工具管理 -启用/禁用用于细粒度控制的特定工具\ ✅ 默认存储库 -为简化的工作流程设置默认仓库\ ✅ 灵活的权限 -准确配置服务器可以访问的内容
💪 强大的功能
✅ 综合工具包 -89个强大的工具,用于完成GitHub工作流程\ ✅ 分支与承诺管理 -创建分支、探索历史、比较变化\ ✅ 图像上传支持 -直接在问题中上传和嵌入图像\ ✅ 高级过滤 -使用多个条件进行排序、筛选和搜索\ ✅ 费率限制处理 -内置GitHub API速率限制管理
🎯 完整功能集
📁 库管理
- 智能存储库列表 通过可见性(公共/私有/所有)和排序选项进行过滤
- 详细的存储库信息 包括统计数据、URL和元数据
- 文件和目录浏览 支持特定的分支/提交
- 存储库搜索 在整个GitHub上使用高级排序
- 默认存储库设置 简化工作流程
🎫 高级问题管理
- 完整的问题生命周期 -创建、编辑、列出和管理状态
- 丰富的内容支持 -直接在问题中上传和嵌入图像
- 标签管理 -添加、删除和组织自定义标签
- 受让人管理 -分配/取消分配团队成员
- 问题锁定/解锁 具有可定制的原因
- 评论系统 -创建、编辑、删除和列出问题注释
- 国家管理 -打开、关闭和跟踪问题进度
🔄 拉取请求管理
- 拉取请求列表 具有状态过滤和排序功能
- 全面的公关信息 包括分支详细信息和状态
🌿 分支与委托管理
- 分支机构运营 -列出所有具有保护状态和最新提交的分支
- 分支机构创建 -从现有分支或提交创建新分支
- 提交历史记录 -使用高级筛选(日期、作者、分支)探索提交历史
- 提交详细信息 -获取全面的提交信息,包括文件更改
- 提交比较 -比较任意两个提交、分支或标签以查看差异
👥 协作和用户管理
- 用户资料信息 对于任何GitHub用户或您自己的帐户
- 存储库协作者管理 具有权限过滤功能
- 团队协作工具 用于管理访问和权限
🎨 高性能
- 图像上传和嵌入 -将本地图片直接上传到GitHub
- 批量操作 -管理多个指定人员、标签和注释
- 灵活的身份验证 -基于令牌的安全GitHub API访问
- 智能错误处理 -全面的错误报告和恢复
先决条件
最低要求-就是这么简单!
- Node.js (版本18或更高)-就是这样!
- GitHub个人访问令牌(PAT) -唯一需要的配置
- 转到GitHub→ 设置→ 开发人员设置→ 个人访问令牌→ 令牌(经典)或细粒度令牌。 - 生成至少具有以下作用域的新令牌: - repo (完全控制私有存储库)-建议使用完整功能。 - user:read 或 user:email (读取用户配置文件数据)。 - read:org (如果您需要访问组织信息)。 - 重要:安全地存储此令牌。您需要直接在MCP客户端的配置中为此服务器提供它(请参阅下面的步骤3)。
快速设置
使用npx(最简单-无需安装!)
确保你已经安装了Node.js,然后使用 npx 直接运行服务器 检查您是否已将GitHub令牌导出为名为的环境变量 GH_TOKEN 或者将其包含在MCP客户端配置中。
您可以直接运行此服务器,无需克隆或安装:
# Run directly with npx
npx -y github-repos-manager-mcp对于macOS/Linux:
{
"mcpServers": {
"github-repos-manager": {
"command": "npx",
"args": [
"-y",
"github-repos-manager-mcp"
],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE"
}
}
}
}对于Windows,在某些情况下,您可能需要使用npx.cmd而不是npx:
{
"mcpServers": {
"github-repos-manager": {
"command": "npx.cmd",
"args": [
"-y",
"github-repos-manager-mcp"
],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE"
}
}
}
}此命令将自动下载并运行最新版本的服务器,而无需在本地安装任何东西。
克隆、安装并在本地运行
如果您更喜欢在本地运行服务器,请克隆存储库并安装依赖项:
git clone https://github.com/kurdin/github-repos-manager.git
cd github-repos-manager
npm install然后,配置您的MCP客户端,使用完整路径指向本地服务器 server.cjs:
{
"mcpServers": {
"github-repos-manager": {
"command": "node",
"args": ["/full/path/to/your/project/github-repos-manager-mcp/server.cjs"],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE"
}
}
}
}重要:替换 "ghp_YOUR_ACTUAL_TOKEN_HERE" 使用您实际的GitHub个人访问令牌。
3.测试服务器
一旦MCP客户端配置了正确的路径 server.cjs 和你的 GH_TOKEN,当客户端尝试使用其工具之一时,服务器应自动启动。
您还可以直接测试服务器脚本以进行基本身份验证,但是 这需要为此特定测试在shell中临时设置GH_TOKEN环境变量:
# For direct script testing ONLY (normal operation uses MCP client config)
export GH_TOKEN="ghp_YOUR_TEMPORARY_TEST_TOKEN"
node server.cjs
unset GH_TOKEN # Important: unset after testing如果成功,您应该看到“GitHub API身份验证成功”和“GitHub Repos Manager MCP Server running on stdio”。
备注:只有通过环境变量、命令行参数或使用 set_default_repo 工具。它从不自动设置默认存储库。
Claude Desktop的文件位置示例 claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json(路径可能有所不同)
⚙️ 配置选项
默认存储库设置
您可以设置默认存储库以简化工作流程并避免指定 owner 和 repo 在每一个命令。有三种配置方式:
1.环境变量(建议MCP客户端使用)
将环境变量添加到MCP客户端配置中:
使用npx:
{
"mcpServers": {
"github-repos-manager": {
"command": "npx",
"args": ["-y", "github-repos-manager-mcp"],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
"GH_DEFAULT_OWNER": "octocat",
"GH_DEFAULT_REPO": "Hello-World"
}
}
}
}使用本地安装:
{
"mcpServers": {
"github-repos-manager": {
"command": "node",
"args": ["/full/path/to/your/project/github-repos-manager-mcp/server.cjs"],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
"GH_DEFAULT_OWNER": "octocat",
"GH_DEFAULT_REPO": "Hello-World"
}
}
}
}2.命令行参数
直接运行服务器时,可以传递默认存储库设置:
node server.cjs --default-owner octocat --default-repo Hello-World3.运行时工具调用
使用 set_default_repo 在对话中设置或更改默认存储库的工具:
- “将默认存储库设置为
microsoft/vscode" - “将默认值更改为我自己的repo
username/my-project"
配置优先级(从高到低):
- 命令行参数(
--default-owner,--default-repo) - 环境变量(
GH_DEFAULT_OWNER,GH_DEFAULT_REPO) - 运行时工具调用(
set_default_repo)
默认存储库的好处:
- 无需指定
owner和repo在每个命令中 - 在主要使用一个存储库时简化工作流程
- 可以在会话期间随时使用更改
set_default_repo工具 - 可选-所有工具都可以在没有默认存储库集的情况下工作
一旦设置了默认存储库,您就可以省略 owner 和 repo 命令中的参数:
- 而不是:“列出microsoft/vcode的问题”
- 只需说:“列出问题”(在将microsoft/vcode设置为默认值后)
存储库访问控制
您可以使用限制服务器可以访问的存储库 GH_ALLOWED_REPOS 环境变量或 --allowed-repos 命令行参数。这是一种安全功能,可确保服务器只能在批准的存储库上运行。
允许的存储库配置
1.环境变量(适用于MCP客户端)
{
"mcpServers": {
"github-repos-manager": {
"command": "node",
"args": ["/path/to/server.cjs"],
"env": {
"GH_TOKEN": "ghp_YOUR_TOKEN",
"GH_ALLOWED_REPOS": "owner1/repo1,owner2/repo2,owner3"
}
}
}
}2.命令行参数
node server.cjs --allowed-repos "microsoft/vscode,facebook/react,google"它是如何工作的:
- 完整的回购路径 (
owner/repo):只允许使用该特定存储库 - 仅限所有者 (
owner):允许来自该所有者的所有存储库 - 混合:您可以组合这两种格式
示例:
"microsoft/vscode"-仅来自Microsoft的vscode存储库"kurdin"-kurdin拥有的所有存储库"kurdin,microsoft/vscode,facebook/react"-库尔丁的所有回购以及特定回购
工具访问控制
禁用特定工具
通过设置禁用不希望可用的工具 GH_DISABLED_TOOLS 环境变量或使用 --disabled-tools 命令行参数。
仅允许使用特定工具
为了获得最大的安全性,您可以通过设置 GH_ALLOWED_TOOLS 环境变量或使用 --allowed-tools 命令行参数。
重要提示: 如果两者都有 GH_ALLOWED_TOOLS 和 GH_DISABLED_TOOLS 被设置, GH_ALLOWED_TOOLS 优先。
完整配置示例
使用npx(macOS/Linux):
{
"mcpServers": {
"github-repos-manager": {
"command": "npx",
"args": ["-y", "github-repos-manager-mcp"],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
"GH_DEFAULT_OWNER": "mycompany",
"GH_DEFAULT_REPO": "main-project",
"GH_ALLOWED_REPOS": "mycompany,trusted-org/specific-repo",
"GH_ALLOWED_TOOLS": "list_issues,create_issue,list_prs,get_repo_info"
}
}
}
}使用npx(Windows):
{
"mcpServers": {
"github-repos-manager": {
"command": "npx.cmd",
"args": ["-y", "github-repos-manager-mcp"],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
"GH_DEFAULT_OWNER": "mycompany",
"GH_DEFAULT_REPO": "main-project",
"GH_ALLOWED_REPOS": "mycompany,trusted-org/specific-repo",
"GH_ALLOWED_TOOLS": "list_issues,create_issue,list_prs,get_repo_info"
}
}
}
}使用本地安装:
{
"mcpServers": {
"github-repos-manager": {
"command": "node",
"args": ["/full/path/to/your/project/github-repos-manager-mcp/server.cjs"],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
"GH_DEFAULT_OWNER": "mycompany",
"GH_DEFAULT_REPO": "main-project",
"GH_ALLOWED_REPOS": "mycompany,trusted-org/specific-repo",
"GH_ALLOWED_TOOLS": "list_issues,create_issue,list_prs,get_repo_info"
}
}
}
}命令行等效项:
node server.cjs \
--default-owner mycompany \
--default-repo main-project \
--allowed-repos "mycompany,trusted-org/specific-repo" \
--allowed-tools "list_issues,create_issue,list_prs,get_repo_info"🛠️ 完整的工具参考
此服务器提供 89种综合工具 有关完整的GitHub工作流管理:
增强的拉取请求管理
create_pull_request:使用标题、正文和分支规范创建新的pull请求。
- *参数*: owner (字符串,可选), repo (字符串,可选), title (字符串,必填), body (字符串,可选), head (字符串,必填-带更改的分支), base (字符串,必填-目标分支), draft (布尔值,可选), maintainer_can_modify (布尔值,可选)
edit_pull_request:更新现有拉取请求的标题、正文、状态或基分支。
- *参数*: owner (字符串,可选), repo (字符串,可选), pull_number (整数,必填), title (字符串,可选), body (字符串,可选), state (字符串,可选-“打开”或“关闭”), base (字符串,可选)
get_pr_details:获取有关拉取请求的全面信息,包括状态和合并详细信息。
- *参数*: owner (字符串,可选), repo (字符串,可选), pull_number (整数,必填)
list_pr_reviews:列出拉取请求上的所有评论及其状态和评论。
- *参数*: owner (字符串,可选), repo (字符串,可选), pull_number (整数,必填), per_page (整数,可选,默认30)
create_pr_review:提交对拉取请求的审核,并附上评论和批准状态。
- *参数*: owner (字符串,可选), repo (字符串,可选), pull_number (整数,必填), body (字符串,可选), event (字符串,可选-“APPROVE”、“REQUEST_CHANGES”、“COMMENT”), comments (数组,可选)
list_pr_files:列出在拉取请求中更改的所有文件,并添加/删除统计信息。
- *参数*: owner (字符串,可选), repo (字符串,可选), pull_number (整数,必填), per_page (整数,可选,默认30)
文件和内容管理
create_file:在存储库中创建一个包含内容和提交消息的新文件。
- *参数*: owner (字符串,可选), repo (字符串,可选), path (字符串,必填), content (字符串,必填), message (字符串,必填), branch (字符串,可选), committer (对象,可选)
update_file:使用新提交更新现有文件的内容。
- *参数*: owner (字符串,可选), repo (字符串,可选), path (字符串,必填), content (字符串,必填), message (字符串,必填), sha (字符串,必填-当前文件SHA), branch (字符串,可选)
upload_file:将本地文件上传到存储库(支持二进制文件)。
- *参数*: owner (字符串,可选), repo (字符串,可选), local_path (字符串,必填), repo_path (字符串,必填), message (字符串,必填), branch (字符串,可选)
delete_file:从存储库中删除带有提交消息的文件。
- *参数*: owner (字符串,可选), repo (字符串,可选), path (字符串,必填), message (字符串,必填), sha (字符串,必填-当前文件SHA), branch (字符串,可选)
安全和访问管理
list_deploy_keys:列出存储库的所有部署密钥及其权限。
- *参数*: owner (字符串,可选), repo (字符串,可选), per_page (整数,可选,默认30)
create_deploy_key:向存储库添加新的部署密钥以实现安全访问。
- *参数*: owner (字符串,可选), repo (字符串,可选), title (字符串,必填), key (字符串,必填-公共SSH密钥), read_only (布尔值,可选,默认为true)
delete_deploy_key:从存储库中删除部署密钥。
- *参数*: owner (字符串,可选), repo (字符串,可选), key_id (整数,必填)
list_webhooks:列出为存储库配置的所有Webhook。
- *参数*: owner (字符串,可选), repo (字符串,可选), per_page (整数,可选,默认30)
create_webhook:为存储库事件创建新的webhook。
- *参数*: owner (字符串,可选), repo (字符串,可选), config (对象,必填-url和content_type), events (数组,可选,默认\[“推送”\]), active (布尔值,可选)
edit_webhook:更新webhook配置、事件或活动状态。
- *参数*: owner (字符串,可选), repo (字符串,可选), hook_id (整数,必填), config (对象,可选), events (数组,可选), active (布尔值,可选)
delete_webhook:从存储库中删除webhook。
- *参数*: owner (字符串,可选), repo (字符串,可选), hook_id (整数,必填)
list_secrets:列出存储库机密(仅名称,值已加密)。
- *参数*: owner (字符串,可选), repo (字符串,可选), per_page (整数,可选,默认30)
update_secret:为操作创建或更新存储库密钥。
- *参数*: owner (字符串,可选), repo (字符串,可选), secret_name (字符串,必填), encrypted_value (字符串,必填), key_id (字符串,必填)
GitHub操作和工作流
*注意:这些工具是未来GitHub Actions集成的占位符。*
list_workflows:列出存储库中的所有GitHub Actions工作流。list_workflow_runs:使用筛选选项运行列表工作流。get_workflow_run_details:获取有关工作流运行的详细信息。trigger_workflow:手动触发工作流调度事件。download_workflow_artifacts:从工作流运行中下载工件。cancel_workflow_run:取消正在运行的工作流。
存储库分析和见解
get_repo_stats:获取全面的存储库统计数据,包括贡献者活动。
- *参数*: owner (字符串,可选), repo (字符串,可选)
list_repo_topics:列出与存储库关联的所有主题(标签)。
- *参数*: owner (字符串,可选), repo (字符串,可选)
update_repo_topics:更新主题以更好地发现存储库。
- *参数*: owner (字符串,可选), repo (字符串,可选), names (字符串数组,必填)
get_repo_languages:使用字节计数获取存储库中使用的编程语言。
- *参数*: owner (字符串,可选), repo (字符串,可选)
list_stargazers:列出已在存储库中添加星号的用户。
- *参数*: owner (字符串,可选), repo (字符串,可选), per_page (整数,可选,默认30)
list_watchers:列出正在查看存储库以获取通知的用户。
- *参数*: owner (字符串,可选), repo (字符串,可选), per_page (整数,可选,默认30)
list_forks:列出带有排序选项的存储库的所有分支。
- *参数*: owner (字符串,可选), repo (字符串,可选), sort (字符串,可选-“最新”、“最旧”、“观星者”), per_page (整数,可选)
get_repo_traffic:获取存储库流量数据,包括视图和克隆(需要管理员权限)。
- *参数*: owner (字符串,可选), repo (字符串,可选)
高级搜索和发现
search_issues:在GitHub上搜索问题并拉取请求。
- *参数*: query (字符串,必填), sort (字符串,可选-“评论”、“反应”、“交互”、“创建”、“更新”), order (字符串,可选-“asc”、“desc”), per_page (整数,可选)
search_commits:跨存储库搜索提交。
- *参数*: query (字符串,必填), sort (字符串,可选-“作者日期”、“提交者日期”), order (字符串,可选), per_page (整数,可选)
search_code:在GitHub存储库中搜索代码。
- *参数*: query (字符串,必填), sort (字符串,可选-“索引”), order (字符串,可选), per_page (整数,可选)
search_users:搜索用户和组织。
- *参数*: query (字符串,必填), sort (字符串,可选-“关注者”、“存储库”、“已加入”), order (字符串,可选), per_page (整数,可选)
search_topics:搜索存储库主题。
- *参数*: query (字符串,必填), per_page (整数,可选,默认30)
组织管理
list_org_repos:列出组织中的所有存储库。
- *参数*: org (字符串,必填), type (字符串,可选-“全部”、“公共”、“私有”、“分叉”、“源”、“成员”), sort (字符串,可选), per_page (整数,可选)
list_org_members:列出组织的成员。
- *参数*: org (字符串,必填), filter (字符串,可选-“2fa_disabled”,“all”), role (字符串,可选-“全部”、“管理员”、“成员”), per_page (整数,可选)
get_org_info:获取有关组织的详细信息。
- *参数*: org (字符串,必填)
list_org_teams:列出组织中的所有团队。
- *参数*: org (字符串,必填), per_page (整数,可选,默认30)
get_team_members:列出特定团队的成员。
- *参数*: org (字符串,必填), team_slug (字符串,必填), role (字符串,可选-“成员”、“维护者”、“所有”), per_page (整数,可选)
manage_team_repos:添加或删除团队的存储库访问权限。
- *参数*: org (字符串,必填), team_slug (字符串,必填), owner (字符串,必填), repo (字符串,必填), permission (字符串,可选-“pull”、“push”、“admin”), action (字符串,必填-“添加”或“删除”)
项目和高级功能
*注意:其中一些工具是未来增强的占位符。*
list_repo_projects:列出存储库项目(经典项目)。code_quality_checks:用于未来代码质量分析的占位符。custom_dashboards:用于创建自定义仪表板的占位符。automated_reporting:占位符用于自动生成报告。notification_management:用于通知设置的占位符。release_management:发布管理功能的占位符。dependency_analysis:用于依赖性扫描的占位符。
存储库管理工具
set_default_repo:为后续命令设置默认所有者和存储库,以简化您的工作流程。
- *参数*: owner (字符串,必填), repo (字符串,必填)
list_repos:列出具有高级过滤功能的经过身份验证的用户的GitHub存储库。
- *参数*: per_page (数字,可选,默认10,最大100), visibility (字符串,可选,枚举:“all”,“public”,“private”,默认为“all”), sort (字符串,可选,枚举:“创建”、“更新”、“推送”、“full_name”,默认为“更新”)
get_repo_info:获取有关特定存储库的全面信息,包括统计数据和元数据。
- *参数*: owner (字符串,如果没有默认值,则为必填项), repo (字符串,如果没有默认值,则为必填项)
search_repos:使用高级排序选项在GitHub上搜索存储库。
- *参数*: query (字符串,必填), per_page (数字,可选,默认10,最大100), sort (字符串,可选,枚举:“stars”,“forks”,“help wanted issues”,“updated”,默认“stars”)
get_repo_contents:浏览任何支持分支/提交的存储库中的文件和目录。
- *参数*: owner (字符串,如果没有默认值,则为必填项), repo (字符串,如果没有默认值,则为必填项), path (字符串,可选,默认“”), ref (字符串,可选,例如分支名称或提交SHA)
高级问题管理工具
list_issues:列出按状态过滤和全面分页的问题。
- *参数*: owner (字符串,如果没有默认值,则为必填项), repo (字符串,如果没有默认值,则为必填项), state (字符串,可选,枚举:“open”、“closed”、“all”,默认为“open”), per_page (数字,可选,默认10,最大100)
create_issue:通过图像上传、标签和指定人员创建功能丰富的问题。
- *参数*: owner (字符串,如果没有默认值,则为必填项), repo (字符串,如果没有默认值,则为必填项), title (字符串,必填), body (字符串,可选), image_path (字符串,可选,图像的完整本地路径), labels (字符串数组,可选), assignees (字符串数组,可选)
edit_issue:修改现有问题,包括标题、正文、状态、标签、受让人和图像上传。
- *参数*: owner (字符串,可选), repo (字符串,可选), issue_number (整数,必填), title (字符串,可选), body (字符串,可选), state (字符串,可选,枚举:“open”,“closed”), image_path (字符串,可选,图像的完整本地路径), labels (字符串数组,可选), assignees (字符串数组,可选)
get_issue_details:获取有关任何具体问题的全面信息。
- *参数*: owner (字符串,可选), repo (字符串,可选), issue_number (整数,必填)
lock_issue:锁定问题,以防止有可定制原因的进一步评论。
- *参数*: owner (字符串,可选), repo (字符串,可选), issue_number (整数,必填), lock_reason (字符串,可选,枚举:“离题”,“太热”,“已解决”,“垃圾邮件”)
unlock_issue:解锁以前锁定的问题以恢复讨论。
- *参数*: owner (字符串,可选), repo (字符串,可选), issue_number (整数,必填)
add_assignees_to_issue:将一个或多个团队成员添加到问题中。
- *参数*: owner (字符串,可选), repo (字符串,可选), issue_number (整数,必填), assignees (字符串数组,必填)
remove_assignees_from_issue:将指派人员从问题中删除,以便更好地管理任务。
- *参数*: owner (字符串,可选), repo (字符串,可选), issue_number (整数,必填), assignees (字符串数组,必填)
问题评论管理工具
list_issue_comments:列出带有时间戳过滤的问题的所有评论。
- *参数*: owner (字符串,可选), repo (字符串,可选), issue_number (整数,必填), per_page (整数,可选,默认30,最大100), since (字符串,可选,ISO 8601格式日期时间)
create_issue_comment:为正在进行的问题讨论添加新的评论。
- *参数*: owner (字符串,可选), repo (字符串,可选), issue_number (整数,必填), body (字符串,必填)
edit_issue_comment:修改现有评论以进行更正或更新。
- *参数*: owner (字符串,可选), repo (字符串,可选), comment_id (整数,必填), body (字符串,必填)
delete_issue_comment:在内容管理需要时删除注释。
- *参数*: owner (字符串,可选), repo (字符串,可选), comment_id (整数,必填)
拉取请求管理工具
list_prs:列出具有状态过滤和分页的拉取请求。
- *参数*: owner (字符串,如果没有默认值,则为必填项), repo (字符串,如果没有默认值,则为必填项), state (字符串,可选,枚举:“open”、“closed”、“all”,默认为“open”), per_page (数字,可选,默认10,最大100)
分支和提交管理工具
list_branches:列出存储库中具有保护状态和提交信息的所有分支。
- *参数*: owner (字符串,可选), repo (字符串,可选), protected_only (布尔值,可选,默认为false), per_page (数字,可选,默认30)
create_branch:从现有分支创建新分支或提交。
- *参数*: owner (字符串,可选), repo (字符串,可选), branch_name (字符串,必填), from_branch (字符串,可选,默认为存储库默认分支)
list_commits:在存储库中列出提交,其中包含详细信息和过滤选项。
- *参数*: owner (字符串,可选), repo (字符串,可选), sha (字符串,可选,分支/标签/提交列表), per_page (数字,可选,默认20), since (字符串,可选,ISO 8601日期时间), until (字符串,可选,ISO 8601日期时间), author (字符串,可选,GitHub用户名或电子邮件)
get_commit_details:获取有关特定提交的详细信息,包括更改的文件。
- *参数*: owner (字符串,可选), repo (字符串,可选), commit_sha (字符串,必填)
compare_commits:比较两个提交或分支以查看差异。
- *参数*: owner (字符串,可选), repo (字符串,可选), base (字符串、必需、基分支或提交SHA), head (string,必填,head分支或提交SHA)
用户和协作工具
get_user_info:获取任何GitHub用户或您自己的个人资料的详细信息。
- *参数*: username (字符串,可选-默认为经过身份验证的用户)
list_repo_collaborators:使用基于权限的筛选列出存储库协作者。
- *参数*: owner (字符串,可选), repo (字符串,可选), affiliation (字符串,可选,枚举:“外部”,“直接”,“全部”,默认“全部”), permission (字符串,可选,枚举:“pull”、“triangle”、“push”、“maintain”和“admin”), per_page (整数,可选,默认30,最大100)
标签和里程碑管理工具
list_repo_labels:列出存储库中的所有标签及其颜色和描述。
- *参数*: owner (字符串,可选), repo (字符串,可选), per_page (整数,可选,默认30,最大100)
create_label:创建带有颜色和描述的自定义标签,以更好地组织问题。
- *参数*: owner (字符串,可选), repo (字符串,可选), name (字符串,必填), color (字符串,可选,不带#的十六进制颜色,默认“f29513”), description (字符串,可选)
edit_label:修改现有标签属性,包括名称、颜色和描述。
- *参数*: owner (字符串,可选), repo (字符串,可选), current_name (字符串,必填), name (字符串,可选), color (字符串,可选,十六进制颜色,不带#), description (字符串,可选)
delete_label:不再需要时从存储库中删除标签。
- *参数*: owner (字符串,可选), repo (字符串,可选), name (字符串,必填)
list_milestones:列出存储库里程碑,并按状态和排序选项进行筛选。
- *参数*: owner (字符串,可选), repo (字符串,可选), state (字符串,可选,枚举:“open”、“closed”、“all”,默认为“open”), sort (字符串,可选,枚举:“due_on”,“completely”,默认为“due_on”), direction (字符串,可选,枚举:“asc”,“desc”,默认“asc“), per_page (整数,可选,默认30,最大100)
create_milestone:为项目规划创建具有截止日期的新里程碑。
- *参数*: owner (字符串,可选), repo (字符串,可选), title (字符串,必填), state (字符串,可选,枚举:“open”,“closed”,默认“open”), description (字符串,可选), due_on (字符串,可选,ISO 8601日期时间格式)
edit_milestone:更新里程碑详细信息,包括标题、描述、状态和截止日期。
- *参数*: owner (字符串,可选), repo (字符串,可选), milestone_number (整数,必填), title (字符串,可选), state (字符串,可选,枚举:“open”,“closed”), description (字符串,可选), due_on (字符串,可选,ISO 8601日期时间格式)
delete_milestone:不再需要时从存储库中删除里程碑。
- *参数*: owner (字符串,可选), repo (字符串,可选), milestone_number (整数,必填)
💡 使用示例和工作流
配置后,您可以要求您的MCP客户端(例如Claude)执行强大的GitHub操作:
存储库发现和管理
- “列出我的GitHub存储库,按创建日期排序,只显示私有存储库。”
- “将默认存储库设置为
octocat/Spoon-Knife以简化工作流程。" - “获取有关的详细信息
microsoft/vscode存储库。" - “向我展示
src/main.jsmicrosoft/vcode中的文件develop支。" - “向我展示
src/main.js默认存储库中的文件develop支。" *(需要设置默认回购)* - “列出所有合作者
my-org/my-repo具有管理员权限的用户。" - “搜索与‘tensorflow示例语言:python’匹配的存储库,并按星号排序。”
高级问题管理
- “在中创建问题
my-org/my-repo标题为“紧急:UI Bug”,正文为“手机上的登录按钮坏了。'分配给user1和user2并添加bug标签。" - “创建一个标题为“功能请求”的问题,并添加
enhancement标签。" *(需要设置默认回购)* - “从上传屏幕截图
/Users/me/screenshots/bug_report.png在microsoft/vcode中发布#42。" - “从上传屏幕截图
/Users/me/screenshots/bug_report.png在默认存储库中发布#42。" *(需要设置默认回购)* - 编辑第15期:将标题更改为“功能请求:黑暗模式”,添加
enhancement标签,然后关闭它。” - “锁定问题#23,并注明原因‘已解决’,以防止进一步讨论。”
- “获取问题#7的完整详细信息,包括所有元数据和当前状态。”
- “删除
old-assignee从第12期开始添加new-assignee相反。"
问题讨论管理
- “列出上周对第7期的所有评论。”
- “在第15期中添加评论‘这看起来很棒!准备合并了。’。”
- “编辑评论ID 123456,使其显示‘已更新:合并前需要进行更多测试。’”
- “删除第20期中的评论ID 789012。”
标签和里程碑管理
- “列出中的所有标签
my-org/my-repo查看当前的组织体系。" - “列出默认存储库中的所有标签,以查看当前组织系统。” *(需要设置默认回购)*
- “创建一个名为“紧急”的新标签,颜色为红色(#ff0000),描述为“需要立即关注”。”
- “编辑‘bug’标签,将其颜色更改为橙色(#FFA500),并更新描述。”
- 从存储库中删除过时的“旧”标签
- “列出所有打开的里程碑
my-org/project-x按截止日期排序。" - “创建一个里程碑‘v2.0版本’,截止日期为‘2025-12-31T23:59:59Z’,并描述‘主要版本发布’。”
- “编辑里程碑#3,将标题更改为‘Q2目标’,并延长截止日期。”
- “删除里程碑#5,因为它不再与项目相关。”
拉取请求和协作
- “列出所有打开的拉取请求
microsoft/vscode." - “列出默认存储库的所有打开的拉取请求。” *(需要设置默认回购)*
- “显示上个月的已关闭拉取请求
my-org/project-x." - “获取我的GitHub用户配置文件信息。”
- “获取用户配置文件详细信息
github_username."
分支与委托管理
- “列出中的所有分支
my-org/my-repo并显示其保护状态。" - “列出默认存储库中的所有分支并显示其保护状态。” *(需要设置默认回购)*
- “仅显示中受保护的分支
my-org/secure-repo." - “创建一个名为的新功能分支
feature/dark-mode从develop支。" - “列出最后10个提交
main支。" - “显示所有提交
john-doe从上周开始。" - “获取有关提交的详细信息
abc123def包括所有文件更改。" - “比较
main枝繁叶茂feature/new-ui看看有什么不同。" - “向我展示两者之间的提交历史
v1.0.0和v2.0.0标签。"
工作流自动化示例
- “设置
my-org/main-project默认情况下,然后列出分配给我的所有未决问题。” - 创建一个标题为“登录错误”的错误报告问题,上传错误截图
/path/to/error.png,分配给dev-team,并添加标签bug和high-priority." - “对于问题#50:添加受让人
reviewer1,用原因“已解决”锁定它,并添加最后一条评论“PR#51中的问题已解决”。"
🔧 故障排除
身份验证问题
- 令牌问题:
- 仔细检查 GH_TOKEN MCP客户端配置中的值是正确的,没有拼写错误 - 确保令牌未过期或被撤销 - 使用curl验证令牌有效性:
export TEMP_TOKEN="ghp_YOUR_TOKEN_TO_TEST"
curl -H "Authorization: token $TEMP_TOKEN" https://api.github.com/user
unset TEMP_TOKEN这应该会返回您的GitHub用户信息。
- 配置问题:
- 验证 GH_TOKEN 正确放置在 env MCP客户端服务器配置中的对象 - 确保路径 server.cjs 绝对正确 - 检查Node.js版本是否为18或更高: node --version - 默认存储库:如果您设置 GH_DEFAULT_OWNER 和 GH_DEFAULT_REPO 环境变量,验证它们是否正确以及存储库是否存在
- 权限问题:
- 确保您的令牌具有所需的范围: - repo 或 public_repo (用于访问存储库) - user (供用户参考) - read:org (如果需要,用于组织访问) - 默认存储库访问权限:如果使用默认存储库,请确保您的令牌可以访问该特定存储库
默认存储库配置问题
- 环境变量不起作用:仔细检查拼写
GH_DEFAULT_OWNER和GH_DEFAULT_REPO在MCP客户端配置中 - 命令行参数:使用时确保语法正确
--default-owner和--default-repo旗帜 - 工具调用问题:使用精确的存储库名称:
owner/repo格式在set_default_repo工具 - 覆盖行为:请记住,运行时工具调用可以覆盖环境变量,命令行参数可以覆盖这两个变量
性能和速率限制
- GitHub API速率限制:经过身份验证的用户每小时5000个请求
- 如果达到限制,请等待重置窗口或使用其他令牌
- 服务器内置了速率限制错误处理功能
常见设置问题
- 路径问题:验证Claude Desktop配置中的绝对路径是否正确
- Node.js版本:确保你使用的是Node.js 18或更高版本
- 文件权限:确保
server.cjs可执行:chmod +x server.cjs
图像上传故障排除
- 确保图像文件存在于指定的本地路径中
- 支持的格式:PNG、JPG、JPEG、GIF、WebP
- 检查文件权限和可访问性
- 验证文件是否损坏或太大(GitHub有大小限制)
🚦 API费率限制和性能
- 标准费率限制:GitHub API允许通过身份验证的用户每小时发出5000个请求
- 内置操控:服务器包括对速率限制响应的全面错误处理
- 性能优化:与CLI工具相比,直接HTTP请求可确保更快的响应时间
- 缓存建议:考虑为频繁访问的数据实施缓存策略
🔒 安全最佳实践
- 令牌安全:永远不要承诺你的
GH_TOKEN进行版本控制或公开共享 - 最低权限:使用仅具有用例所需最小范围的令牌
- 环境变量:始终通过
envMCP客户端配置中的块 - 代币轮换:定期轮换您的GitHub代币以增强安全性
- 安全存储:使用系统的凭据管理安全地存储令牌
🔄 发展与贡献
地方发展设置
# Clone and setup
mkdir github-repos-manager-mcp
cd github-repos-manager-mcp
# Add the server files
npm install
chmod +x server.cjs
# For development testing with nodemon
npm run dev使用MCP客户端进行测试
建议的方法是配置您的MCP客户端(例如Claude Desktop),以指向您的开发版本,并使用适当的 GH_TOKEN 配置。更改为 server.cjs 需要重新启动服务器连接。
直接脚本测试
# Temporarily set token for quick verification
export GH_TOKEN="ghp_YOUR_DEVELOPMENT_TOKEN"
node server.cjs
unset GH_TOKEN # Always clean up after testing📜 许可证
MIT许可证-您可以自由使用、修改和分发此MCP服务器。
](https://mseep.ai/app/kurdin-github-repos-manager-mcp)
