安全的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 IDGitHub上什么也没发生。现在管理员检查待处理的内容:
{
"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 test26个测试,涵盖身份验证、配置和挂起存储。
码头工人
docker build -t secure-github-ops .
docker run -e GITHUB_TOKEN=... -e ADMIN_API_KEYS=... secure-github-ops接下来是什么
最终添加HTTP传输,以便您可以将其作为服务托管。还要考虑未决操作的持久存储(现在它们存在于内存中)。
