# io.github.ChanMeng666/archlang-mcp (npm · @chanmeng666/archlang-mcp)

Compile, describe, lint, validate, score and repair multi-storey and curved ArchLang floor plans.

- Trust score: 82/100 (high trust)
- Change this week: +47
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `@chanmeng666/archlang-mcp`: 82/100 (this document), [markdown](https://verifymcp.io/servers/chanmeng666-archlang-mcp/chanmeng666-archlang-mcp.md), [page](https://verifymcp.io/servers/chanmeng666-archlang-mcp/chanmeng666-archlang-mcp)

## Channel facts

- Registry: `npm`
- Package: `@chanmeng666/archlang-mcp`
- Version: `0.2.3`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 88/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (172 of 173), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (172 of 173), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to ChanMeng666/archlang).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 7 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 88/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 1409 tokens (~100/item across 14 items; 9 tools + 5 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add chanmeng666-archlang-mcp -- npx -y @chanmeng666/archlang-mcp
```

### Codex

```bash
codex mcp add chanmeng666-archlang-mcp -- npx -y @chanmeng666/archlang-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "chanmeng666-archlang-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@chanmeng666/archlang-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add chanmeng666-archlang-mcp --command npx --arg -y --arg @chanmeng666/archlang-mcp
```

### Hermes

```yaml
mcp_servers:
  chanmeng666-archlang-mcp:
    command: "npx"
    args: ["-y", "@chanmeng666/archlang-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "chanmeng666-archlang-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@chanmeng666/archlang-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 82, +77)

- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Provenance: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security] The attested source repository moved: ChanMeng666/archlang
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Stability: unverified → 0.23
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Schema quality: unverified → 100
- [functional] Licence: MIT

### 2026-08-01 (score 5, −21)

- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified

### 2026-07-31 (score 26, −9)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-27 (score 35)

First indexed and scored.

## MCP tools (9)

### `compile` (~286 tokens)

Compile ArchLang → SVG or ASCII

Compile ArchLang `.arch` source (or a Plan-JSON object) to an SVG floor plan, or to a zero-dependency ASCII text plan (format:"txt"). Returns the rendered output plus diagnostics — each a byte span, line/col, catalogued E_/W_ code, and a machine-applicable fix. Errors are DATA, never exceptions: read `diagnostics` and correct the source. A MULTI-STOREY plan (`level <n> { … }`) is a set of drawings: `output` is the lowest storey and every storey comes back in `pages[]` ({ level, name, output }), so pass `level` to render just one.

Input parameters:

- `accessible` (boolean): Emit <title>/<desc>/role/aria accessibility metadata (SVG only).
- `format` (string): svg (default) or txt (zero-dependency ASCII).
- `level` (integer): Render only this storey of a multi-storey plan. An undeclared level is an error, not a guess.
- `overlay` (string): Draw an opt-in circulation overlay (SVG only).
- `plan_json` (object): Plan JSON (RPLAN shape) as an alternative to `source`; converted to .arch then compiled.
- `source` (string): ArchLang source (a `plan "…" { … }`). Provide this OR plan_json.

### `describe` (~165 tokens)

Describe a plan (facts, no render)

Semantic facts about a plan without rendering: rooms (areas, bboxes, adjacency, uses, and the exact shape — `floor_polygon` for a `room polygon`, `floor_circle` for a `room circle`, whose area is exact πR²), doors (what they connect), windows, circulation (walk distance / bottleneck width / detour), zones, storeys (`levels[i]` carries the same facts per floor) with the shafts that join them and which storeys stay reachable (`vertical`), the drawing extent (`bbox`, `bbox_outer`), `freedom` (which positions are hand-authored vs resolver-derived), and totals. The channel a text-only agent uses to VERIFY that a plan matches intent.

Input parameters:

- `source` (string, required): ArchLang source.

### `lint` (~97 tokens)

Lint architectural soundness

Advisory `W_*` soundness warnings as data: unreachable room, windowless bedroom, too-narrow door, blocked doorway, furniture through a wall, circuitous path, and more. `profile` selects a ruleset (e.g. "residential-basic", "accessibility-advisory").

Input parameters:

- `profile` (string): Advisory ruleset name (default: the built-in ruleset).
- `source` (string, required): ArchLang source.

