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(可选) - 日志级别,可选值为debug、info、warn、error。
关于STDIO传输
本服务器使用STDIO进行通信,即通过标准输入/输出进行交互。所有日志信息会输出到标准错误输出,以免干扰协议。如果你奇怪为什么代码中没有 console.log,原因就在于此。
如果你希望使用HTTP传输,这已列入开发计划。核心代码保持不变,只需更换传输方式即可。
🔧 技术细节
测试
npm test
共有26个测试用例,涵盖身份验证、配置和待处理存储等方面。
未来规划
- 最终会添加HTTP传输方式,以便将其作为服务进行托管。
- 考虑为待处理操作添加持久化存储(目前这些操作存储在内存中)。
微信扫一扫