Skip to main content
Glama
marctheshark3

bambu-p1s-mcp

bambu-p1s-mcp

Harness-agnostic MCP server for a Bambu Lab P1S on the local network.

Any MCP client can use it: Hermes, Grok, Claude Code, Cursor. The server speaks stdio (local subprocess) and Streamable HTTP (remote harness).

It does not talk to Bambu Cloud. It talks to the printer:

  • MQTT over TLS, port 8883 — status and print commands

  • Implicit FTPS, port 990 — list / upload files

  • Optional Bambu Studio CLI — slice STL/3MF to a printable .gcode.3mf

Where to run it

The MCP process has to reach the printer. The agent harness does not.

If Hermes is on a DGX Spark that is not on the printer LAN, run this server on the LAN machine (or any box that can open 192.168.x.x:8883 and :990) and point Hermes at the HTTP URL. Grok on that same LAN box can use stdio.

This clone lives at /home/whaleshark/Documents/bambu-p1s-mcp. On the current LAN box the printer-facing IPs are typically:

  • LAN: 192.168.1.195

  • Tailscale: 100.123.149.116

Spark should use whichever of those it can route to, on port 8765.

P1S  <--- MQTT/FTPS ---  MCP host
                           |-- stdio --> harness on this host
                           |-- HTTP  --> Hermes on Spark / any remote MCP client

Related MCP server: bambu-printer-mcp

Install

cd /home/whaleshark/Documents/bambu-p1s-mcp
uv sync --extra dev
cp .env.example .env
# fill BAMBU_IP, BAMBU_ACCESS_CODE, BAMBU_SERIAL from the printer screen
uv run bambu-p1s-mcp doctor

Printer screen: Settings → Network for IP and access code, Settings → Device for serial. Turn on LAN mode. Developer Mode if local project_file start is rejected.

Run

Stdio (Grok / Hermes on this machine):

uv run bambu-p1s-mcp

HTTP daemon (Hermes on Spark, or any remote client):

# bind LAN/Tailscale; set BAMBU_MCP_TOKEN in .env
BAMBU_MCP_HOST=0.0.0.0 uv run bambu-p1s-mcp --http
# health: http://<host>:8765/health
# mcp:    http://<host>:8765/mcp

User systemd unit: contrib/bambu-p1s-mcp.service.

Point a harness at it

Grok (~/.grok/config.toml), stdio:

[mcp_servers.bambu]
command = "/home/whaleshark/Documents/bambu-p1s-mcp/.venv/bin/bambu-p1s-mcp"
startup_timeout_sec = 45

Grok, HTTP (after the daemon is up):

[mcp_servers.bambu]
url = "http://127.0.0.1:8765/mcp"
headers = { Authorization = "Bearer ${BAMBU_MCP_TOKEN}" }

Hermes (~/.hermes/config.yaml) on Spark:

mcp_servers:
  bambu:
    url: "http://192.168.1.195:8765/mcp"
    headers:
      Authorization: "Bearer ${BAMBU_MCP_TOKEN}"
    timeout: 180

If Spark is only on Tailscale, use http://100.123.149.116:8765/mcp. Reload with /reload-mcp.

Ready-to-copy snippets: configs/.

Tools

Tool

Write?

What it does

printer_doctor

no

Env, ports, MQTT, FTPS, slicer

printer_status

no

Idle/printing, job, %, layers, temps, remaining

printer_ams

no

AMS / external trays

printer_files

no

SD card listing

printer_pause / resume / stop

yes

Job control

printer_speed

yes

silent / standard / sport / ludicrous

printer_upload

yes

Push a sliced file over FTPS

printer_print

yes

Upload if local path, then start

slice_model_file

yes

Bambu Studio CLI → .gcode.3mf

Write tools require confirm=true. printer_print refuses if the printer is already RUNNING.

Ask an agent:

  • “What’s on the P1S right now?”

  • “Anything in the AMS?”

  • “Slice ~/Documents/lamp/stls/base.stl for the P1S.”

  • “Upload that 3mf and print plate 1.”

Slice notes

BAMBU_SLICER should point at the bambu-studio binary (this machine has /home/whaleshark/.local/bin/bambu-studio).

Project .3mf files that already contain printer settings can be sliced as-is. Bare STL/STEP needs machine + process + filament JSON. The server auto-discovers P1S 0.4 / 0.20mm Standard @BBL X1C / Bambu PLA Basic @BBL P1S 0.4 nozzle from ~/.config/BambuStudio/system/BBL when present.