### `validate` (~213 tokens)

Validate (parse + resolve + lint)

The ship gate: parse + resolve + lint in one pass, no render. `strict:true` makes advisory warnings fail too. Optional `graph` checks the plan's interior-door adjacency against an intended room graph (`{ room: [neighbours] }`); a mismatch fails. Optional `intent` (a brief's expectations per /intent.schema.json) is checked against the plan — a failing GATING assertion (room count / existence / area / total-area / windows) fails validate, while adjacency and reachability are advisory and only score. A malformed intent returns `{ ok:false, intentErrors }` (data, never a throw). Returns { ok, diagnostics, graph?, intent? }.

Input parameters:

- `graph` (object): Intended interior-door adjacency: { room: [neighbour rooms] }.
- `intent` (object): A brief's intent JSON (per /intent.schema.json); gating assertions fail validate.
- `source` (string, required): ArchLang source.
- `strict` (boolean): Advisory warnings fail too.

### `score` (~147 tokens)

Score a plan against a brief (intent meter)

The continuous intent-satisfaction METER: check a brief's intent JSON (per /intent.schema.json) against a plan and report how much it satisfies. Returns { ok, satisfied, total, score, subscores, violations } where `score` is satisfied/total in [0,1] (an empty intent scores 1). It MEASURES, it never gates — so you can watch a plan approach the brief across edits. A malformed intent returns `{ ok:false, intentErrors }` (data, never a throw).

Input parameters:

- `brief` (object, required): A brief's intent JSON (per /intent.schema.json) to measure against.
- `source` (string, required): ArchLang source.

### `repair` (~89 tokens)

Repair furniture placement

The explicit source-to-source corrector (ADR 0006): push furniture out of walls / doorways / swing arcs, separate overlaps, relocate wrong-room fixtures, snap floating pieces to walls. Returns corrected `.arch` source + a change log. It NEVER adds doors or windows — that is a design choice; use `suggest` for topology.

Input parameters:

- `source` (string, required): ArchLang source to correct.

### `fix` (~134 tokens)

Apply machine-applicable diagnostic fixes

Apply the machine-applicable fixes a compile attaches to its diagnostics — the SYNTACTIC corrector (off-wall openings → the attachment form, out-of-range positions clamped, …), distinct from `repair`'s geometric solver. Bounded fixpoint (≤4 passes; a pass that raises the error count is rolled back). `unsafe:true` also applies `maybe-incorrect` fixes. Returns { ok, passes, applied, skipped, source }.

Input parameters:

- `source` (string, required): ArchLang source to fix.
- `unsafe` (boolean): Also apply `maybe-incorrect` fixes (default: machine-applicable only).

### `suggest` (~92 tokens)

Suggest topology fixes (advisory)

Advisory topology suggestions as DATA — never applied (ADR 0005). For a room with no path back, a building with no entrance, a bath reachable only through a bedroom, or a windowless bedroom, returns ready-to-paste `door`/`window` statements (attachment form, furniture-aware) plus a rationale, for the agent to choose among and insert.

Input parameters:

- `source` (string, required): ArchLang source.

### `complete` (~65 tokens)

Completions at a source offset

Completion items in scope at a source BYTE offset (the LSP `completion()` core): keywords, element names, ids, enum values — for structured or assisted authoring.

Input parameters:

- `at` (integer, required): Source byte offset to complete at.
- `source` (string, required): ArchLang source.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/chanmeng666-archlang-mcp/chanmeng666-archlang-mcp#diagnostics

## Score history

- 2026-08-03: 82
- 2026-08-02: 82
- 2026-08-01: 5
- 2026-07-31: 26
- 2026-07-30: 35
- 2026-07-28: 35
- 2026-07-27: 35

## Links

- npm package: https://www.npmjs.com/package/@chanmeng666/archlang-mcp
- Socket report: https://socket.dev/npm/package/@chanmeng666/archlang-mcp
- Repository: https://github.com/ChanMeng666/archlang
- Website: https://archlang.uk/
- Changelog RSS feed: https://verifymcp.io/servers/chanmeng666-archlang-mcp/chanmeng666-archlang-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/chanmeng666-archlang-mcp/chanmeng666-archlang-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/chanmeng666-archlang-mcp/chanmeng666-archlang-mcp
