Skip to main content
ClaudeWave

DXF viewer for the web and AI agents — TypeScript parse→tessellate→render engine with a WebGL viewer, React/Vue/Svelte/web-component bindings, HTTP API, MCP server, and an in-chat viewer for ChatGPT & Claude (MCP Apps)

MCP ServersOfficial Registry0 stars0 forksTypeScriptMITUpdated today
Install in Claude Code / Claude Desktop
Method: NPX · @aspicio/mcp
Claude Code CLI
claude mcp add aspicio -- npx -y @aspicio/mcp
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "aspicio": {
      "command": "npx",
      "args": ["-y", "@aspicio/mcp"]
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
Use cases

MCP Servers overview

<div align="center">
  <img src="apps/demo/public/favicon.svg" width="72" height="72" alt="Aspicio logo" />
  <h1>Aspicio</h1>
  <p><strong>DXF understanding for people, applications, and AI agents.</strong></p>
  <p><em>Aspicio</em> (Latin: "I look at")</p>
  <p>
    <a href="https://github.com/frontsail-ai/aspicio/actions/workflows/ci.yml"><img src="https://github.com/frontsail-ai/aspicio/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
    <a href="https://www.npmjs.com/package/@aspicio/core"><img src="https://img.shields.io/npm/v/%40aspicio%2Fcore?label=%40aspicio%2Fcore" alt="npm: @aspicio/core" /></a>
    <a href="https://www.npmjs.com/package/@aspicio/elements"><img src="https://img.shields.io/npm/v/%40aspicio%2Felements?label=%40aspicio%2Felements" alt="npm: @aspicio/elements" /></a>
    <a href="https://www.npmjs.com/package/@aspicio/react"><img src="https://img.shields.io/npm/v/%40aspicio%2Freact?label=%40aspicio%2Freact" alt="npm: @aspicio/react" /></a>
    <a href="https://www.npmjs.com/package/@aspicio/vue"><img src="https://img.shields.io/npm/v/%40aspicio%2Fvue?label=%40aspicio%2Fvue" alt="npm: @aspicio/vue" /></a>
    <a href="https://www.npmjs.com/package/@aspicio/svelte"><img src="https://img.shields.io/npm/v/%40aspicio%2Fsvelte?label=%40aspicio%2Fsvelte" alt="npm: @aspicio/svelte" /></a>
    <a href="https://www.npmjs.com/package/@aspicio/mcp"><img src="https://img.shields.io/npm/v/%40aspicio%2Fmcp?label=%40aspicio%2Fmcp" alt="npm: @aspicio/mcp" /></a>
    <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License: MIT" /></a>
  </p>
  <p><a href="https://aspicio.frontsail.app"><strong>▶ Live demo</strong></a></p>
</div>

Aspicio is an open-source (MIT), TypeScript-first DXF engine: one
framework-free `parse → tessellate` pipeline that runs in the browser, in
Node, and in Cloudflare Workers. A person gets an interactive WebGL viewer
of a CAD drawing; an AI agent gets structured JSON facts and a rendered
PNG of the same file. Every surface — the browser viewer, the web
components and their React, Vue, and Svelte bindings, the headless
renderer, the HTTP API, and the MCP server — is a thin adapter over the same engine,
so a drawing is equally readable everywhere.

```
DXF bytes ──parse──▶ DxfDocument ──tessellate──▶ Tessellation ──┬─▶ WebGL renderer (viewer)
              (normalized model)      (batched geometry)        ├─▶ SVG string (export / API / MCP)
                                                                └─▶ DrawingSummary (describe)
```

How it's built: [docs/architecture.md](docs/architecture.md) · behavior
specs: [docs/product-specs/](docs/product-specs/README.md)

<img src="docs/sample-demo.png" alt="Aspicio viewing a sample floor-plan DXF — layer panel, colored geometry, text, and a dimension" />

## Embed it

One embed, every flavor — and every path below renders the same web
components, so the result is pixel-identical no matter which you pick.

### Web components — plain HTML, any framework

One tag gives you the layer panel plus an interactive preview; no
bindings needed:

```html
<script type="module">
  import "@aspicio/elements";
</script>

<aspicio-embed src-url="/drawing.dxf" style="height: 480px"></aspicio-embed>
```

### React

The same embed with idiomatic props and a `ref` exposing the full
viewer, via [`@aspicio/react`](packages/react):

```tsx
import { DxfEmbed } from "@aspicio/react";

<DxfEmbed src={file} style={{ height: 480 }} />;
```

### Vue

Typed props and emits with unwrapped payloads, via
[`@aspicio/vue`](packages/vue):

```vue
<script setup>
import { DxfEmbed } from "@aspicio/vue";
</script>

<template>
  <DxfEmbed src-url="/drawing.dxf" style="height: 480px" />
</template>
```

### Svelte

The same components as raw Svelte 5 source with typed callback props,
via [`@aspicio/svelte`](packages/svelte):

```svelte
<script>
  import { DxfEmbed } from "@aspicio/svelte";
</script>

<DxfEmbed srcUrl="/drawing.dxf" style="height: 480px" />
```

### Vanilla TypeScript

Skip the ready-made UI and drive the viewer directly from
[`@aspicio/core`](packages/core) — bring your own chrome:

```ts
import { DxfViewer } from "@aspicio/core";

const viewer = new DxfViewer(document.querySelector("#preview")!);
await viewer.load(file); // File | Blob | ArrayBuffer | DXF text (ASCII or binary)
```

### Headless — Node and Workers

Parse, describe, and render with no browser at all (server-side
previews, thumbnails, pipelines):

```ts
import { parseDxfBytes, tessellate, describeDrawing, tessellationToSvg } from "@aspicio/core";

const doc = parseDxfBytes(bytes); // ASCII or binary DXF
const drawing = tessellate(doc);
const summary = describeDrawing(doc, drawing); // units, bounds, layers, texts…
const svg = tessellationToSvg(drawing);
```

What you get: WebGL rendering batched to one draw call per layer (large
drawings stay interactive), broad entity coverage (lines, arcs, circles,
ellipses, polylines with bulges, splines, TEXT/MTEXT, DIMENSION,
SOLID/HATCH fills, nested INSERT blocks — anything unsupported is counted
and reported, never fatal), a layer list with the colors that are
_actually drawn_ (per-entity overrides included, not just the layer
table), measure
with object snap, entity picking, paper-space layouts, SVG/PNG export,
and first-class touch. Out of scope: editing and 3D.

## Hand it to an agent

The same engine speaks MCP and HTTP, so an agent can _read_ a drawing
instead of guessing at it:

- **`describe_dxf`** — units, bounds, size, layers with effective colors,
  entity counts, and the drawing's text content. An agent reads a title
  block or a dimension value directly — no OCR, no vision round-trip.
- **`render_dxf`** — a PNG of the drawing the model can look at.
- **`view_dxf`** (hosted server) — an interactive in-chat viewer for the
  _person_ in the conversation, via the open [MCP Apps
  extension](https://modelcontextprotocol.io/seps/1865-mcp-apps-interactive-user-interfaces-for-mcp):
  pan, zoom, layer toggles, fullscreen, host light/dark theming. The
  widget is locked to the drawing the tool call delivered and makes no
  network requests; hosts without MCP Apps still get the structured
  facts.

<img src="docs/demo-widget.gif" alt="The in-chat viewer loading a 1.1 MB floor-plan DXF, toggling dimension and text layers, and expanding to fullscreen" />

| Surface                                      | Local files | URLs | Inline DXF |
| -------------------------------------------- | ----------- | ---- | ---------- |
| stdio MCP — `npx -y @aspicio/mcp`            | ✅          | ✅   | ✅         |
| Hosted MCP — `aspicio-api.frontsail.app/mcp` | —           | ✅   | ✅         |
| HTTP API — `/describe`, `/render`            | POST body   | ✅   | ✅         |

Connect:

- **Claude Code** — one step installs the MCP server plus the bundled
  skills (`aspicio-inspect-dxf`, `aspicio-embed`):
  `/plugin marketplace add frontsail-ai/aspicio` then `/plugin install aspicio@aspicio`
- **Codex** — the same repo doubles as a Codex marketplace:
  `codex plugin marketplace add https://github.com/frontsail-ai/aspicio`,
  `codex plugin add aspicio@aspicio`, then
  `codex mcp add aspicio -- npx -y @aspicio/mcp`
- **Any client that launches stdio MCP servers** — register
  `npx -y @aspicio/mcp`
- **Any client that supports remote MCP (Streamable HTTP)** — point it
  at `https://aspicio-api.frontsail.app/mcp` (no install;
  speaks MCP, not a browser page)
- **Plain HTTP** — `GET /describe?src=<dxf-url>`,
  `GET /render?src=<dxf-url>&format=png|svg`; the API self-describes at
  [`/openapi.json`](https://aspicio-api.frontsail.app/openapi.json)

URL fetches are guarded (private-network blocking, size caps, redirect
validation, timeouts). The stdio server reads local files in-process and
never uploads the DXF to any Aspicio service — though, as with any tool
result, your MCP client passes the returned summary or image to its
model provider. Full details:
[privacy policy](https://aspicio.frontsail.app/privacy/) ·
[terms](https://aspicio.frontsail.app/terms/).

## Available today · direction

Everything above is shipped and live: viewer + demo, core, web
components, React, Vue, and Svelte packages, headless describe/render, stdio and hosted MCP, the in-chat
MCP Apps viewer, the HTTP API with OpenAPI, and plugin packaging for
Claude Code and Codex.

Direction (intent, not commitments — see
[issues](https://github.com/frontsail-ai/aspicio/issues)): MCP registry
listings, structured entity queries and focused rendering, and an
upload flow so remote surfaces can handle local files.

## Packages

| Package                                  | Description                                                                                                         |
| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| [`@aspicio/core`](packages/core)         | The viewer library: parsing, tessellation, rendering, camera, input                                                 |
| [`@aspicio/elements`](packages/elements) | Web components: `<aspicio-embed>`, `<aspicio-preview>`, `<aspicio-layer-panel>` — plain HTML, Svelte, any framework |
| [`@aspicio/react`](packages/react)       | React bindings: `<DxfEmbed>`, `<DxfPreview>`, `<DxfLayerPanel>`                                                     |
| [`@aspicio/vue`](packages/vue)           | Vue 3 bindings: the same three components with typed props and emits                                                |
| [`@aspicio/svelte`](packages/svelte)     | Svelte 5 bindings: the same three components as raw .svelte source                                                  |
| [`@aspicio/mcp`](packages/mcp)           | MCP server for AI agents: `describe_dxf` + `render_dxf`                                                             |
| [`@aspicio/api`](apps/api)               | DXF HTTP API server (privat
ai-agentsautocadcadchatgptclaudecloudflare-workersdxfdxf-parserdxf-viewermcpmcp-appsmcp-servermodel-context-protocolreactthreejstypescriptwebgl

What people ask about aspicio

What is frontsail-ai/aspicio?

+

frontsail-ai/aspicio is mcp servers for the Claude AI ecosystem. DXF viewer for the web and AI agents — TypeScript parse→tessellate→render engine with a WebGL viewer, React/Vue/Svelte/web-component bindings, HTTP API, MCP server, and an in-chat viewer for ChatGPT & Claude (MCP Apps) It has 0 GitHub stars and was last updated today.

How do I install aspicio?

+

You can install aspicio by cloning the repository (https://github.com/frontsail-ai/aspicio) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.

Is frontsail-ai/aspicio safe to use?

+

frontsail-ai/aspicio has not been audited yet by our security agent. Review the original repository on GitHub before using it in production.

Who maintains frontsail-ai/aspicio?

+

frontsail-ai/aspicio is maintained by frontsail-ai. The last recorded GitHub activity is from today, with 17 open issues.

Are there alternatives to aspicio?

+

Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.

Deploy aspicio to your cloud

Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.

Maintain this repo? Add a badge to your README

Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.

Featured on ClaudeWave: frontsail-ai/aspicio
[![Featured on ClaudeWave](https://claudewave.com/api/badge/frontsail-ai-aspicio)](https://claudewave.com/repo/frontsail-ai-aspicio)
<a href="https://claudewave.com/repo/frontsail-ai-aspicio"><img src="https://claudewave.com/api/badge/frontsail-ai-aspicio" alt="Featured on ClaudeWave: frontsail-ai/aspicio" width="320" height="64" /></a>

More MCP Servers

aspicio alternatives