Security

  • LAN access code is the MQTT/FTPS password. Keep it in .env, not in git.

  • HTTP without BAMBU_MCP_TOKEN is only for localhost. When Spark (or anything off-box) connects, set a token and bind BAMBU_MCP_HOST=0.0.0.0.

  • Do not port-forward this to the public internet.

  • This is not affiliated with Bambu Lab.

Goal

Agent brief: GOAL.md.

Available Tools

11 tools
printer_amsB

AMS / external spool trays: type, color, empty, active tray.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of explaining behavior. It lists observable fields but does not state that the tool reads current state, whether it is safe/read-only, what the response shape is, or whether any side effects occur. This is a meaningful gap for a tool with no output schema.

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

Conciseness4/5

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

The description is extremely terse, with no filler or redundant phrasing, and the resource name is front-loaded. However, it is a fragment rather than a complete sentence, so it sacrifices a little clarity for brevity.

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

Completeness3/5

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

For a simple zero-parameter tool, the listed fields provide reasonable situational context, but the lack of an explicit verb, output schema, or relationship to printer_status leaves some ambiguity about what invoking the tool actually returns. It is minimally viable but not fully complete.

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 and the schema is empty, so there are no parameter semantics to explain. The description adds enough context by indicating that the tool concerns AMS/external spool trays and their attributes, matching the baseline for a no-parameter tool.

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

Purpose4/5

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

The description identifies a specific resource — AMS / external spool trays — and names concrete data fields: type, color, empty, active tray. It is not a tautology, but it lacks an explicit verb such as 'get' or 'return', and does not directly contrast with printer_status.

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

Usage Guidelines2/5

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

There is no explicit statement about when to use this tool instead of siblings like printer_status or printer_doctor. The intended use is only implied by the resource name and listed fields, with no exclusions or alternative routing guidance.

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

printer_doctorA

Check env, LAN ports, MQTT, FTPS, and slicer CLI. Does not print or change printer state.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It valuably states that the tool does not print or change printer state, which is the most important safety trait. However, it does not explain what the checks actually do (network calls, CLI invocations) or what the returned diagnostic result looks like.

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 front-loaded sentence that names the verb first, enumerates the checked subsystems, and ends with an important non-destructive caveat. Every word earns its place and there is no filler.

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 zero-parameter tool with no output schema, this description is nearly complete: it names the full scope of checks and explicitly excludes print/state modifications. It could be slightly richer by clarifying expected output or why to prefer it over printer_status, but the essential calling context is present.

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 input schema has zero properties, so there are no parameter semantics to document. The baseline for a no-parameter tool is 4, and the description creates no parameter-related gaps.

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

Purpose4/5

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

The description clearly specifies the verb 'Check' and lists the exact resources the tool inspects (env, LAN ports, MQTT, FTPS, slicer CLI). It also distinguishes itself from state-changing operations by explicitly stating it does not print or change printer state, though it does not name a specific sibling like printer_status.

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 clear context: use this when you need to verify environment/network/protocol/slicer connectivity, not for printing or modifying printer state. It does not name explicit alternative tools, but the non-mutation statement effectively tells an agent when not to choose this tool.

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

printer_filesB

List files on the printer SD card via FTPS.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo/

TDQS

B3.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 full behavioral burden. 'List files' clearly implies a read-only operation, and 'via FTPS' adds transport context. However, it does not explicitly state side effects, path handling behavior, or FTPS authentication/connection expectations.

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?

A single concise sentence with no filler. The primary action, resource, and protocol are front-loaded, and every word contributes meaningful information.

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

Completeness3/5

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

For a simple list operation, the description plus the path schema are mostly adequate. However, it lacks usage guidance and parameter semantics, and the absence of an output schema means the agent is not told what kind of file listing to expect. These are gaps but not critical for basic invocation.

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

Parameters1/5

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

The description contains no mention of the 'path' parameter, and schema description coverage is 0%. The schema only provides the title 'Path' and a default of '/', so the description offers no additional meaning or usage context for the parameter.

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 action ('List'), a clear resource ('files on the printer SD card'), and the transport method ('via FTPS'). This differentiates it from siblings like printer_upload or printer_status without needing to open their schemas.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus related tools such as printer_upload, printer_status, or printer_doctor. No conditions, exclusions, or alternative selection criteria are provided.

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

printer_pauseB

Pause the current print. Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It adds the requirement that confirm must be true, but it does not explain what happens when confirm is false, whether the operation is reversible, or how the tool behaves if no print is currently active. This leaves significant behavioral ambiguity for an agent.

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 short sentences with no filler. The core action is front-loaded, and the necessary condition follows immediately. Every word earns its place.

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

Completeness3/5

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

