Github Enterprise

Github Enterprise

ddukbg

开发者工具
访问服务器

README

GitHub Enterprise MCP 服务器

image

一个用于与 GitHub Enterprise API 集成的 MCP (模型上下文协议) 服务器。此服务器提供一个 MCP 接口,以便在 Cursor 中轻松访问来自 GitHub Enterprise 的仓库信息、问题、PR 等。

兼容性

此项目主要为 GitHub Enterprise Server 环境设计,但也适用于:

  • GitHub.com
  • GitHub Enterprise Cloud

注意: 某些企业特定功能(如许可证信息和企业统计信息)不适用于 GitHub.com 或 GitHub Enterprise Cloud。

主要特性

  • 从 GitHub Enterprise 实例检索仓库列表
  • 获取详细的仓库信息
  • 列出仓库分支
  • 查看文件和目录内容
  • 管理问题和拉取请求
  • 仓库管理(创建、更新、删除)
  • GitHub Actions 工作流管理
  • 用户管理(列出、创建、更新、删除、暂停/取消暂停用户)
  • 访问企业统计信息
  • 增强的错误处理和用户友好的响应格式

快速入门

前提条件

  • Node.js 18 或更高版本
  • 访问 GitHub Enterprise 实例
  • 个人访问令牌 (PAT)

Docker 安装和设置

选项 1:使用 Docker 运行

  1. 构建 Docker 镜像:

    docker build -t github-enterprise-mcp .
    
  2. 使用环境变量运行 Docker 容器:

    docker run -p 3000:3000 \
      -e GITHUB_TOKEN="your_github_token" \
      -e GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3" \
      -e DEBUG=true \
      github-enterprise-mcp
    

注意: Dockerfile 默认配置为使用 --transport http 运行。如果需要更改此设置,可以覆盖该命令:

docker run -p 3000:3000 \
  -e GITHUB_TOKEN="your_github_token" \
  -e GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3" \
  -e DEBUG=true \
  github-enterprise-mcp node dist/index.js --transport http --debug

选项 2:使用 Docker Compose

  1. 在项目根目录中创建一个包含所需环境变量的 .env 文件:

    GITHUB_ENTERPRISE_URL=https://github.your-company.com/api/v3
    GITHUB_TOKEN=your_github_token
    DEBUG=true
    
  2. 使用 Docker Compose 启动容器:

    docker-compose up -d
    
  3. 检查日志:

    docker-compose logs -f
    
  4. 停止容器:

    docker-compose down
    

安装和设置

本地开发(使用并发模式)

建议使用此方法进行主动开发,具有自动重新编译和服务器重启功能:

  1. 克隆仓库并安装所需的软件包:

    git clone https://github.com/ddukbg/github-enterprise-mcp.git
    cd github-enterprise-mcp
    npm install
    
  2. 运行开发服务器:

    export GITHUB_TOKEN="your_github_token"
    export GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3"
    npm run dev
    

    这将:

    • 在文件更改时自动编译 TypeScript 代码
    • 在编译后的文件更新时重启服务器
    • 在 HTTP 模式下运行服务器以进行基于 URL 的连接
  3. 使用下面描述的 URL 模式连接到 Cursor

生产环境的安装和设置

选项 1:使用 URL 模式(推荐用于本地开发)

此方法是最稳定的,建议用于本地开发或测试:

  1. 克隆仓库并安装所需的软件包:

    git clone https://github.com/ddukbg/github-enterprise-mcp.git
    cd github-enterprise-mcp
    npm install
    
  2. 构建项目:

    npm run build
    chmod +x dist/index.js
    
  3. 运行服务器:

    export GITHUB_TOKEN="your_github_token"
    export GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3"
    node dist/index.js --transport http --debug
    
  4. 使用 URL 模式连接到 Cursor:

    • 将以下内容添加到 Cursor 的 .cursor/mcp.json 文件中:
    {
      "mcpServers": {
        "github-enterprise": {
          "url": "http://localhost:3000/sse"
        }
      }
    }
    

选项 2:作为全局命令安装 (npm link)

此方法对于本地开发很有用:

# 克隆仓库后
git clone https://github.com/ddukbg/github-enterprise-mcp.git
cd github-enterprise-mcp

# 安装所需的软件包
npm install

# 构建
npm run build
chmod +x dist/index.js

# 全局链接
npm link

# 作为全局命令运行
export GITHUB_TOKEN="your_github_token"
export GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3"
github-enterprise-mcp --transport=http --debug

选项 3:使用 npx(当软件包已发布时)

如果软件包已发布到公共 npm 注册表:

npx @ddukbg/github-enterprise-mcp --token=your_github_token --github-enterprise-url=https://github.your-company.com/api/v3

与 AI 工具集成

Claude Desktop

将以下内容添加到您的 claude_desktop_config.json

{
  "mcpServers": {
    "github-enterprise": {
      "command": "npx",
      "args": ["-y", "@ddukbg/github-enterprise-mcp", "--token=YOUR_GITHUB_TOKEN", "--github-enterprise-url=YOUR_GITHUB_ENTERPRISE_URL"]
    }
  }
}

