Facets Module Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Facets Module Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
⚠️ DEPRECATED: This repository is no longer actively maintained. Please use Praxis instead. If you need this functionality outside of Praxis, use the Raptor CLI.
This MCP (Model Context Protocol) Server for the Facets Module assists in creating and managing Terraform modules for infrastructure as code. It integrates with Facets.cloud's FTF CLI, providing secure and robust tools for module generation, validation, and management to support cloud-native infrastructure workflows.
Limits all file operations to within the working directory to ensure safety and integrity.
Offers comprehensive tools for file listing, reading, writing, module generation, validation, and previews. All destructive or irreversible commands require explicit user confirmation and support dry-run previews.
Interactive prompt-driven workflows facilitate generation of Terraform modules with metadata, variable, and input management using FTF CLI.
Fork existing modules from the Facets control plane to create customized variants. Supports discovering available modules, updating metadata, and customizing functionality while preserving the original module structure.
Automatically reads additional project-specific instructions from the mcp_instructions directory at the root level, allowing teams to define custom requirements, constraints, and guidelines that supplement the default module generation behavior.
Comprehensive deployment workflow supporting module preview, testing in dedicated test projects, and real-time deployment monitoring with status checks and logs. You will need a test project with a running environment and an enabled resource added for the module being tested (to be done manually from the Facets UI).
Supports multiple cloud providers and automatically extracts git repository metadata to enrich module previews.
| Tool Name | Description |
|---|---|
FIRST_STEP_get_instructions | Loads all module writing instructions from the module_instructions directory and supplementary instructions from mcp_instructions. Always call this first. |
list_files | Lists all files in the specified module directory securely within the working directory. |
read_file | Reads the content of a file within the working directory. |
edit_file_block | Apply surgical edits to specific blocks of text in files. Makes precise changes without rewriting entire files. Cannot edit outputs.tf or facets.yaml files. |
write_config_files | Writes and validates facets.yaml configuration files with dry-run and diff previews. |
write_resource_file | Writes Terraform resource files (main.tf, variables.tf, etc.) safely. Excludes outputs.tf and facets.yaml. |
write_outputs | Writes the outputs.tf file for a module with output attributes and interfaces in a local block. |
write_readme_file | Writes a README.md file for the module directory with AI-generated content. |
write_generic_file | Writes files generically with working directory and file type checks. Path: facets_mcp/tools/module_files.py |
generate_module_with_user_confirmation | Generates a new Terraform module scaffold with dry-run preview and user confirmation. |
validate_module | Validates a Terraform module directory using FTF CLI standards and checks output types. |
push_preview_module_to_facets_cp | Previews a module by pushing a test version to the control plane with git context extracted automatically. |
register_output_type | Registers a new output type in the Facets control plane with interfaces and attributes and providers. |
get_output_type_details | Retrieves details for a specific output type from the Facets control plane. |
find_output_types_with_provider | Finds all output types that include a specific provider source for module configurations. |
get_local_modules | Scans and lists all local Terraform modules by searching for facets.yaml recursively, including loading outputs.tf content if present. |
search_modules_after_confirmation | Searches modules by filtering for a string within facets.yaml files, supports pagination, and returns matched modules with details. |
list_test_projects | Retrieves and returns the names of all available test projects for deployment. |
test_already_previewed_module | Tests a module that has been previewed by deploying it to a specified test project. |
check_deployment_status | Checks the status of a deployment with optional waiting for completion. |
get_deployment_logs | Retrieves logs for a specific deployment. |
list_modules_for_fork | Lists all available modules from the control plane that can be forked, displaying them in a compact format for easy selection. |
fork_existing_module | Forks an existing module by downloading it and updating its metadata (flavor and version). Supports dry-run preview and user confirmation. |
The MCP Server requires uv for MCP orchestration.
The package is available on PyPI: facets-module-mcp
#### Install uv with Homebrew:
brew install uvFor other methods, see the official uv installation guide.
Add the following to your claude_desktop_config.json:
{
"mcpServers": {
"facets-module": {
"command": "uvx",
"args": [
"facets-module-mcp@latest",
"/Path/to/working-directory"
],
"env": {
"FACETS_PROFILE": "default",
"FACETS_USERNAME": "<YOUR_USERNAME>",
"FACETS_TOKEN": "<YOUR_TOKEN>",
"CONTROL_PLANE_URL": "<YOUR_CONTROL_PLANE_URL>"
}
}
}
}For a locally cloned repository, use:
{
"mcpServers": {
"facets-module": {
"command": "uv",
"args": [
"--directory",
"/path/to/your/cloned/facets-module-mcp/facets_mcp",
"run",
"facets_server.py",
"/path/to/working-directory"
],
"env": {
"PYTHONUNBUFFERED": "1",
"FACETS_PROFILE": "default",
"FACETS_USERNAME": "<YOUR_USERNAME>",
"FACETS_TOKEN": "<YOUR_TOKEN>",
"CONTROL_PLANE_URL": "<YOUR_CONTROL_PLANE_URL>"
}
}
}
}⚠ Replace <YOUR_USERNAME>, <YOUR_TOKEN>, and <YOUR_CONTROL_PLANE_URL> with your actual authentication data.
The uv runner automatically manages environment and dependency setup using the pyproject.toml file in the MCP directory.
If you have already logged into FTF, specifying FACETS_PROFILE is sufficient.
For token generation and authentication setup, please refer to the official Facets documentation: https://readme.facets.cloud/reference/authentication-setup
Note: Similar setup is available in Cursor read here
list_files, read_file, edit_file_block, write_config_files, etc.) for Terraform code management.push_preview_module_to_facets_cp, test on dedicated test projects with test_already_previewed_module, and monitor progress using check_deployment_status and get_deployment_logs.generate_new_module to guide module generation interactively, or use fork_existing_module to customize existing modules.The MCP server now supports forking existing modules from the Facets control plane. Use the "Fork Existing Module" prompt to access a guided workflow for:
The fork workflow maintains the original module structure while allowing you to customize metadata, variables, resources, and outputs to meet your specific requirements.
For a comprehensive example of how to use this MCP server with Claude, check out this chat session: Creating a Terraform Module with Facets MCP
This example demonstrates the complete workflow from module generation to testing and deployment.
For a detailed, real-world walkthrough of building a secure S3 bucket module with AI on the Facets platform, check out [GUIDE.md – Building Facets Modules with AI: A Practical Guide](./GUIDE.md)
This guide demonstrates the full conversation flow—requirements, design refinement, implementation review, validation, testing, and iteration—using a developer-focused example tailored for a banking use case.
This project is licensed under the MIT License. You are free to use, modify, and distribute it under its terms.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.