For a simple one-parameter pause operation, the description conveys the essential action and requirement. However, without annotations or an output schema, an agent is left without guidance on error scenarios, idempotency, or how pause interacts with the print state machine (e.g., whether a paused print can be resumed). It is adequate but has clear gaps.

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?

Schema description coverage is 0%, so the description must compensate. It does clarify the critical fact that confirm must be true, which is not obvious from the schema's default of false and non-required status. However, it does not explain the semantic purpose of confirm beyond being a required flag, leaving the boolean's behavior partially unexplained.

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

Purpose4/5

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

The description states a specific verb and resource: "Pause the current print." This is clear and matches the tool name. It does not explicitly differentiate from the sibling printer_stop, though the semantics of pause vs. stop are inherently distinct.

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

Usage Guidelines2/5

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

The description gives a precondition ("Requires confirm=true") but provides no guidance on when to use this tool versus printer_resume, printer_stop, or other siblings. There is no mention of circumstances that would make pausing inappropriate or alternatives that should be chosen.

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

printer_printA

Start a print from a local sliced file (upload first) or a filename already on the printer.

Requires confirm=true. Check printer_status first — do not start if a job is RUNNING.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
plateNo
confirmNo
use_amsNo
flow_caliNo
timelapseNo
bed_levellingNo
layer_inspectNo
vibration_caliNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It discloses the most important constraints: confirmation is mandatory and the action must not proceed while a job is RUNNING. It does not detail broader side effects, but the critical safety behavior is clearly surfaced.

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?

Three short sentences, each earning its place: the action, the confirmation requirement, and the status-check guardrail. The description is front-loaded and contains no filler.

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

Completeness2/5

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

For a 9-parameter mutating tool with no annotations and no output schema, this is too thin. It covers the core gate conditions well but omits the semantics of several boolean options and the plate parameter, so an agent cannot fully reason about every call option.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning only to path (local sliced file vs filename already on printer) and confirm (requires true), while the other 7 parameters such as plate, use_ams, timelapse, bed_levelling, and vibration_cali are left entirely unexplained.

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 and resource ('Start a print') and clarifies the two valid sources: a local sliced file (after upload) or an existing filename on the printer. This clearly distinguishes printer_print from sibling tools like printer_upload, printer_status, and the control commands.

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

Usage Guidelines5/5

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

It provides explicit preconditions: 'confirm=true' and 'Check printer_status first'. It states a hard when-not with 'do not start if a job is RUNNING' and names the sibling tool to consult beforehand. This is actionable guidance for an agent deciding whether to invoke the tool.

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

printer_resumeA

Resume a paused print. Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of disclosing behavior. It does disclose a key behavioral trait: the operation requires confirm=true, which signals a confirmation gate. However, it does not describe error behavior, reversibility, or consequences of calling with confirm=false, leaving some behavioral gaps.

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 short sentences with no filler. The main purpose is front-loaded, and the parameter requirement is stated directly. Every word earns its place.

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 simple tool with one optional-looking parameter and no output schema, the description provides the two essential facts: what the tool does and what the caller must supply. It does not cover edge cases such as calling it on a non-paused printer, but the tool's simplicity makes the description mostly complete.

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 input schema only defines confirm as a boolean with default false and no description. The description adds crucial semantics by stating 'Requires confirm=true,' telling the agent the exact value needed for the call. This compensates for the 0% schema description coverage, though it does not explain the meaning of the confirmation beyond the requirement.

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 and resource: 'Resume a paused print.' This clearly identifies the tool's function and distinguishes it from sibling tools like printer_pause and printer_stop. The addition of 'Requires confirm=true' further clarifies the intended action.

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

Usage Guidelines3/5

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

The description implies when to use the tool: when a print is paused and needs to be resumed. However, it does not explicitly state when not to use it or mention alternatives such as printer_status or printer_doctor. The confirm requirement is a usage constraint, but the broader context of choosing this tool over siblings is left to inference.

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

printer_speedA

Set speed profile: silent, standard, sport, ludicrous. Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
profileYes

TDQS

A4/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It discloses that confirmation is required, implying a guarded mutation, and lists the allowed profiles. It does not state side effects, whether the change applies immediately, or what happens if confirm=false. This is modest disclosure, not full transparency.

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 compact sentences with the core action and allowed values first, followed by the critical requirement. Zero verbose or redundant content.

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 two-parameter tool with no output schema the description covers purpose, allowed values, and the key confirmation requirement. It is sufficient for an agent to make a correct call. Missing use-case routing and deeper behavioral details are minor given the tool's simplicitiy.

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?

