Skip to main content
Glama
spikeon

negative-support-mcp

by spikeon

@spikeonstudio/negative-support-mcp

MCP server for negative.support — generate negative-space print supports (STL/OBJ/STEP) via the official negative-support package. Full API details: negative.support/docs.

Requirements

  • Node.js 18+

  • A negative.support token (ns_live_…) from negative.support after sign-in

For a local clone, you can put NEGATIVE_SUPPORT_TOKEN=… in a .env file next to package.json (see .env.example). The server loads it via dotenv when the process working directory is that folder. Do not commit .env — it is listed in .gitignore.

Related MCP server: Pixal3D-MCP

MCP configuration

Use npx — no clone or local npm install required. Set NEGATIVE_SUPPORT_TOKEN, or omit it and call negative_support_activate once per session.

npx normally runs with another cwd, so prefer env in the MCP JSON for Cursor; use .env when you run npm run dev / npm start from this repo.

npm (default)

{
  "mcpServers": {
    "negative-support": {
      "command": "npx",
      "args": ["-y", "@spikeonstudio/negative-support-mcp"],
      "env": {
        "NEGATIVE_SUPPORT_TOKEN": "ns_live_..."
      }
    }
  }
}

From GitHub (same binary name as in package.json bin):

{
  "mcpServers": {
    "negative-support": {
      "command": "npx",
      "args": ["-y", "--package=github:spikeon/negative-support-mcp", "negative-support-mcp"],
      "env": {
        "NEGATIVE_SUPPORT_TOKEN": "ns_live_..."
      }
    }
  }
}

On Windows, if npx is missing, use "command": "npx.cmd" with the same args.

Tools

Tool

Description

negative_support_activate

Activate your license for this process.

negative_support_deactivate

Clear the local session (token not revoked on the server).

negative_support_generate

Build supports from a local STL/OBJ/STEP/STP; writes *_supports.stl and optional .3mf.

negative_support_generate: input_path (absolute, on the host running the MCP) is required. Optional: output_stl_path, output_3mf_path, format, margin, angle, min_volume, skip_merge — see negative.support/docs.

Resource: negative-support://docs — short in-server summary.

Timeouts

Generation can take several minutes on large meshes. Many MCP clients use a default tool timeout (often around 60s) unless the call stays “active.” This server emits MCP notifications/progress when the client sends a progressToken with the tool request (about every 15s plus throttled updates from the library), which usually refreshes that timeout.

If a host still cuts you off, use the negative-support CLI for huge models, or raise the tool-timeout in your client if it exposes one.

Development

git clone https://github.com/spikeon/negative-support-mcp.git
cd negative-support-mcp
npm install
npm run build   # or: npm run dev

The server uses stdio; it is started by the MCP host, not run interactively.

Publishing (maintainers)

