Back to MCP directory
publicPublicdnsLocal runtime

secure-github-ops

一个安全的GitHub操作MCP服务器,所有写入操作需经管理员审批后才执行,防止自动化脚本误操作,提供操作员请求和管理员审批的双重角色机制。

article

README

🚀 安全的GitHub操作MCP服务器

由Aaron Murillo创建

这是一个MCP服务器,可让GitHub自动化操作真正变得安全。每个写入操作在执行前都需要经过审批,这样你就再也不用担心在你去喝咖啡的时候,失控的脚本会创建100个问题。

🚀 快速开始

你需要Node 18+和一个GitHub令牌。

cd secure-github-ops
npm install
cp .env.example .env

打开 .env 文件并填写以下内容:

GITHUB_TOKEN=ghp_your_token_here
ADMIN_API_KEYS=some-secret-admin-key
OPERATOR_API_KEYS=some-secret-operator-key

然后运行:

npm run build
npm start

若要开启带有热重载的开发模式:

npm run dev

✨ 主要特性

  • 安全审批机制:所有写入操作需审批后执行,避免失控脚本带来的风险。
  • 双角色管理:操作员可发起操作请求,管理员可审批、拒绝并查看待处理操作。
  • 日志记录:所有操作都有记录,提供完整的审计跟踪。

📦 安装指南

本地安装

按照上述快速开始部分的步骤操作即可完成本地安装。

Docker安装

docker build -t secure-github-ops .
docker run -e GITHUB_TOKEN=... -e ADMIN_API_KEYS=... secure-github-ops

💻 使用示例

与Claude Desktop配合使用

在你的Claude Desktop配置中添加以下内容:

{
  "mcpServers": {
    "secure-github-ops": {
      "command": "node",
      "args": ["/path/to/secure-github-ops/dist/index.js"],
      "env": {
        "GITHUB_TOKEN": "ghp_your_token",
        "ADMIN_API_KEYS": "your-admin-key",
        "OPERATOR_API_KEYS": "your-operator-key"
      }
    }
  }
}

操作示例

操作员创建问题请求

// 操作员发起请求
{
  "tool": "github.issues.create",
  "arguments": {
    "_authToken": "operator-key",
    "owner": "myorg",
    "repo": "myrepo",
    "title": "Fix the login bug"
  }
}
// 返回带有ID的待处理操作

管理员查看待处理操作

{
  "tool": "admin.list_pending_actions",
  "arguments": { "_authToken": "admin-key" }
}
// 显示待处理的问题请求

管理员批准操作

{
  "tool": "admin.approve_action",
  "arguments": {
    "_authToken": "admin-key",
    "actionId": "the-uuid-from-before"
  }
}
// 此时问题才会被创建

📚 详细文档

可用工具

操作员和管理员均可使用

  • github.issues.create - 请求创建一个问题
  • github.pr.open - 请求打开一个拉取请求
  • github.comment.add - 请求添加一条评论

仅管理员可用

  • admin.approve_action - 批准并执行一个待处理操作
  • admin.deny_action - 拒绝一个待处理操作
  • admin.list_pending_actions - 查看待处理的操作

配置选项

  • GITHUB_TOKEN(必需) - 具有仓库访问权限的GitHub个人访问令牌。
  • ADMIN_API_KEYS(必需) - 以逗号分隔的管理员密钥。
  • OPERATOR_API_KEYS(可选) - 以逗号分隔的操作员密钥。
  • ALLOWED_REPOS(可选) - 将操作限制在特定的仓库,格式如 owner/repo1,owner/repo2
  • LOG_LEVEL(可选) - 日志级别,可选值为 debuginfowarnerror

关于STDIO传输

本服务器使用STDIO进行通信,即通过标准输入/输出进行交互。所有日志信息会输出到标准错误输出,以免干扰协议。如果你奇怪为什么代码中没有 console.log,原因就在于此。

如果你希望使用HTTP传输,这已列入开发计划。核心代码保持不变,只需更换传输方式即可。

🔧 技术细节

测试

npm test

共有26个测试用例,涵盖身份验证、配置和待处理存储等方面。

未来规划

  • 最终会添加HTTP传输方式,以便将其作为服务进行托管。
  • 考虑为待处理操作添加持久化存储(目前这些操作存储在内存中)。
help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client