Metadata-Version: 2.4
Name: scp-diagram-mcp-server
Version: 1.1.2
Summary: MCP server for SCP architecture diagrams, Terraform reference docs, and scpv2 resource provisioning
Author: Samsung SDS Corp.
License: Apache-2.0
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10
Requires-Dist: bandit>=1.7.5
Requires-Dist: diagrams>=0.24.4
Requires-Dist: mcp[cli]>=1.6.0
Requires-Dist: pydantic>=2.10.6
Requires-Dist: scpv2-sdk>=0.2.1
Description-Content-Type: text/markdown

# SCP Diagram MCP Server

An MCP server that generates SCP (Samsung Cloud Platform) architecture diagrams and
Terraform IaC reference code using the Python [`diagrams`](https://diagrams.mingrammer.com/)
package.

## Features

- Generate professional SCP architecture diagrams
- Support for multiple diagram types (SCP, sequence, flow, class, k8s, onprem, custom)
- List available SCP icons and services
- Get diagram examples and templates
- Query SCP Terraform provider documentation (resources, data-sources)

The SCP icon provider is bundled inside this package, so no post-install icon
generation step is required.

## Prerequisites

Two things must be available on the machine that runs the MCP client:

1. **[uv](https://docs.astral.sh/uv/)** — used to download and run the server.
   - Windows: `irm https://astral.sh/uv/install.ps1 | iex`
   - macOS/Linux: `curl -LsSf https://astral.sh/uv/install.sh | sh`
2. **[Graphviz](https://graphviz.org/download/)** — the `diagrams` package shells out
   to the Graphviz `dot` executable to render PNGs. It is a native program and must be
   installed separately and available on `PATH`.
   - Windows: install from graphviz.org (or `winget install Graphviz.Graphviz`) and
     ensure the `bin` directory is on `PATH`
   - macOS: `brew install graphviz`
   - Linux (Debian/Ubuntu): `sudo apt-get install graphviz`

`uvx` installs the Python dependencies (`diagrams`, `mcp`, `pydantic`, `bandit`)
automatically; you do not need to `pip install` anything yourself.

## Usage

### Register with an MCP client

Once the package is published, add it to your MCP client configuration. `uvx`
downloads and runs it on demand — no manual install:

```json
{
  "mcpServers": {
    "scp-diagram": {
      "command": "uvx",
      "args": ["scp-diagram-mcp-server"]
    }
  }
}
```

### Run locally from source (development)

```bash
uv run python -m scp_diagram_mcp_server.server
```

## Tools

| Tool | Purpose |
|------|---------|
| `list_icons` | Discover available providers/services/icons (use `provider_filter="scp"`) |
| `get_diagram_examples` | Get example diagram code by type |
| `generate_diagram` | Render a PNG from `diagrams` DSL code |
| `list_terraform_resources` | List SCP Terraform resource/data-source types |
| `get_terraform_examples` | Get example HCL + attribute schema for SCP resources |
| `scp_list_services` | List SCP services available through the `scpv2` SDK |
| `scp_describe_operation` | Show an operation's parameters (e.g. `create_vpc`) |
| `scp_list_resources` | Read SCP resources (`list_/show_/get_/describe_`) — always allowed |
| `scp_create_resource` | Create a real SCP resource — **write, opt-in** |
| `scp_delete_resource` | Delete a real SCP resource — **write, opt-in + `confirm`** |

## Provisioning real SCP resources (scpv2 SDK)

The `scp_*` tools create and delete **real, billable** cloud resources via the
[`scpv2`](https://pypi.org/project/scpv2-sdk/) SDK, so they are guarded:

- **Read** (`scp_list_resources`, `scp_list_services`, `scp_describe_operation`) is always allowed.
- **Create/Delete** only run when the server environment has `SCP_MCP_ALLOW_WRITE=1`.
- **Delete** additionally requires `confirm=true` on the call.

Credentials follow the SDK's discovery order — `SCP_ACCESS_KEY` / `SCP_SECRET_KEY`
environment variables, or `~/.scp/credential.json`. The API endpoint host is
`{api}.{region}.{environment}.samsungsdscloud.com`, so both **region** (`region`
arg or `SCP_REGION`, default `kr-west1`) and **environment** (`environment` arg or
`SCP_ENVIRONMENT`, e.g. `e` or `s`, default `e`) must match your account.

**Behind a corporate SSL-inspection proxy?** If SCP API calls fail with TLS
certificate verification errors, set `SCP_NO_PROXY=1` (or pass `no_proxy=true`) so
the SDK bypasses the proxy and verifies against the real SCP server certificate.

To enable writes, set the env in your MCP client config, e.g.:

```json
{
  "mcpServers": {
    "scp-diagram": {
      "command": "uvx",
      "args": ["scp-diagram-mcp-server"],
      "env": {
        "SCP_MCP_ALLOW_WRITE": "1",
        "SCP_REGION": "kr-west1",
        "SCP_ENVIRONMENT": "e",
        "SCP_NO_PROXY": "1",
        "SCP_ACCESS_KEY": "...",
        "SCP_SECRET_KEY": "..."
      }
    }
  }
}
```

## Regenerating the bundled SCP provider

The provider under `scp_diagram_mcp_server/scp/` is generated from the SCP icon
asset package and committed to the repo. Only re-run this when the icons change:

```bash
python scripts/generate_scp_provider.py [icon_source_dir]
```

## License

Apache-2.0
