archlang-mcp
Server Details
Floor plans as code: compile, lint and repair ArchLang (.arch) floor plans to SVG, DXF and PDF.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- ChanMeng666/archlang
- GitHub Stars
- 34
- Server Listing
- ArchLang
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 12 tools
Most tools target clearly different stages of one authoring loop (compile, describe, lint, suggest, finish, link), and the descriptions explicitly draw the subtle lines (fix = source-level faults, repair = furniture geometry, validate = gate without a drawing). The remaining friction is between validate, lint and compile, which all surface diagnostics of overlapping kinds, so an agent may occasionally pick the wrong entry point.
Eleven of twelve names are single lowercase verbs (compile, complete, describe, finish, fix, link, lint, repair, score, suggest, validate), which is predictable and readable. read_me is the one deviation, named like a document rather than an action, but the set is otherwise free of mixed conventions.
Twelve tools is squarely in the healthy range for a compiler-style domain: each maps to a distinct step (compile, inspect, diagnose, auto-fix, furnish, score, share) rather than restating the same operation. None looks like filler, and none of the pipeline stages is split across redundant tools.
The authoring lifecycle is well covered end to end: compile/render, completion, structural inspection, lint and validation gates, two tiers of automatic correction, furnishing/finish, door and window suggestions, intent scoring, and shareable links. Gaps are minor and mostly external (png rendering unavailable on the hosted server, no export to CAD/PDF, no pretty-printer), which agents can route around.
Available Tools
12 toolscompileCompile a floor plan to a drawingARead-onlyIdempotentInspect
Compile ArchLang .arch source (or a Plan-JSON object) to an SVG floor plan, or with format to a plain-text ASCII plan ("txt"), Plan JSON ("json") or an image ("png"). Format "json" returns the plan as an object, with schema naming its JSON Schema; passed back as plan_json it compiles to the same drawing, unless the plan uses a part of the language Plan JSON does not carry (sheet tables, styles, circular rooms, roofs, storeys, place, accessibility metadata). Returns the output plus diagnostics; a diagnostic usually carries a byte span with line/col and an E_/W_ code, and often a fix, sometimes one the fix tool can apply. Errors come back as data, never as exceptions: read diagnostics and correct the source. A multi-storey plan (level <n> { … }) returns the lowest storey in output and every storey in pages[] ({ level, name, output }); pass level to render just one. format "png" is unavailable on the hosted server, which has no image renderer: use format "svg", or GET /svg/ on this server for an image URL.
Inputs: level, width, format, source, +3 more.
completeCompletions at a source offsetARead-onlyIdempotentInspect
List the completion items in scope at a source byte offset: keywords, element names, ids and enum values, the same items an editor's language server offers. For structured or assisted authoring.
Inputs: at (required), source (required).
describeDescribe a plan (facts, no render)ARead-onlyIdempotentInspect
Report a plan's facts without rendering, so you can check it against the brief without looking at an image. Returns rooms (area, bbox, adjacency, use, and the exact shape: floor_polygon for a room polygon, floor_circle for a room circle, whose area is exactly πR²), doors (what each connects), 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 and which are derived), and totals.
Inputs: source (required).
finishFinish the drawingARead-onlyIdempotentInspect
Complete a plan for export by adding what it lacks; run it once lint is clean. Two stages. furnish puts furniture, by room use, in each rectangular room that holds none, on every storey (a furnished room is never touched, and one that lacks a piece its use requires is named in unresolved with the missing pieces, not filled; placement is against wall / in <room> anchor, never absolute). sheet adds the sheet statements the plan lacks (paper, scale, dims auto, title, schedule rooms, legend), choosing the finest standard scale on the smallest sheet that holds the drawing. It fills only what is missing and deletes nothing; only runs one stage; reissue:true may replace paper/scale (only those) when the drawing does not fit them. Returns { ok, changed, changes, unresolved, source }; a plan that does not compile comes back untouched with ok:false, and every room left empty (its use has no furniture row or is unknown, or furnishing it would raise a new diagnostic) and every sheet statement left out is named in unresolved with the reason; a note with scope set (outside-table) asks nothing of you unless that room should hold furniture.
Inputs: source (required), only, reissue.
fixApply machine-applicable diagnostic fixesARead-onlyIdempotentInspect
Apply the machine-applicable fixes attached to a plan's compile diagnostics and return the edited source. It corrects source-level faults (an opening off its wall becomes the attachment form, an out-of-range position is clamped, …); furniture geometry is repair's job. It runs at most 4 passes and rolls back a pass that raises the error count. unsafe:true also applies maybe-incorrect fixes. Returns { ok, passes, applied, skipped, source }.
Inputs: source (required), unsafe.
linkShare link to the rendered planARead-onlyIdempotentInspect
Make two URLs that show a plan in the browser with nothing to install, for handing to a person. playground opens it in the hosted editor, rendered; embed draws it alone, for an iframe. The plan travels inside the URL, after the #, so it is never sent to a server and the URL carries nothing else. A plan that does not compile still gets links, and the page shows its diagnostics; ok says whether it compiles, and errors counts the errors when it does not. bytes is the size of the compressed plan in the URL.
Inputs: source (required).
lintLint architectural soundnessARead-onlyIdempotentInspect
List advisory architectural-soundness warnings (W_* codes) as data: unreachable room, windowless bedroom, too-narrow door, blocked doorway, furniture through a wall, circuitous path, and more. profile selects a ruleset ("residential-basic", "accessibility-advisory", …).
Inputs: source (required), profile.
read_meHow to use this serverARead-onlyIdempotentInspect
Explain this hosted ArchLang server in one short page: the authoring loop, the size cap, what is unavailable here, how to get an image URL for a plan, and what the server keeps (nothing). Call it first when unsure.
Inputs: no named parameters.
repairRepair furniture placementARead-onlyIdempotentInspect
Correct furniture placement and return the corrected .arch source with a change log. It pushes furniture out of walls, doorways and door swings, separates overlapping pieces, moves fixtures that sit in the wrong room, and snaps floating pieces to walls. A piece it may not rewrite is listed in unresolved with the reason. It never adds doors or windows (that is a design choice); use suggest for those.
Inputs: source (required).
scoreScore a plan against a brief (intent meter)ARead-onlyIdempotentInspect
Measure how much of a brief's intent JSON a plan satisfies, without gating. Returns { ok, satisfied, total, score, subscores, violations }, where score is satisfied/total in [0,1] (an empty intent scores 1); call it across edits to watch a plan approach the brief. The intent's shape is the archlang://intent-schema resource. A malformed intent returns { ok:false, intentErrors } as data, never an exception.
Inputs: brief (required), source (required).
suggestSuggest topology fixes (advisory)ARead-onlyIdempotentInspect
Suggest the doors and windows a plan's room graph needs, as data; nothing is applied. For a room with no path back, a building with no entrance, a bath reachable only through a bedroom, or a windowless bedroom, it returns ready-to-paste door/window statements with a rationale, for you to choose among and insert. Each names its wall by an authored id or a unique wall category, else by absolute at (x, y) coordinates. Door candidates avoid furniture in the door's approach; window candidates do not consider furniture.
Inputs: source (required).
validateValidate (parse + resolve + lint)ARead-onlyIdempotentInspect
Check a plan in one pass without returning a drawing (parse, resolve and lint): the gate a plan passes before it ships. 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, shaped as the archlang://intent-schema resource describes) is checked against the plan: a missed gating assertion (room count, existence, area, total area, windows) fails, while adjacency and reachability are advisory and only score. A malformed intent returns { ok:false, intentErrors } as data, never an exception. Returns { ok, diagnostics, graph?, intent? }.
Inputs: source (required), graph, intent, strict.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Write, check and render parametric laser-cutting designs in KerfScript, as SVG or DXF.
Floor plans in real mm: doors, windows, fixtures; validate, render, elevations, sections, storeys.
Draw buildings as DXF, IFC and 3D, plus exact French rent and charges calculations.
Headless CAD engine & MCP server for 2D/3D drafting, solids, DXF/SVG export, and automation.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceFloor plans, elevations and sections for agents. Draw a room in real millimetres, place doors, windows and tables, validate with typed errors, render deterministic SVG. Free key, no approval.-
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to automate 2D architectural drafting and CAD file management, including DXF/DWG parsing, SVG/PNG/PDF rendering, wall extrusion to 3D STL meshes, room and beam analysis, block/script library access, and persistent depot storage via a REST API and MCP tools.18MIT
- AlicenseBqualityBmaintenanceDeclarative BIM and Building-as-Code engine for AI agents: model buildings in YAML, compute deterministic QTO and cost estimations, compile to IFC4, and view interactive 3D WebGL models.7MIT
- AlicenseNot gradedqualityCmaintenanceConverts architectural PDF plans into dimension-verified millimetre geometry, IFC models, and CPU-rendered views, with built-in validation for boundaries, areas, and overlaps.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.