Sign In

@aspicio/mcp

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aspicio/mcp - npm Package Compare versions

Comparing version
0.9.0
to
0.10.0
+34
-6
dist/index.mjs

@@ -9,3 +9,3 @@ #!/usr/bin/env node

//#region package.json
var version = "0.9.0";
var version = "0.10.0";
//#endregion

@@ -93,2 +93,26 @@ //#region src/tools.ts

const SOURCE_DESC = "An http(s) URL to a .dxf, a local file path, or inline DXF text.";
const DRAWING_SUMMARY_SHAPE = {
units: z.string().describe("Drawing-unit label (e.g. \"mm\"), \"\" when unitless"),
bounds: z.object({
minX: z.number(),
minY: z.number(),
maxX: z.number(),
maxY: z.number()
}).nullable().describe("World-space extents, null for an empty drawing"),
size: z.object({
width: z.number(),
height: z.number()
}).nullable().describe("Bounding-box size in drawing units, null when empty"),
entityCount: z.number().int(),
segmentCount: z.number().int(),
layers: z.array(z.object({
name: z.string(),
entityCount: z.number().int(),
visible: z.boolean(),
color: z.string().describe("The color actually drawn (dominant), as #rrggbb")
})),
entityTypes: z.record(z.string(), z.number()).describe("Top-level entities per DXF type"),
unsupported: z.record(z.string(), z.number()).describe("Per-type counts of skipped entities"),
texts: z.array(z.string()).describe("Unique TEXT/MTEXT strings, blocks included")
};
/** Build the Aspicio MCP server with the `describe_dxf` and `render_dxf` tools. */

@@ -114,9 +138,13 @@ function createServer() {

description: "Return a structured JSON summary of a DXF drawing — units, bounding box, layers (with the color actually drawn), per-type entity counts, and any skipped/unsupported types. Use this to answer structural questions (what layers exist, how many parts, what size, is it to scale) without rendering an image.",
inputSchema: { source: z.string().describe(SOURCE_DESC) }
inputSchema: { source: z.string().describe(SOURCE_DESC) },
outputSchema: DRAWING_SUMMARY_SHAPE
}, async ({ source }) => {
const summary = describeDxf(await loadDxf(source));
return { content: [{
type: "text",
text: JSON.stringify(summary, null, 2)
}] };
return {
content: [{
type: "text",
text: JSON.stringify(summary, null, 2)
}],
structuredContent: summary
};
});

@@ -123,0 +151,0 @@ server.registerTool("render_dxf", {

+2
-2
{
"name": "@aspicio/mcp",
"version": "0.9.0",
"version": "0.10.0",
"license": "MIT",

@@ -20,3 +20,3 @@ "author": "Dmitri Kochelorov <dmitri@frontsail.ai>",

"dependencies": {
"@aspicio/core": "^0.9.0",
"@aspicio/core": "^0.10.0",
"@modelcontextprotocol/sdk": "^1.29.0",

@@ -23,0 +23,0 @@ "@resvg/resvg-js": "^2.6.2",

@@ -6,3 +6,5 @@ # @aspicio/mcp

[Aspicio](https://github.com/frontsail-ai/aspicio#readme) viewer's headless
pipeline. Local stdio server, no hosted dependency.
pipeline. Local stdio server, no hosted dependency. A hosted endpoint and
docs live at [aspicio.frontsail.app/mcp](https://aspicio.frontsail.app/mcp/);
the interactive viewer at [aspicio.frontsail.app](https://aspicio.frontsail.app/).

@@ -9,0 +11,0 @@ ## Tools