YOUR_GITHUB_TOKENYOUR_GITHUB_ENTERPRISE_URL 替换为您的实际值。

Cursor

推荐:URL 模式(最稳定)

为了在 Cursor 中获得最可靠的操作,建议使用 URL 模式:

  1. 在单独的终端窗口中启动服务器:

    cd /path/to/github-enterprise-mcp
    GITHUB_ENTERPRISE_URL="https://github.your-company.com/api/v3" GITHUB_TOKEN="your_github_token" node dist/index.js --transport http
    
  2. 配置 Cursor 的 MCP 设置:

    • 打开 Cursor 并转到 Settings
    • 导航到 AI > MCP Servers
    • 编辑您的 .cursor/mcp.json 文件:
    {
      "mcpServers": {
        "github-enterprise": {
          "url": "http://localhost:3000/sse"
        }
      }
    }
    
  3. 重启 Cursor 以应用更改

替代方案:命令模式

或者,您可以配置 Cursor 以使用命令模式,尽管 URL 模式更可靠:

  1. 打开 Cursor 并转到 Settings
  2. 导航到 AI > MCP Servers
  3. 单击 Add MCP Server
  4. 输入以下详细信息:
    • Name: GitHub Enterprise
    • Command: npx
    • Arguments: @ddukbg/github-enterprise-mcp
    • Environment Variables:
      • GITHUB_ENTERPRISE_URL: 您的 GitHub Enterprise API URL
      • GITHUB_TOKEN: 您的 GitHub 个人访问令牌

或者,您可以手动编辑您的 .cursor/mcp.json 文件以包含:

{
  "mcpServers": {
    "github-enterprise": {
      "command": "npx",
      "args": [
        "@ddukbg/github-enterprise-mcp"
      ],
      "env": {
        "GITHUB_ENTERPRISE_URL": "https://github.your-company.com/api/v3",
        "GITHUB_TOKEN": "your_github_token"
      }
    }
  }
}

语言配置

此 MCP 服务器支持英语和韩语。您可以使用以下方式配置语言:

环境变量

# 将语言设置为韩语
export LANGUAGE=ko

# 或在 .env 文件中
LANGUAGE=ko

命令行参数

# 将语言设置为韩语
node dist/index.js --language ko

如果未指定,则默认语言为英语。

HTTP 模式下的其他选项

  • --debug: 启用调试日志记录
  • --github-enterprise-url <URL>: 设置 GitHub Enterprise API URL
  • --token <TOKEN>: 设置 GitHub 个人访问令牌
  • --language <LANG>: 设置语言(en 或 ko,默认值:en)

可用的 MCP 工具

此 MCP 服务器提供以下工具:

工具名称 描述 参数 所需的 PAT 权限
list-repositories 检索用户或组织的仓库列表 owner: 用户名/组织名称<br>isOrg: 是否为组织<br>type: 仓库类型<br>sort: 排序标准<br>page: 页码<br>perPage: 每页项目数 repo
get-repository 获取详细的仓库信息 owner: 仓库所有者<br>repo: 仓库名称 repo
list-branches 列出仓库的分支 owner: 仓库所有者<br>repo: 仓库名称<br>protected_only: 是否仅显示受保护的分支<br>page: 页码<br>perPage: 每页项目数 repo
get-content 检索文件或目录内容 owner: 仓库所有者<br>repo: 仓库名称<br>path: 文件/目录路径<br>ref: 分支/提交(可选) repo
list-pull-requests 列出仓库中的拉取请求 owner: 仓库所有者<br>repo: 仓库名称<br>state: PR 状态过滤器<br>sort: 排序标准<br>direction: 排序方向<br>page: 页码<br>per_page: 每页项目数 repo
get-pull-request 获取拉取请求详细信息 owner: 仓库所有者<br>repo: 仓库名称<br>pull_number: 拉取请求编号 repo
create-pull-request 创建新的拉取请求 owner: 仓库所有者<br>repo: 仓库名称<br>title: PR 标题<br>head: Head 分支<br>base: Base 分支<br>body: PR 描述<br>draft: 创建为草稿 PR repo
merge-pull-request 合并拉取请求 owner: 仓库所有者<br>repo: 仓库名称<br>pull_number: 拉取请求编号<br>merge_method: 合并方法<br>commit_title: 提交标题<br>commit_message: 提交消息 repo
list-issues 列出仓库中的问题 owner: 仓库所有者<br>repo: 仓库名称<br>state: 问题状态过滤器<br>sort: 排序标准<br>direction: 排序方向<br>page: 页码<br>per_page: 每页项目数 repo
get-issue 获取问题详细信息 owner: 仓库所有者<br>repo: 仓库名称<br>issue_number: 问题编号 repo
list-issue-comments 列出问题或拉取请求上的评论 owner: 仓库所有者<br>repo: 仓库名称<br>issue_number: 问题/PR 编号<br>page: 页码<br>per_page: 每页项目数 repo
create-issue 创建新问题 owner: 仓库所有者<br>repo: 仓库名称<br>title: 问题标题<br>body: 问题正文内容<br>labels: 标签名称数组<br>assignees: 用户登录名数组<br>milestone: 里程碑 ID repo
create-repository 创建新仓库 name: 仓库名称<br>description: 仓库描述<br>private: 是否私有<br>auto_init: 使用 README 初始化<br>gitignore_template: 添加 .gitignore<br>license_template: 添加许可证<br>org: 组织名称 repo
update-repository 更新仓库设置 owner: 仓库所有者<br>repo: 仓库名称<br>description: 新描述<br>private: 更改隐私设置<br>default_branch: 更改默认分支<br>has_issues: 启用/禁用问题<br>has_projects: 启用/禁用项目<br>has_wiki: 启用/禁用 Wiki<br>archived: 存档/取消存档 repo
delete-repository 删除仓库 owner: 仓库所有者<br>repo: 仓库名称<br>confirm: 确认(必须为 true) delete_repo
list-workflows 列出 GitHub Actions 工作流 owner: 仓库所有者<br>repo: 仓库名称<br>page: 页码<br>perPage: 每页项目数 actions:read
list-workflow-runs 列出工作流运行 owner: 仓库所有者<br>repo: 仓库名称<br>workflow_id: 工作流 ID/文件名<br>branch: 按分支筛选<br>status: 按状态筛选<br>page: 页码<br>perPage: 每页项目数 actions:read
trigger-workflow 触发工作流 owner: 仓库所有者<br>repo: 仓库名称<br>workflow_id: 工作流 ID/文件名<br>ref: Git 引用<br>inputs: 工作流输入 actions:write
get-license-info 获取 GitHub Enterprise 许可证信息 - 需要 site_admin (管理员) 帐户
get-enterprise-stats 获取 GitHub Enterprise 系统统计信息 - 需要 site_admin (管理员) 帐户

