GitHub操作审批服务器

一个确保GitHub自动化操作安全的MCP服务器,所有写操作需经审批后才执行,提供完整的审计跟踪。

  • by AaronMurillo01
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 AaronMurillo01/secure-github-ops

使用说明

安全的GitHub Ops MCP服务器

由Aaron Murillo创作

使GitHub自动化真正安全的MCP服务器。每个写操作在运行之前都需要获得批准,所以你永远不必担心失控的脚本在你喝咖啡的时候会产生100个问题。

这有什么作用

你知道大多数自动化是如何实现的。..立即做事情?这颠覆了这一点。当你(或人工智能)试图创建问题、打开PR或添加评论时,它会进入挂起队列。然后,有管理员权限的人会审核并批准它。只有这样,它才会真正进入GitHub。

两个角色:

  • 操作员可以请求采取行动
  • 管理员可以批准、拒绝和查看待处理的内容

所有内容都会被记录下来,这样你就有了一个完整的审计跟踪。

入门指南

你需要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

与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"
      }
    }
  }
}

工具

对于操作员和管理员:

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

仅限管理员:

  • admin.aprove_action-批准并运行挂起的操作
  • admin.deny_action-拒绝挂起的操作
  • admin.list_pending_actions-查看等待处理的内容

运作原理

假设操作员想要创建问题:

// Operator requests it
{
  "tool": "github.issues.create",
  "arguments": {
    "_authToken": "operator-key",
    "owner": "myorg",
    "repo": "myrepo",
    "title": "Fix the login bug"
  }
}
// Returns a pending action with an ID

GitHub上什么也没发生。现在管理员检查待处理的内容:

{
  "tool": "admin.list_pending_actions",
  "arguments": { "_authToken": "admin-key" }
}
// Shows the pending issue request

管理员批准:

{
  "tool": "admin.approve_action",
  "arguments": {
    "_authToken": "admin-key",
    "actionId": "the-uuid-from-before"
  }
}
// NOW the issue gets created

配置选项

GITHUB_TOKEN(必填)-您的GITHUB PAT,具有仓库访问权限

ADMIN_API_KEYS(必需)-以逗号分隔的管理密钥

OPERATOR_API_KEYS(可选)-以逗号分隔的操作员键

ALLOWED_REPOS(可选)-将其锁定到特定的存储库,如owner/repo1、owner/repo2

LOGLEVEL(可选)-调试、信息、警告、错误

关于STDIO传输

这使用STDIO,这意味着它通过stdin/stdout进行通信。所有日志都会进入stderr,这样它们就不会干扰协议。如果你想知道为什么到处都没有console.log,那就是原因。

想要HTTP吗?这在路线图上。核心代码保持不变,只需交换传输即可。

运行测试

npm test

26个测试,涵盖身份验证、配置和挂起存储。

码头工人

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

接下来是什么

最终添加HTTP传输,以便您可以将其作为服务托管。还要考虑未决操作的持久存储(现在它们存在于内存中)。