Cloudcraft Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Cloudcraft 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.
Model Context Protocol (MCP) server for Cloudcraft.co — list, read, export, and build cloud-architecture blueprints from Claude Desktop and other MCP clients.
Nine tools exposed to the MCP host:
| Tool | Description |
|---|---|
whoami | Return the Cloudcraft user profile for the configured key. |
list_blueprints | List every blueprint in the account. |
get_blueprint | Fetch a blueprint's full node / edge JSON. |
create_blueprint | Create a new blueprint from a JSON payload. |
update_blueprint | Replace an existing blueprint's payload. |
delete_blueprint | Delete a blueprint (irreversible). |
export_blueprint_image | Render a blueprint to PNG / SVG / PDF / mxgraph on disk. |
list_aws_accounts | List AWS accounts connected for live-scan snapshots. |
snapshot_aws | Take a live-scan snapshot of one AWS service. |
brew install uv)Clone the repo and let uv resolve dependencies on first run — no explicit install step required.
git clone https://github.com/hypark5540/cloudcraft-mcp.git
cd cloudcraft-mcp
export CLOUDCRAFT_API_KEY='your-key-here'
uv run cloudcraft-mcp # smoke test — Ctrl+C to exitEdit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent on your platform:
{
"mcpServers": {
"cloudcraft": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/cloudcraft-mcp",
"run",
"cloudcraft-mcp"
],
"env": {
"CLOUDCRAFT_API_KEY": "your-key-here"
}
}
}
}Restart Claude Desktop. The Developer tab should show cloudcraft as connected.
| Name | Required | Default | Purpose |
|---|---|---|---|
CLOUDCRAFT_API_KEY | yes | — | API key (Bearer). Generated in Cloudcraft User settings. |
CLOUDCRAFT_BASE_URL | no | https://api.cloudcraft.co | Override for proxies or future API versions. |
CLOUDCRAFT_LOG_LEVEL | no | WARNING | Stderr log verbosity (DEBUG / INFO / WARNING / ERROR). |
CLOUDCRAFT_EXPORT_DIR | no | system temp dir | Directory that export_blueprint_image may write under. |
Once the server is connected, ask Claude things like:
"List my Cloudcraft blueprints and summarize what each represents."
"Export blueprint `f0086b32-...` as PNG and save it to my Desktop."
"Take the architecture I just designed and create a new Cloudcraft blueprint called 'Prod 2026'."
"Snapshot the EC2 instances in `ap-northeast-2` for my connected AWS account."
create_blueprint / update_blueprint accept the full Cloudcraft data object. A minimal payload:
{
"grid": "infinite",
"projection": "isometric",
"theme": {"base": "light"},
"version": 6,
"nodes": [
{"id": "...", "type": "ec2", "mapPos": [3, 3], "region": "ap-northeast-2",
"instanceType": "m7g", "instanceSize": "large", "platform": "linux"},
{"id": "...", "type": "s3", "mapPos": [1, 8], "region": "ap-northeast-2",
"volumeType": "Standard", "dataGb": 100}
],
"edges": [
{"from": "...ec2-id...", "to": "...s3-id...", "type": "edge",
"width": 2, "dashed": false, "endCap": "arrow"}
],
"groups": [], "surfaces": [], "text": [], "icons": [],
"connectors": [], "images": [], "disabledLayers": [],
"shareDocs": false
}Refer to Cloudcraft's API docs for the full node-type catalog and service-specific fields.
uv sync --extra dev
uv run pytest # unit tests (no network)
uv run ruff check . # lint
uv run mypy src # type checkTests mock the HTTP layer with respx so no API key is required.
#### Coverage
CI uploads coverage.xml from the Python 3.12 matrix cell to Codecov. The project gate is 80% or higher — a PR that drops overall or patch coverage by more than 1 percentage point below that line fails the Codecov check (codecov.yml).
Run the same report locally:
uv run pytest --cov=cloudcraft_mcp --cov-report=term-missing --cov-report=xmlcloudcraft-mcp/
├── src/cloudcraft_mcp/
│ ├── __init__.py
│ ├── __main__.py # python -m cloudcraft_mcp
│ ├── server.py # MCP tool definitions (FastMCP)
│ ├── client.py # CloudcraftClient — async httpx wrapper
│ ├── types.py # TypedDicts for blueprint payloads
│ └── py.typed
├── tests/
│ └── test_client.py
├── server.py # back-compat shim -> cloudcraft_mcp.server:main
├── pyproject.toml
├── LICENSE
└── README.mdclient.py is a plain async HTTP client you can import from scripts or CLI tools without pulling the MCP runtime. server.py only owns the MCP tool surface.Authorization: Bearer <key> (not Apikey). The client sets this automatically.CLOUDCRAFT_API_KEY; never pass it on the command line.CloudcraftError with status and body preserved, re-wrapped as RuntimeError at the MCP boundary so Claude sees a readable message.create_blueprint, update_blueprint, or delete_blueprint; those calls rely on the MCP host's tool approval UX and the permissions on CLOUDCRAFT_API_KEY.delete_blueprint is irreversible — when asking Claude to delete, be explicit about the target id.export_blueprint_image writes are sandboxed under CLOUDCRAFT_EXPORT_DIR (system temp dir by default) and refuse to overwrite existing files unless overwrite=True.Issues and PRs welcome at <https://github.com/hypark5540/cloudcraft-mcp>. Please run ruff, mypy, and pytest before submitting.
MIT — see LICENSE.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.