Gridctl
🔒 MCP gateway with a built-in skill library.
- Transport
- Not stated
- Package
- —
- Registry id
- —
No install snippet on purpose. A working MCP config is a command, its arguments and an environment block — the last two are where API keys live, so this catalogue never stores them and cannot publish them. Follow the link above for the authors' own instructions.

Gridctl aggregates tools from MCP servers into a single gateway and serves Agent Skills as MCP prompts to upstream clients. Define your stack in YAML, apply with one command, and connect Claude Desktop (or any MCP client) through one endpoint.
gridctl apply stack.yaml
Designed for fast, ephemeral, stateless environments, inspired by Containerlab.
⚡️ Why gridctl
MCP servers are everywhere: different transports, different hosting models, different .json files accumulating like dust. Skills are a separate sprawl on top. Switching projects shouldn't mean rewriting every client config.
Gridctl gives you one declarative file for everything you want connected, one local endpoint your client talks to, and a UI that shows you what's actually running. Build fast, throw it away, rebuild it tomorrow.
version: "1"
name: daily
# Secret set passed in at runtime
secrets:
sets:
- dev
network:
name: daily-net
driver: bridge
# Global gateway configuration
gateway:
name: dev
code_mode: on
# LLM clients auto-linked to this gateway on apply
link:
- claude
- claude-code
- cursor
- antigravity
- grok
# Downstream MCP servers behind the gateway
mcp-servers:
# Jira and Confluence via Atlassian's hosted remote MCP.
# Authorize once with `gridctl auth login atlassian`; tokens are stored
# encrypted and refreshed automatically.
- name: atlassian
url: https://mcp.atlassian.com/v1/mcp/authv2
auth:
type: oauth
# GitHub repos, issues, and PRs (containerized stdio server)
- name: github
image: ghcr.io/github/github-mcp-server:v1.12.1@sha256:0ba840c46a237879c8300e7fddb0b6347f20e029ccb9cbe2ce4a943daa1ff560
transport: stdio
env:
GITHUB_PERSONAL_ACCESS_TOKEN: ${var:GITHUB_PERSONAL_ACCESS_TOKEN}
# Browser automation and page inspection
- name: playwright
command:
- npx
- '@playwright/mcp@0.0.80'
# SaaS app actions through Zapier's hosted MCP endpoint.
# Same flow: `gridctl auth login zapier` after apply.
- name: zapier
url: https://mcp.zapier.com/api/v1/connect
auth:
type: oauth
🪛 Install
curl -fsSL https://raw.githubusercontent.com/gridctl/gridctl/main/install.sh | sh
Installs the latest release to ~/.local/bin/gridctl. Full instructions for Homebrew, pre-built binaries, building from source, container runtime setup, and updating/uninstalling are in the Installation guide.
The installer checks SHA256, not release origin. For covered releases, follow Release Verification before extraction or installation, then install the same verified local archive. The guide explains coverage, expected signer and source identity, and the published inventories.
🚦 Quick Start
# Or scaffold your own starter stack.yaml
gridctl init
# Apply the example stack
gridctl apply examples/getting-started/mcp-basic.yaml
# Check what's running
gridctl status
# Open the web UI
open http://localhost:8180
# Clean up
gridctl destroy examples/getting-started/mcp-basic.yaml
🖥️ Connect LLM Application
The easiest way to connect is with gridctl link, which auto-detects installed LLM clients and injects the gateway configuration:
gridctl link # Interactive: detect and select clients
gridctl link claude # Link a specific client
gridctl link --all # Link all detected clients at once
# Local-model clients bog down on large tool lists; link a smaller
# surface via a tool group (or enable gateway code_mode)
gridctl link lmstudio --group <name>
From the project's README.