注意: 对于企业特定工具(get-license-infoget-enterprise-stats),需要具有 站点管理员 权限的用户。建议使用 Classic Personal Access Token,因为 Fine-grained 令牌可能不支持这些企业级权限。

在 Cursor 中使用这些工具

设置 MCP 服务器并配置 Cursor 连接到它后,您可以直接在 Cursor 的 AI 聊天中使用 GitHub Enterprise 工具。以下是一些示例:

列出仓库

mcp_github_enterprise_list_repositories(owner="octocat")

获取仓库信息

mcp_github_enterprise_get_repository(owner="octocat", repo="hello-world")

列出拉取请求

mcp_github_enterprise_list_pull_requests(owner="octocat", repo="hello-world", state="open")

管理问题

# 列出问题
mcp_github_enterprise_list_issues(owner="octocat", repo="hello-world", state="all")
# 获取问题详细信息
mcp_github_enterprise_get_issue(owner="octocat", repo="hello-world", issue_number=1)

# 获取问题/PR 评论
mcp_github_enterprise_list_issue_comments(owner="octocat", repo="hello-world", issue_number=1)


# 创建新问题
mcp_github_enterprise_create_issue(
  owner="octocat", 
  repo="hello-world",
  title="Found a bug",
  body="Here is a description of the bug",
  labels=["bug", "important"]
)

使用仓库内容

mcp_github_enterprise_get_content(owner="octocat", repo="hello-world", path="README.md")

仓库管理

# 创建新仓库
mcp_github_enterprise_create_repository(
  name="new-project",
  description="This is a new project",
  private=true,
  auto_init=true
)

# 更新仓库设置
mcp_github_enterprise_update_repository(
  owner="octocat",
  repo="hello-world",
  description="Updated description",
  has_issues=true
)

用户管理(仅限企业版)

这些功能专门为 GitHub Enterprise Server 环境设计,需要管理权限:

# 列出 GitHub Enterprise 实例中的所有用户
mcp_github_enterprise_list_users(filter="active", per_page=100)

# 获取特定用户的详细信息
mcp_github_enterprise_get_user(username="octocat")

# 创建新用户(仅限企业版)
mcp_github_enterprise_create_user(
  login="newuser",
  email="newuser@example.com",
  name="New User",
  company="ACME Inc."
)

# 更新用户信息(仅限企业版)
mcp_github_enterprise_update_user(
  username="octocat",
  email="updated-email@example.com",
  location="San Francisco"
)

# 暂停用户(仅限企业版)
mcp_github_enterprise_suspend_user(
  username="octocat",
  reason="Violation of terms of service"
)

# 取消暂停用户(仅限企业版)
mcp_github_enterprise_unsuspend_user(username="octocat")

# 列出用户所属的组织
mcp_github_enterprise_list_user_orgs(username="octocat")

API 改进

  • 灵活的 API URL 配置(支持各种环境变量和命令行参数)
  • 增强的错误处理和超时管理
  • 用户友好的响应格式和消息

贡献

欢迎贡献!请随时提交拉取请求。

许可证

ISC

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Curri MCP Server

Curri MCP Server

通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。

官方
本地
JavaScript