8 safe-by-default MCP servers for infra — and the governance model behind them

Leader 4
calendar_today agoschedule2 min read
— Originally published at dev.to

Update (Sep 2026): the suite is now 12 servers (added Grafana, Percona PostgreSQL, Ossian RAG/memory, and mcp-macos) and every destructive action can now pause and ask a human to approve it in-line via MCP elicitation — a model can echo a confirmation string, but it can't click your button. Full suite: https://dockndevai.github.io/

Giving an AI agent access to production infrastructure is a great way to move fast — and a great way to have it drop a database because a prompt was ambiguous. I wanted the upside without the footguns, so I built a family of Model Context Protocol servers that share one safe-by-default governance model.

The problem

MCP lets an agent call tools. For infra, those tools can be delete_topic, DROP TABLE, delete_resource_group. The usual answer is "just don't expose the dangerous ones" — but then the server isn't useful when you do need them. I wanted graduated, explicit control instead.

The governance model

Every server shares the same layered policy engine:

  • Access modesread-onlyread-writeadmin. Tools above the current mode are never even registered, so the model can't call what it can't see.
  • Allowlists — scope to specific realms / namespaces / topics / databases / projects / subscriptions.
  • Protected resources — system/prod resources (kube-system, the system DB, internal Kafka topics, the master realm) are readable but never mutable.
  • Destructive gating — deletes need an explicit ALLOW_DELETE flag on top of admin mode.
  • Typed confirmation — high-impact ops (delete a project / resource group) require a confirm value that echoes the exact target name. A boolean isn't enough.
  • Human-in-the-loop confirmation (new) — when the client supports MCP elicitation, destructive ops pause and ask the person to approve before running.
  • Secret redaction — credentials are stripped before anything reaches the model.
  • Dry-run + audit — preview writes without executing; every guarded op emits a JSON audit line to stderr.

The servers

All MIT-licensed (Apache-2.0 for ossian-mcp), TypeScript, published on npm as @dockndevai/mcp-*:

  • mcp-kubernetes — pods, logs, deployments, scale/restart, apply, exec
  • mcp-kafka — topics, consumer groups + lag, create/alter/reset
  • mcp-clickhouse — schema, queries, SQL-classified read/write/destructive gating
  • mcp-debezium — CDC connector status, config, lifecycle
  • mcp-oci — Oracle Cloud discovery + Terraform generation
  • mcp-azure — Azure Resource Manager inventory, tags, VM power, lifecycle
  • mcp-azure-devops — boards, repos, pipelines, projects
  • mcp-keycloak — realms, users, clients, roles, groups
  • mcp-percona-pg — Percona PostgreSQL + PgBouncer: pooling, tuning, backups/PITR, DR
  • mcp-grafana — dashboards, datasource queries (PromQL/LogQL/SQL), alerts & annotations
  • ossian-mcp — ask your own documents with citations + durable agent memory (RAG)
  • mcp-macos — observe & operate a Mac: files, processes, apps, screenshots; and, behind opt-ins, shell, AppleScript, GUI input

Try one

npx -y @dockndevai/mcp-kubernetes

Or in Claude Code:

claude mcp add kubernetes -e KUBECONFIG_PATH=~/.kube/config -e K8S_MODE=read-only -- npx -y @dockndevai/mcp-kubernetes

Every repo has per-client setup for Claude, Cursor, Codex, VS Code, and Windsurf.

Repos: https://github.com/dockndevai · The whole suite on one page: https://dockndevai.github.io/

I'd love feedback — especially on whether the mode + typed-confirmation + human-approval split is the right default for infrastructure MCP servers.

Originally published on Dev.to.

1 Comment

0 votes
🔥 Join developers growing publicly
Share your knowledge, build in public, and grow your developer presence with a global community.

More Posts

The Sovereign Vault — A Comprehensive Guide to Protocol-Driven AI

Ken W. Algerverified - Jun 4

MCP Is the USB-C of AI. So Why Are You Plugging Everything In?

Ken W. Algerverified - Jun 10

Your AI Doesn't Just Write Tests. It Runs Them Too.

Kevin Martinez - May 12

I’m a Senior Dev and I’ve Forgotten How to Think Without a Prompt

Karol Modelski - Mar 19

Faceted Navigation and Pagination for Ecommerce SEO

stepan-nikonov - Aug 31
chevron_left
653 Points4 Badges
Bengaluru, Indiadockndevai.github.io
2Posts
0Comments
2Connections
I build safe-by-default MCP servers so AI agents can work with real systems — infrastructure, databa... Show more

Related Jobs

View all jobs →

Commenters (This Week)

1 comment
1 comment
1 comment

Contribute meaningful comments to climb the leaderboard and earn badges!