Schema coverage is 0%, so the description must compensate. It adds meaning by enumerating valid values for profile (silent, standard, sport, ludicrous) and specifying that confirm must be true, correcting the schema's false default. Could explicitly name the profile parameter, but the intent is clear.

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?

States a specific verb+resource: 'Set speed profile', and enumerates the four valid profiles. This clearly distinguishes it from sibling tools like printer_pause, printer_resume, and printer_stop, which are all dfferent actions.

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

Usage Guidelines3/5

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

No explicit when-to-use guidance or exclusions against alternatives. However, 'Requires confirm=true' gives a clear invocation condition. The use case is implied by the name and verb, but no direct comparison to sibling tools is provided.

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

printer_statusA

Current P1S state: idle/printing, job name, progress, temps, remaining time.

Set fresh=true to request a full P1S pushall (avoid calling that in a tight loop).

ParametersJSON Schema
NameRequiredDescriptionDefault
freshNo

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It goes beyond a simple status read by revealing that fresh=true triggers a full P1S pushall and warns against tight-loop calls, which signals cost/rate-limit implications. It does not explain the default caching behavior or potential errors, but for a status tool the disclosed behavior is meaningful and helpful.

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 with no filler. The first sentence front-loads what the tool returns, and the second delivers the crucial parameter caution. Every clause earns its place.

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 one-optional-parameter status tool with no output schema, the description covers the key response fields and the one behavioral caveat that matters. It does not describe response formatting or error cases, but the listed fields are enough to understand return value expectations. The tight-loop warning adds practical operational context.

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?

Schema coverage is 0%, so the description is the only explanation of the fresh parameter. It explains both the effect (requesting a full P1S pushall) and a usage constraint (avoid tight loops). It does not explicitly state what happens when fresh is false, but the schema default of false plus the conditional phrasing provide enough context for an agent to act correctly.

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

Purpose4/5

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

The description clearly states the tool reports the current P1S state with concrete fields: idle/printing status, job name, progress, temps, and remaining time. It does not use an explicit verb like 'get', but 'Current P1S state' unambiguously identifies the resource and operation. It is implicitly distinguished from sibling action tools like printer_pause or printer_resume, though it does not explicitly name a sibling alternative.

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

Usage Guidelines3/5

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

The description implies the tool is for reading live printer status and gives specific guidance about when to set fresh=true and to avoid calling it in a tight loop. However, it does not explicitly state when to prefer this tool over alternatives such as printer_doctor or printer_ams, nor when not to use it. The usage guidance focuses on the parameter rather than tool selection.

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

printer_stopA

Stop the current print. Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description must reveal behavioral traits itself. It discloses that the operation requires explicit confirmation, which is useful. However, it does not mention whether stopping cancels the job irreversibly, what happens to the print state, or whether the action can be undone.

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 short sentences with no filler. The core action comes first, followed immediately by the critical safety requirement. Every word earns its place.

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

Completeness3/5

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

For a one-parameter tool, the description covers the essential action and confirmation. But it leaves ambiguity about the difference between stop and pause, and it does not describe the result of stopping or any side effects. Given the sibling list includes printer_pause and printer_resume, this ambiguity is a meaningful gap.

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?

Schema description coverage is 0%, so the description must compensate for the confirm parameter. It does so by explicitly stating that confirm=true is required, overriding the schema default of false and clarifying the parameter's behavioral meaning.

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

Purpose4/5

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

The description clearly states the action ('Stop the current print') and the target resource. However, it does not distinguish 'stop' from the sibling 'printer_pause', so an agent might not know whether stopping is permanent or resumable.

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 a clear usage requirement: confirm=true is mandatory. It does not explicitly say when to prefer this over printer_pause or printer_resume, but the safety constraint and action are stated clearly enough for basic invocation.

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

printer_uploadB

Upload a sliced .gcode.3mf / .3mf / .gcode to the printer over FTPS. Requires confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
local_pathYes
remote_nameNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations available, the description carries the burden of behavioral disclosure. It usefully discloses FTPS transport and the mandatory confirm=true gate, but does not state whether an existing remote file is overwritten, whether authentication is needed, or what happens on failure. Key side effects remain undocumented.

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?

One sentence that front-loads the action, target, file types, and the critical confirm requirement. There is no filler; every phrase contributes to the agent's decision and invocation. The compactness is a strength, not a gap.

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

Completeness3/5

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

For a 3-parameter upload with no output schema and no annotations, the description covers the core operation and the important confirm gate. However, remote_name semantics, overwrite behavior, and post-upload effects are missing. It is adequate for a straightforward call but leaves room for guessing.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needed to compensate. It partially does by implying local_path is the file to upload and by requiring confirm=true, but it never explains remote_name or its null default. This is insufficient for the three parameters present.

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

