Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 47,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here
formae-mcp logo

formae-mcp

formae-marketplace

OtherClaude Codeby platform-engineering-labs

Summary

MCP server and skills for formae: manage cloud resources, handle drift, discover infrastructure, and build plugins

Install to Claude Code

/plugin install formae-mcp@formae-marketplace

Run in Claude Code. Add the marketplace first with /plugin marketplace add platform-engineering-labs/formae-marketplace if you haven't already.

README.md

formae-mcp

MCP server and AI coding skills for the Infrastructure-as-code (IaC) platform formae. Provides 31 MCP tools for querying and managing cloud infrastructure, plus 19 skills that teach your AI coding assistant how to perform common infrastructure workflows through formae.

Prerequisites

  • Go 1.25+
  • A running formae agent (formae agent start)

Installation

Claude Code (via Plugin Marketplace)

Register the marketplace:

/plugin marketplace add platform-engineering-labs/formae-marketplace

Install the plugin:

/plugin install formae-mcp@formae-marketplace

Run /reload-plugins (Claude Code v2.1.116+) to apply the install without restarting your session. On older versions, restart Claude Code instead. The MCP server binary is built automatically on first use.

Verify by asking Claude to run /formae-status.

Claude Code (manual)

If you prefer not to use the marketplace:

1. Clone the repo:

   git clone https://github.com/platform-engineering-labs/formae-mcp.git ~/.claude/plugins/formae-mcp

2. Start Claude Code with the plugin directory:

   claude --plugin-dir ~/.claude/plugins/formae-mcp

The MCP server binary is built automatically on first use.

Codex

See .codex/INSTALL.md for Codex-specific installation instructions.

OpenCode

See .opencode/INSTALL.md for OpenCode-specific installation instructions.

Available Skills

Authoring

formae-author is the front door for authoring new infrastructure with formae. Tell it what you want to deploy ("I want to deploy a static website with CloudFront") and it triages the work: infers which plugin schema dependencies are needed, and dispatches to focused skills — formae-project-init to scaffold a new forma project, formae-deps to resolve plugin and PKL schema dependencies, formae-stack-design to design and write the forma file, formae-policy to attach lifecycle policies, and formae-plugin-new when a required resource type has no existing plugin. For existing cloud resources, it hands off to formae-import to bring them under management. The authoring skills are backed by hub tools (search_hub_plugins, list_plugin_examples) that pull the live plugin catalog and version-matched examples directly from the formae hub.

All Skills

| Skill | Description | |-------|-------------| | formae-author | Front door for authoring new infrastructure: triages intent, infers deps, dispatches to focused skills | | formae-project-init | Scaffold a new forma project with the correct directory layout and config | | formae-deps | Resolve and install plugin and PKL schema dependencies for a forma project | | formae-stack-design | Design and write a forma file for a given set of infrastructure requirements | | formae-status | Check running commands, deployment progress, recent operations, and failures | | formae-stacks | View infrastructure stacks, organization, and resource counts | | formae-resources | Query deployed resources by type, stack, label, or management status | | formae-targets | List cloud targets, configured regions, and provider accounts | | formae-apply | Deploy infrastructure by applying a forma file or reconciling a stack | | formae-patch | Make targeted infrastructure changes without a full reconcile | | formae-rename | Rename a resource's label via alias without destroying the cloud object | | formae-destroy | Tear down infrastructure resources, stacks, or environments | | formae-fix-code-drift | Check for out-of-band changes and decide whether to absorb or overwrite | | formae-policy | Set, remove, or inspect TTL and auto-reconcile policies — inline on one stack, or standalone and reused across several | | formae-discover | Find unmanaged resources in cloud accounts | | formae-import | Bring unmanaged/discovered resources under formae management | | formae-plugin-new | Scaffold a new formae resource plugin | | formae-plugin-add-resource | Add a new resource type to an existing plugin | | formae-config | Switch, list, save, create, delete, compare, view, and edit named formae configuration profiles (drives formae profile; requires formae >= 0.87.0) |

Available MCP Tools

Read-Only

| Tool | Description | |------|-------------| | list_resources | Query resources with optional filters | | list_stacks | Retrieve all stacks | | list_targets | Query configured cloud targets | | get_command_status | Get status of a specific command | | list_commands | List commands with optional query and filters | | get_agent_stats | Retrieve agent statistics | | check_health | Health check for the formae agent | | list_changes_since_last_reconcile | List infrastructure changes since last reconcile | | extract_resources | Extract resources as PKL code | | list_policies | List standalone (reusable) policies and the stacks they're attached to | | search_hub_plugins | Search the live formae hub plugin catalog by keyword or resource type | | get_hub_plugin | Get details for a specific plugin from the hub | | list_plugin_examples | List version-matched examples for a hub plugin | | get_plugin_example | Fetch a specific example from the hub |

Mutation

| Tool | Description | |------|-------------| | apply_forma | Deploy or update infrastructure (reconcile or patch mode) | | destroy_forma | Remove infrastructure by file or query | | cancel_commands | Cancel running commands | | force_sync | Trigger immediate resource synchronization | | force_discover | Trigger immediate resource discovery | | force_check_ttl | Trigger an immediate TTL expiry sweep across all stacks | | force_reconcile_stack | Force a one-shot reconcile on a stack (requires auto-reconcile policy attached) | | create_inline_policy | Plan a TTL or auto-reconcile policy edit on a stack (returns snippet + insertion anchor; caller applies via Edit) | | create_standalone_policy | Plan the declaration of a reusable policy in a forma file (returns snippet + insertion anchor) | | attach_standalone_policy | Plan the attachment of a standalone policy to a stack | | detach_standalone_policy | Plan the detachment of a standalone policy from a stack | | delete_standalone_policy | Plan the deletion of an unattached standalone policy (returns source anchor + a destroy forma) |

Profiles (requires formae >= 0.87.0)

Manage named formae environments (endpoint + targets) from your assistant.

| Tool | Description | |------|-------------| | list_profiles | List configuration profiles and which one is active | | current_profile | Show the active profile | | use_profile | Switch the active profile (global; only on explicit "change my default" requests) | | save_profile | Snapshot the active profile under a new name | | create_profile | Create a new profile from the starter template | | delete_profile | Delete a profile (cannot be the active one) | | diff_profiles | Compare two profiles (or one against the active) | | read_profile | Return a profile's PKL contents | | write_profile | Replace a profile's PKL (overwrite-only; refuses the active profile) |

Configuration

By default, formae-mcp connects to the formae agent at http://localhost:49684. To override this:

Environment variables (highest precedence):

export FORMAE_AGENT_URL=http://my-agent-host
export FORMAE_AGENT_PORT=8080

Profile (formae >= 0.87.0): when no environment variables are set, formae-mcp reads the agent endpoint from your active formae profile — or from the profile named by a tool's profile argument. Profiles live at ~/.config/formae/profiles/<name>.pkl and are managed with formae profile (or the profile tools above); each looks like:

amends "formae:/Config.pkl"

cli {
  api {
    url = "http://my-agent-host"
    port = 8080
  }
}

Precedence: environment variables > per-call profile / active profile > http://localhost:49684 default.

License

FSL-1.1-ALv2

Related plugins

Browse all →