Pushing to main does not publish. .github/workflows/publish-npm.yml runs npm publish --access public when a v* tag is pushed.

  1. Add repository secret NPM_TOKEN (npm access token with publish rights for @spikeonstudio/*).

  2. Bump version in package.json (each publish must be a new version).

  3. git tag vX.Y.Z && git push origin vX.Y.Z

prepublishOnly runs npm run build. dist/ is committed so GitHub-based npx installs work without a local TypeScript build.

License

MIT. Not affiliated with negative.support; integrates their published npm package and licensing.

Available Tools

3 tools
negative_support_activateA

Activate a negative.support license for this MCP process. Same ns_live_* token as the CLI. Alternatively set env NEGATIVE_SUPPORT_TOKEN.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYesLicense token from https://negative.support/ (user menu after sign-in)

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
messageYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It mentions the token source and process scope, which adds useful context. However, it does not disclose side effects such as whether activation is persistent, overwrites a previous license, or requires a restart. This is a gap for a state-changing operation, but the information provided is at least minimally adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action. No redundant or filler content. Every sentence adds meaningful information: what the tool does, how to get the token, and an env var alternative. Highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with an output schema, the description is largely complete. It covers the action, token format, and env var alternative. However, it does not mention whether activation affects other tools or the process lifetime, leaving a minor gap. Given the simplicity of the tool, this is sufficient but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides a description for the token parameter (100% coverage). The description adds value by explaining the token format ('ns_live_*'), the source (same as CLI), and an alternative mechanism (env var) that may override or replace the parameter. This goes beyond the schema's simple 'License token' description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (activate), the resource (negative.support license), and the scope (for this MCP process). It distinguishes itself from siblings like 'negative_support_deactivate' by indicating the opposite action, and from 'negative_support_generate' by focusing on activation of an existing license.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete context for use, such as 'Same ns_live_* token as the CLI' and the alternative env var NEGATIVE_SUPPORT_TOKEN. While it doesn't explicitly state when not to use or name alternatives, the sibling tools (deactivate/generate) make the intended use clear. It lacks explicit exclusion criteria but provides practical usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

negative_support_deactivateA

Clear the active license in this process (does not revoke the token on the server).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
messageYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden for transparency. It discloses the key behavioral limitation (no server-side token revocation) and the local process scope, which is sufficient for this simple, zero-parameter tool. It does not discuss reversibility or permissions, but these are less critical given the tool's simplicity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence with the main action front-loaded and the critical caveat in parentheses. Every word earns its place, with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, output schema exists), the description fully covers what the tool does and its most important non-effect. It is complete enough for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema coverage is trivially complete. According to the baseline for 0 params, the description does not need to add parameter information. It adds no param semantics but also does not need to.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Clear') and resource ('active license') with a scope ('in this process'), and the clarifying parenthetical distinguishes it from server-level revocation. This clearly differentiates it from sibling tools like activate or generate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about what the tool does and explicitly notes it does not revoke the token on the server, which helps the agent decide when to use it. However, it does not explicitly name alternative tools or state when not to use it beyond the caveat.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

negative_support_generateA

Generate support STL (and optionally 3MF with model + support pieces) from a local STL, OBJ, STEP, or STP file. Requires an activated license. Heavy meshes can take many minutes; MCP hosts that send a progressToken receive keepalive progress and avoid tool timeouts.

ParametersJSON Schema
NameRequiredDescriptionDefault
angleNoOverhang angle threshold in degrees (default 45)
formatNoFile format; default: inferred from extension
marginNoGap between supports and model in mm (default 0.2)
input_pathYesAbsolute path to the model file on the machine running this MCP server
min_volumeNoMinimum support piece volume in mm³ (default 1.0)
skip_mergeNoIf true, skip merging pieces (OOM fallback)
output_3mf_pathNoIf set, also writes a 3MF containing the model and support objects
output_stl_pathNoWhere to write the supports STL (default: <basename>_supports.stl next to input)

Output Schema

ParametersJSON Schema
NameRequiredDescription
statsYes
progressNo
output_3mf_pathNo
output_stl_pathYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It discloses the license requirement, long-running behavior, and progress token support to avoid timeouts. It does not detail error conditions or file write side effects, but the core behavioral traits are covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary purpose and followed by critical usage context. Every sentence adds value with no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose, license prerequisite, performance expectations, and output types. Given the 8 parameters and the presence of an output schema, it does not need to explain return values. It could mention error handling for missing license, but for a complex tool it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all 8 parameters, so the baseline is 3. The description adds minimal extra semantics beyond the schema, only clarifying that the 3MF includes model and support pieces, which matches the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: generate support STL (and optionally 3MF) from local model files. It specifies the input formats and distinguishes itself from the sibling activation/deactivation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description notes that an activated license is required, which implicitly tells the agent to use 'negative_support_activate' first. It also provides guidance on heavy meshes and progress tokens, but it does not explicitly mention when not to use the tool or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv1.0.4
    • First observednegative_support_activate
    • First observednegative_support_deactivate
    • First observednegative_support_generate

TDQS

A4.5/5.0
Disambiguation5/5

Each tool targets a distinct operation: activation, deactivation, and generation. There is no overlap or ambiguity between them.

Naming Consistency5/5

All tool names follow the same pattern: 'negative_support_' prefix plus a clear verb (activate, deactivate, generate). The convention is consistent and predictable.

Tool Count5/5

With 3 tools, the set is tightly scoped to the server's purpose of license management and STL generation. Each tool earns its place with no redundancy.

Completeness5/5

The core lifecycle is covered: activate a license, deactivate it, and generate output. No obvious missing operations for the stated domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/spikeon/negative-support-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server