使用说明
Planton MCP Server
A stateless MCP server that connects AI-powered IDEs to Planton. It translates MCP tool calls and resource reads into gRPC requests against the Planton backend, letting Cursor, Claude Desktop, VS Code, Windsurf, and any MCP-compliant client deploy and manage infrastructure on every cloud in Planton's catalog without leaving the editor -- from discovering organizations and environments, through applying, listing and destroying Infra Components, to following every change as an Infra Job.
flowchart TD
IDE["AI IDE\n(Cursor / Claude Desktop / VS Code / Windsurf)"]
MCP["planton-mcp-server\n(stdio or Streamable HTTP)"]
Backend["Planton Backend\n(gRPC · TLS on :443)"]
IDE -->|"MCP protocol"| MCP
MCP -->|"gRPC"| Backend
This server does not store state. It is a protocol bridge: every tool call opens a short-lived gRPC connection, performs the RPC, and returns the result. It can serve both STDIO and HTTP transports concurrently from a single process.
Key Concepts
| Term | Definition |
|---|---|
| Infra Component | One piece of infrastructure Planton deploys and manages (e.g. an EKS cluster, a GCP VPC, an Azure database). |
| catalog kind | The PascalCase type of an Infra Component, from Planton's open-source catalog (e.g. AwsEksCluster, GcpCloudSqlInstance). |
| Infra Stack | A set of Infra Components installed together, usually from an Infra Chart. |
| Infra Job | One run that applies, refreshes or destroys one Infra Component; an Infra Pipeline runs one Infra Job per component in its stack. |
| org | Organization identifier -- the tenant-level namespace that owns a resource. |
| env | Environment identifier (e.g. production, staging). |
| slug | URL-safe unique name for a resource within an (org, env, kind) scope. |
| api_version | Versioned API namespace of a catalog kind (e.g. aws.planton.dev/v1alpha1). |
| apply | Idempotent create-or-update. Same semantics as kubectl apply -- if the resource exists it is updated, otherwise it is created. |
Installation
Prerequisites
- A Planton account
- An API key (Console > Profile > API Keys > Create Key)
- A compatible MCP host (Cursor, Claude Desktop, VS Code, Windsurf, or any MCP-compliant client)
Pre-built Binary
# macOS (ARM64)
curl -L https://github.com/plantonhq/planton-mcp-server/releases/latest/download/planton-mcp-server_Darwin_arm64.tar.gz | tar xz
sudo mv planton-mcp-server /usr/local/bin/
# macOS (Intel)
curl -L https://github.com/plantonhq/planton-mcp-server/releases/latest/download/planton-mcp-server_Darwin_x86_64.tar.gz | tar xz
sudo mv planton-mcp-server /usr/local/bin/
# Linux (AMD64)
curl -L https://github.com/plantonhq/planton-mcp-server/releases/latest/download/planton-mcp-server_Linux_x86_64.tar.gz | tar xz
sudo mv planton-mcp-server /usr/local/bin/
Docker
docker run -i --rm \
-e PLANTON_API_KEY=your-api-key \
ghcr.io/plantonhq/planton-mcp-server
Docker networking:
localhostinside a container refers to the container's own loopback, not the host machine. To reach a custom endpoint running on the host, usehost.docker.internalon Docker Desktop (macOS / Windows) or add--network hoston Linux.
Hosted (Zero Install)
Planton hosts a shared MCP server at mcp.planton.ai. No binary or Docker
required -- connect directly from any MCP client over HTTPS:
{
"mcpServers": {
"planton": {
"type": "http",
"url": "https://mcp.planton.ai/",
"headers": {
"Authorization": "Bearer YOUR_PLANTON_API_KEY"
}
}
}
}
Each request carries its own API key, so multiple users share the same endpoint.
MCP Client Configuration
All MCP clients use the same JSON structure. The differences are the config file location and the top-level key.
Using the standalone binary
{
"mcpServers": {
"planton": {
"command": "planton-mcp-server",
"env": {
"PLANTON_API_KEY": "YOUR_PLANTON_API_KEY"
}
}
}
}
Using Docker
{
"mcpServers": {
"planton": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "PLANTON_API_KEY",
"ghcr.io/plantonhq/planton-mcp-server"
],
"env": {
"PLANTON_API_KEY": "YOUR_PLANTON_API_KEY"
}
}
}
}
Where to put the config
| Client | Config file | Top-level key |
|---|---|---|
| Cursor | .cursor/mcp.json (workspace) or global settings |
mcpServers |
| Claude Desktop / Claude Code | claude_desktop_config.json |
mcpServers |
| VS Code / GitHub Copilot | .vscode/mcp.json (workspace) or user settings |
servers |
| Windsurf | Windsurf MCP settings | mcpServers |
| LangGraph | langgraph.json |
mcp_servers |
VS Code uses
"servers"instead of"mcpServers"as the top-level key.
Configuration Reference
| Variable | Default | Description |
|---|---|---|
PLANTON_API_KEY |
(required for stdio/both) | API key for Planton. |
PLANTON_ENVIRONMENT |
live |
Target environment: live, test, or local. |
PLANTON_APIS_GRPC_ENDPOINT |
(from environment) | Explicit gRPC endpoint override. |
PLANTON_MCP_TRANSPORT |
stdio |
Transport mode: stdio, http, or both. |
PLANTON_MCP_HTTP_PORT |
8080 |
HTTP listen port. |
PLANTON_MCP_HTTP_AUTH_ENABLED |
true |
Require Bearer token for HTTP requests. |
PLANTON_MCP_LOG_FORMAT |
text |
Log encoding: text or json. |
PLANTON_MCP_LOG_LEVEL |
info |
Minimum log level: debug, info, warn, error. |
TLS: Connections to endpoints on port 443 automatically use TLS with the
system root CA pool. All other ports use plaintext. There is no separate TLS
configuration flag.
Tools and Resources
About 250 tools span the Planton product surface:
Infra Components -- apply, get, delete, list, destroy, purge, Planton-managed state list and move
Infra Jobs -- get, latest, list, rerun, cancel, and an error recommendation for a failed job
Infra Charts -- list, get, and build reusable infrastructure charts
Infra Stacks -- search, get, apply, delete, slug check, undeploy
Infra Pipelines -- list, get, logs, latest, run, cancel, and the manual gates
Estate -- the estate answer, blast radius, and organization, environment, service and component topologies
Catalog -- catalog kinds, presets, IaC modules and provisioner mappings, and a preview of a manifest's upgrade to a newer kind version
Config Manager -- variables, secrets and their versions, secret backends, and variable groups
Audit -- the organization's activity feed, version history and unified diffs for any platform resource
Organizations and Environments -- search, get, apply, delete, slug check, and the context hierarchy
Service Hub -- services, their runs, deployments (promote, roll back), and Tekton pipelines and tasks
Connect -- cloud connections, GitHub, default providers and runners, runners, and provider auth
IAM -- identity, API keys, teams, service accounts, roles, and authorization policies
CloudOps -- live queries against AWS, GCP, Azure, and Kubernetes
Search -- ranked directory search, exact resolves, and a record by its ID
Plus 9 MCP prompts for guided workflows (debug deployments, assess change impact, explore infrastructure, provision resources, manage access, onboard teammates, diagnose services, set up environments, investigate security incidents).
And 7 MCP resources for schema discovery:
| URI | What It Returns |
|---|---|
catalog-kinds://catalog |
Every catalog kind, grouped by cloud provider |
catalog-kind-schema://{kind} |
Full JSON schema for one catalog kind |
connection-types://catalog |
Every connection type with its description |
connection-schema://{kind} |
Full JSON schema for one connection type |
api-resource-kinds://catalog |
All API resource kinds in the platform |
environment://summary/{org} |
An organization's environments with their connection and Infra Component counts |
authorization://tool-catalog |
Every tool with the permissions it exercises and the roles that hold them |
HTTP Mode
For shared or remote deployments, set the transport to http. This runs the
MCP Streamable HTTP transport -- not a REST API.
PLANTON_MCP_TRANSPORT=http \
PLANTON_API_KEY=your-api-key \
planton-mcp-server
Or with Docker:
docker run --rm \
-e PLANTON_MCP_TRANSPORT=http \
-e PLANTON_MCP_HTTP_AUTH_ENABLED=true \
-p 8080:8080 \
ghcr.io/plantonhq/planton-mcp-server
Connect your MCP client to http://host:8080 with an
Authorization: Bearer <token> header, where <token> is a valid Planton
API key. Each HTTP request carries its own API key, so multiple users can share
a single server instance.
Auth: HTTP auth is enabled by default. Set
PLANTON_MCP_HTTP_AUTH_ENABLED=false only for trusted internal networks where
all callers are already authenticated at the network level.
Dual transport: Set PLANTON_MCP_TRANSPORT=both to serve STDIO and HTTP
simultaneously from a single process. This is useful in development when you
want local IDE access (STDIO) and remote access (HTTP) at the same time.
TLS: The HTTP transport does not terminate TLS natively. For production deployments, place a TLS-terminating reverse proxy (e.g. nginx, Envoy, or a cloud load balancer) in front of the MCP server.
Security
- STDIO mode: API key loaded once from
PLANTON_API_KEYat startup - HTTP mode: Each request carries its own key via
Authorization: Bearerheader -- true multi-tenant support - Keys are held in memory only during request execution and never persisted
- All API calls are validated and logged with the caller's identity
- Fine-grained authorization is enforced by the Planton backend via OpenFGA
Supported Cloud Providers
AWS, GCP, Azure, Kubernetes, DigitalOcean, Cloudflare, Auth0, OpenFGA and Stripe -- every kind in Planton's open-source catalog.
License
Apache License 2.0. See LICENSE.
