P
polymatx/opsgate
The safety gate between AI agents and your servers. An MCP server for structured, policy-checked, audited infrastructure operations.
SECURITY.md ✓
在 GitHub 查看 ↗链接已于 2026-11-12 核查 · HTTP 200 · 打开的是厂商自己的官网
安装与配置
- 复制上面的命令
- 粘成
claude_desktop_config.json里mcpServers的一项(本地服务器用 command + args,示例见 客户端接法) - 重启客户端
取自该仓库的安装命令
go install github.com/polymatx/opsgate/cmd/opsgate@latest
解析自我们于 2026-10-26 抓取的该仓库 README;我们未执行过。
这条是仓库自己写的安装方式,不是 MCP 客户端配置,所以不生成 JSON。
配置项的键名以你的客户端为准:客户端与 CLI
- ★ 数取值
- 1 ★ · polymatx/opsgate · 取自 GitHub 搜索 API · (2026-11-13 20:00:50 核对)
- 来源明细
- 收录自 punkpeye/awesome-mcp-servers 榜单(我们从中收集的条目之一) · 条目类型:MCP 服务
- 收录与活跃
- 收录于 2026-10-23 · 最近见到 2026-11-14 · 共见到 26 次 · 被 23 个来源列出
- 评分构成
- 综合分 2,300 · 1 ★ · 23 个来源 · mcp
- 安装
go install github.com/polymatx/opsgate/cmd/opsgate@latest
常见问题(答案都来自我们的记录)
怎么安装?
该仓库给出的安装命令是
go install github.com/polymatx/opsgate/cmd/opsgate@latest。我们的记录里它是仓库自己提供的;不保证在你的客户端上直接可用。它适合谁 / 用来做什么?
我们把它归在这些标签下: MCP 服务。标签来自条目自身,不是我们强加的分类。
谁维护它、还在更新吗?
仓库
polymatx/opsgate;我们收录于 2026-10-23;最近见到 2026-11-14。这里没有"官方认证"或"质量评级"——我们只记录来源与时间。# opsgate
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
The safety gate between AI agents and your servers.
An MCP server that lets Claude, Cursor, or any AI agent operate real infrastructure —
without handing it a root shell.
What it looks like ·
30-second try ·
Break it yourself ·
Tools ·
Security model ·
Contributing
## What it looks like
You ask a question. The agent investigates with read-only tools and answers.
> You: Something's listening on port 8000 on my server and I don't remember what. Check it.
▸ listeningports(host: "hetzner")
Netid State Recv-Q Send-Q Local Address:Port Process
tcp LISTEN 0 511 0.0.0.0:443 users:(("nginx",pid=249619),…)
tcp LISTEN 0 511 0.0.0.0:80 users:(("nginx",pid=249619),…)
tcp LISTEN 0 4096 0.0.0.0:22 users:(("sshd",pid=237597),…)
tcp LISTEN 0 151 127.0.0.1:3306 users:(("mysqld",pid=237695),…)
tcp LISTEN 0 5 127.0.0.1:8000 users:(("python3",pid=237608),…)
▸ servicelist(host: "hetzner", state: "running")
docker.service loaded active running Docker Application Container Engine
mysql.service loaded active running MySQL Community Server
nginx.service loaded active running A high performance web server…
php8.3-fpm.service loaded active running The PHP 8.3 FastCGI Process Manager
pm2-root.service loaded active running PM2 process manager
> Claude: Port 8000 is a bare python3 process (pid 237608) bound to localhost only, so
> it isn't reachable from outside. It's not managed by systemd — no unit owns it — which
> means it won't survive a reboot. It's most likely something started by hand in a shell.
Now something that changes state. In operate mode the agent cannot just do it:
> You: OK, nginx config changed. Reload it.
▸ nginxtest(host: "hetzner")
nginx: configuration file /etc/nginx/nginx.conf test is successful
▸ nginxreload(host: "hetzner")
┌─ opsgate: approval required ─────────────────────────────────┐
│ allow nginxreload on host "hetzner"? │
│ │
│ The nginx configuration passed validation. │
│ This will reload nginx. │
│ │
│ Command: 'nginx' '-s' 'reload' │
│ [ Approve ] [ Deny ] │
└─────────────────────────────────────────────────────────────┘
You click Deny, and nothing happens — the agent is told the operator refused. Approve, and
it runs and lands in the audit log. Either way you saw the exact command first.
(Tool output above is real output from a live server; the prompt is rendered by your MCP
client, so it looks however that client draws it.)
## Try it in 30 seconds (no server needed)
opsgate runs with no config file at all — local machine, read-only:
bash
go install github.com/polymatx/opsgate/cmd/opsgate@latest
opsgate serve
opsgate v0.1.3 | mode=observe | defaulthost=local | audit=~/.opsgate/audit.jsonl
That's it. No config, no SSH, and it defaults to observe — so it can read your disk usage
and journal, and it will refuse to change anything:
▸ diskusage() → works
▸ servicerestart(...) → Refused by opsgate policy: host is in observe mode
Point your client at it and ask "what's using disk space on this machine?" When you're
ready for real hosts, opsgate init writes a starter config to ~/.opsgate/config.yaml.
### Which clients can reach it
opsgate runs on your machine (or on the server itself) and holds your SSH key, so the
transport you need depends on where your client actually executes:
An MCP server that lets Claude, Cursor, or any AI agent operate real infrastructure —
without handing it a root shell.
What it looks like ·
30-second try ·
Break it yourself ·
Tools ·
Security model ·
Contributing
## What it looks like
You ask a question. The agent investigates with read-only tools and answers.
> You: Something's listening on port 8000 on my server and I don't remember what. Check it.
▸ listeningports(host: "hetzner")
Netid State Recv-Q Send-Q Local Address:Port Process
tcp LISTEN 0 511 0.0.0.0:443 users:(("nginx",pid=249619),…)
tcp LISTEN 0 511 0.0.0.0:80 users:(("nginx",pid=249619),…)
tcp LISTEN 0 4096 0.0.0.0:22 users:(("sshd",pid=237597),…)
tcp LISTEN 0 151 127.0.0.1:3306 users:(("mysqld",pid=237695),…)
tcp LISTEN 0 5 127.0.0.1:8000 users:(("python3",pid=237608),…)
▸ servicelist(host: "hetzner", state: "running")
docker.service loaded active running Docker Application Container Engine
mysql.service loaded active running MySQL Community Server
nginx.service loaded active running A high performance web server…
php8.3-fpm.service loaded active running The PHP 8.3 FastCGI Process Manager
pm2-root.service loaded active running PM2 process manager
> Claude: Port 8000 is a bare python3 process (pid 237608) bound to localhost only, so
> it isn't reachable from outside. It's not managed by systemd — no unit owns it — which
> means it won't survive a reboot. It's most likely something started by hand in a shell.
Now something that changes state. In operate mode the agent cannot just do it:
> You: OK, nginx config changed. Reload it.
▸ nginxtest(host: "hetzner")
nginx: configuration file /etc/nginx/nginx.conf test is successful
▸ nginxreload(host: "hetzner")
┌─ opsgate: approval required ─────────────────────────────────┐
│ allow nginxreload on host "hetzner"? │
│ │
│ The nginx configuration passed validation. │
│ This will reload nginx. │
│ │
│ Command: 'nginx' '-s' 'reload' │
│ [ Approve ] [ Deny ] │
└─────────────────────────────────────────────────────────────┘
You click Deny, and nothing happens — the agent is told the operator refused. Approve, and
it runs and lands in the audit log. Either way you saw the exact command first.
(Tool output above is real output from a live server; the prompt is rendered by your MCP
client, so it looks however that client draws it.)
## Try it in 30 seconds (no server needed)
opsgate runs with no config file at all — local machine, read-only:
bash
go install github.com/polymatx/opsgate/cmd/opsgate@latest
opsgate serve
opsgate v0.1.3 | mode=observe | defaulthost=local | audit=~/.opsgate/audit.jsonl
That's it. No config, no SSH, and it defaults to observe — so it can read your disk usage
and journal, and it will refuse to change anything:
▸ diskusage() → works
▸ servicerestart(...) → Refused by opsgate policy: host is in observe mode
Point your client at it and ask "what's using disk space on this machine?" When you're
ready for real hosts, opsgate init writes a starter config to ~/.opsgate/config.yaml.
### Which clients can reach it
opsgate runs on your machine (or on the server itself) and holds your SSH key, so the
transport you need depends on where your client actually executes:
收录徽章(可选)
想把收录标记放进 README 就复制这行,可选,不影响收录。
[](https://anclum.com/zh/s/polymatx-opsgate/)
- 来源
- awesome · https://github.com/polymatx/opsgate
- 按领域浏览
- MCP 服务
- Traction
- 1 ★
- 收录来源
- 23 个独立来源
- 收录于
- 今天
- 安全策略
- 该仓库根目录有
SECURITY.md(我们只核文件存在,未核内容)
同类推荐
所属领域与标签
每个标签都能点进去看同类的全部条目。数字是当前库里的真实条数。