# Diagrams MCP

> Generate cloud architecture diagrams, flowcharts, and sequence diagrams.

- name: io.github.mskry/diagrams-mcp-server
- version: 0.1.2
- connection class: unknown (unknown)
- trust: 49/100
- quality: 85/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.mskry%2Fdiagrams-mcp-server
- tools: https://api.protogrid.dev/v1/servers/io.github.mskry%2Fdiagrams-mcp-server/tools

**Not classified yet.** The remote endpoints have not been probed successfully, or the listing has nothing to connect to.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "diagrams-mcp-server": {
      "type": "http",
      "url": "https://diagrams-mcp-production.up.railway.app/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 0
- freshness: 45
- provenance: 65
- drivers: +repository -unreachable(11 failures) -stale-192d
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 85/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 79 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 9 of 9 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: list_providers (destructiveHint, openWorldHint); render_diagram (destructiveHint, idempotentHint, openWorldHint); list_nodes (destructiveHint, openWorldHint); …
- pass `tools.token_cost`: about 1,849 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: 100 (weight 15)

- pass `deps.known_vulns`: no known advisory in 79 resolved packages
- pass `deps.mcp_sdk_version`: mcp 1.30.0, no known advisory
- pass `deps.resolvable`: diagrams-mcp-server@0.1.2 resolved: 79 packages

- tools: 9, about 1,849 tokens to load them all
- tool set hash: d1f584bccb0fb9d93ab7b17f7ce15ce5
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.mskry/diagrams-mcp-server.svg)](https://protogrid.dev/servers/io.github.mskry/diagrams-mcp-server)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Dependencies

- pypi diagrams-mcp-server@0.1.2: resolved, 78 dependencies, MCP SDK mcp 1.30.0

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://diagrams-mcp-production.up.railway.app/mcp (streamable-http, auth none, reachable false, uptime30d 0.6451613)

## Packages

- pypi diagrams-mcp-server@0.1.2

## Tools (9)

- `find_equivalent`: Find cross-provider equivalents for a diagram node by infrastructure role.

Given a node name (e.g. 'EC2', 'Lambda', 'ComputeEngine'), returns the
infrastructure role category it belongs to and the equivalent nodes from
other providers.

If a node name is ambiguous, use list_categories to see all mapped roles
and pick a provider-specific node name.

Args:
    node: Node class name to look up (case-insensitive, e.g. 'EC2', 'lambda').
    target_provider: Optional provider to filter equivalents to
        (e.g. 'gcp', 'azure', 'aws').  If omitted, all equivalents
        across all other providers are returned.

Returns:
    A dict with keys:
        category (str): Infrastructure role category name.
        description (str): Human-readable description of the category.
        source (dict): The matched node with keys node, provider, service, import.
        equivalents (list[dict]): Equivalent nodes, each with keys
            node, provider, service, import.
- `list_categories`: List all infrastructure role categories with their mapped nodes.

Use this to browse all available equivalence mappings, or to disambiguate
node names when find_equivalent reports ambiguity.

Returns a list of category dicts, each with:
    category (str): Category identifier (e.g. 'virtual_machine').
    description (str): Human-readable description.
    providers (list[str]): Providers covered by this category.
    nodes (dict): Mapping of provider → list of node names in that category.
- `list_nodes`: List available node classes for a provider.service combo.

Args:
    provider: Provider name (e.g. 'aws', 'gcp', 'k8s').
    service: Service category (e.g. 'compute', 'database', 'network').

Returns:
    List of nodes with keys: name, import, alias_of (optional).
- `list_providers`: List all available diagram providers (aws, gcp, azure, k8s, onprem, etc.).

Use list_providers -> list_services -> list_nodes to browse available node types
for a specific provider.
- `list_services`: List service categories for a provider (e.g. 'aws' -> ['compute', 'database', ...]).

Args:
    provider: Provider name from list_providers (e.g. 'aws', 'gcp', 'k8s').
- `render_diagram`: Render a mingrammer/diagrams Python snippet to PNG and return the image.

The code must be a complete Python script using `from diagrams import ...` imports
and a `with Diagram(...)` context manager block.

Use search_nodes to verify node names and get correct import paths before writing code.
Read the diagrams://reference/diagram, diagrams://reference/edge, and
diagrams://reference/cluster resources for constructor options and usage examples.

Args:
    code: Full Python code using the diagrams library.
    filename: Output filename without extension.
    format: Output format — ``"png"`` (default), ``"svg"``, or ``"pdf"``.
    download_link: If True, return a temporary download URL path
                   (/images/{token}) that expires after 15 minutes; if
                   False, return inline image bytes. Defaults to True
                   (URL) — set ``DIAGRAMS_INLINE_DEFAULT=true`` on the
                   server to flip the default. SVG/PDF and PNGs larger
                   than the inline limit always use a download link.
- `render_mermaid`: Render a Mermaid diagram definition and return the image with metadata.

The definition should be valid Mermaid syntax (e.g. flowchart, sequence,
class, ER, state, or Gantt diagram).

Returns a list of content blocks: the rendered image plus a JSON text
block with metadata including a mermaid.live edit link for opening the
diagram in a browser editor.

Args:
    definition: Mermaid diagram definition text.
    filename: Output filename without extension.
    format: Output format — ``"png"`` (default), ``"svg"``, or ``"pdf"``.
    download_link: If True, return a temporary download URL path
                   (/images/{token}) that expires after 15 minutes; if
                   False, return inline image bytes. Defaults to True
                   (URL) — set ``DIAGRAMS_INLINE_DEFAULT=true`` on the
                   server to flip the default. SVG/PDF and PNGs larger
                   than the inline limit always use a download link.
- `render_plantuml`: Render a PlantUML diagram definition and return the image.

The definition should be valid PlantUML syntax wrapped in @startuml/@enduml
(sequence, class, component, activity, state, deployment, etc.).

Args:
    definition: PlantUML diagram definition text.
    filename: Output filename without extension.
    format: Output format — ``"png"`` (default) or ``"svg"``.
            PDF is not supported (requires Batik/FOP).
    download_link: If True, return a temporary download URL path
                   (/images/{token}) that expires after 15 minutes; if
                   False, return inline image bytes. Defaults to True
                   (URL) — set ``DIAGRAMS_INLINE_DEFAULT=true`` on the
                   server to flip the default. SVG and PNGs larger than
                   the inline limit always use a download link.
- `search_nodes`: Search for diagram nodes by keyword across all providers and services.

For targeted browsing when you know the provider, use list_providers -> list_services ->
list_nodes instead.

Args:
    query: Search term (case-insensitive substring match).

Returns:
    List of matching nodes with keys: node, provider, service, import, alias_of (optional).
    Sorted by relevance: exact match first, then prefix, then substring.