Purpose4/5

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

States the specific operation ('Upload'), target ('printer'), allowed file types, and transport protocol (FTPS). This clearly separates it from read/control siblings like printer_status and printer_pause, though it does not explicitly name an alternative.

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

Usage Guidelines3/5

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

Gives a clear trigger: call this when a sliced file needs to be transferred to the printer. It does not discuss when to prefer printer_print or slice_model_file, and there are no explicit exclusion criteria. The 'Requires confirm=true' note is a precondition rather than a selection guideline.

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

slice_model_fileA

Slice an STL/3MF with the Bambu Studio CLI into a printable .gcode.3mf. Requires confirm=true.

STL/STEP needs machine/process/filament JSON (auto-discovered from BambuStudio config when present). A project .3mf that already contains settings can be sliced without extra profiles.

ParametersJSON Schema
NameRequiredDescriptionDefault
plateNo
orientNo
outputNo
sourceYes
arrangeNo
confirmNo

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It discloses the confirm=true guard, the output format, and the auto-discovery fallback for profiles, which is useful. However, it does not describe side effects such as files written, potential failure modes, or what happens when required profiles are missing.

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

Conciseness4/5

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

The description is compact and front-loaded: the primary purpose and the critical confirm requirement appear first, followed by the profile scenarios. Every sentence adds information, though the second paragraph is a bit dense.

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

Completeness2/5

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

For a tool with six parameters, no output schema, and no annotations, the description covers prerequisites but omits parameter meanings, return/result behavior, and failure handling. It gives the agent enough to attempt a simple case but not enough to use all options confidently.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should compensate, but it only meaningfully explains confirm=true and the source-format implications. plate, orient, output, and arrange are left entirely to the agent's inference from their names.

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 names a specific action ('Slice'), the accepted input formats ('STL/3MF'), and the concrete output ('.gcode.3mf'), so an agent can tell exactly what the tool does. It is clearly distinct from the printer_* sibling tools, which concern printer control rather than slicing.

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?

It distinguishes two usage scenarios: STL/STEP inputs require machine/process/filament JSON, while a project .3mf with embedded settings does not, and it flags that confirm=true is mandatory. It does not explicitly state when not to use the tool, but the situation-dependent guidance is concrete and actionable.

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.

  1. 11 tool updatesv0.1.0
    • First observedprinter_ams
    • First observedprinter_doctor
    • First observedprinter_files
    • First observedprinter_pause
    • First observedprinter_print
    • First observedprinter_resume
    • First observedprinter_speed
    • First observedprinter_status
    • First observedprinter_stop
    • First observedprinter_upload
    • First observedslice_model_file

TDQS

A3.7/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct function: diagnostics, status, AMS, file listing, print control, speed, upload, print, and slicing. No two tools appear to do the same thing, and the descriptions reinforce the boundaries.

Naming Consistency4/5

Almost all tools follow a consistent printer_<action/noun> pattern with clear verbs like pause, resume, stop, upload, and print. The single exception is slice_model_file, which breaks the printer_ prefix and would fit better as printer_slice, but this is a minor deviation.

Tool Count5/5

11 tools is well-scoped for a 3D printer server: it covers diagnostics, status, AMS, file management, print control, upload, and slicing without unnecessary bloat. Each tool earns its place in the workflow.

Completeness4/5

The core lifecycle is covered end-to-end: slice locally, upload to the printer, start, monitor, pause/resume/stop, and adjust speed. Minor gaps like deleting files, calibrating, or controlling aux devices do not hinder the primary print workflow.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables interaction with 3D printer management systems through an MCP server, supporting STL file manipulation, slicing, and control of printers like OctoPrint, Klipper, Duet, and more.
    57 npm
    236
    GPL 2.0
  • A
    license
    B
    quality
    C
    maintenance
    A Bambu Lab-focused MCP server for controlling Bambu printers, manipulating STL files, and managing end-to-end 3MF print workflows from any MCP-compatible client.
    37
    92 npm
    GPL 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables local Mac agents to monitor and control Bambu Lab 3D printers via MCP tools, including status checks, camera snapshots, and print job management.
    -
  • A
    license
    C
    quality
    C
    maintenance
    Enables MCP clients to monitor a Creality K2 printer via live Moonraker state, camera snapshots, and print history, while also inspecting local G-code, 3MF projects, and installed Creality Print profiles to review or create slice plans.
    15
    1
    MIT