3D printing filament and materials knowledge MCP server
3dprint-oracle demonstrates solid tool design with clear naming conventions, comprehensive descriptions, and well-structured schemas. All 8 tools follow verb_noun patterns (search_, get_, list_, compare_, recommend_, diagnose_). Descriptions are informative and action-oriented, averaging ~150-200 characters. Parameter schemas include types and descriptions. However, output schemas are not explicitly documented in the visible source code, and several tools lack error handling patterns or recovery guidance. The server is well-organized around a coherent 3D printing domain, with good parameter constraints (enums for materials, numbered limits). No security concerns (all tools are read-only). Tool composition is sound, each tool has a single responsibility and chains together logically (search → get → compare → recommend).
Compare 2-3 material types side by side across all properties: strength, flexibility, heat resistance, food safety, print difficulty, and more. Useful for deciding which material to use for a project.
Diagnose a 3D printing problem by symptom. Returns possible causes ranked by probability, with specific fixes for each. Optionally filter by material type for material-specific troubleshooting.
Get detailed information about a specific filament. Prefer lookup by ID (the [ID <n>] value returned by search_filaments) — that is the only unambiguous key. Name lookups are accepted but many filaments share the same name (e.g. "Black", "Jade White") because SpoolmanDB names are often colour-only; if a name is ambiguous you will get back a disambiguation list with IDs. You can pass `manufacturer` and `material` alongside `name` to narrow the match, or pass the full search_filaments display label (e.g. "[ID 1234] Bambu Lab — PLA — Jade White") in the `name` field and it will be parsed.
Get a detailed material science profile for a specific material type. Includes strength, flexibility, UV resistance, food safety, moisture sensitivity, difficulty level, typical uses, pros/cons, and nozzle requirements.
List all filament manufacturers in the database, with filament counts. Optionally filter to manufacturers that produce a specific material type.
Output schemas not documented in tool registration. While input schemas are comprehensive, return value structures are not specified in the visible tool definitions. LLMs cannot predict result fields or plan downstream tool calls with certainty.
No error handling patterns or recovery guidance in tool descriptions. Tools state what they do but do not explain what errors are possible or how to recover. E.g., search_filaments does not document 'no results found' behavior or guidance for refining queries.
Missing result limits documentation. search_filaments accepts 'limit' (1-100, default 20) but tool description does not explicitly state 'Results are capped at 100 to prevent context bloat.' This transparency helps LLMs understand pagination necessity.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
List all material types available in the database (PLA, PETG, ABS, TPU, Nylon, etc.) with filament counts and typical print settings. No inputs required.
Recommend the best 3D printing material based on project requirements. Describe what you need (strength, flexibility, heat resistance, food safety, outdoor use, ease of printing, budget) and get ranked material suggestions with explanations.
Search 7,000+ 3D printing filaments by name, material type, manufacturer, or color. Each result is prefixed with [ID <n>] — pass that ID to get_filament for full specs (the ID is the only unambiguous lookup key, since many filaments share names like "Black" or "Jade White").
diagnose_print_issue accepts free-form 'symptom' string instead of enum. Symptoms like 'stringing', 'warping', 'layer_adhesion' are mentioned in description but not formalized as enum constraints. This invites LLMs to hallucinate symptom names.