Rhino3dm MCP Server

rhino3dm-mcp PyPI v0.6.0

Published by easehee — no publish provenance, so origin is unverified, but the source is public: the repository link below is self-declared yet readable, so you can inspect the code before adopting it.

MCP server connecting Claude to McNeel Rhino 8 and Grasshopper via rhino3dm and an in-Rhino bridge plugin.

Trust grade
A
93/100
Last scanned get badge →
Trust
A · 93/100
Adoption risk for you: the threat score, then adjusted down for blast radius, publisher verification and how much the scan could see. Deterministic; every point is auditable.
Capability
High
Blast radius if it went rogue — what the server’s tools could reach. Independent of trust.
Coverage
Source
How much the scan could actually inspect. Shallow coverage is stated, never hidden.
Share this Trust Score
𝕏 Share LinkedIn Reddit
A Why this grade threat 100 − adoption risk = 93/100

The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.

1. Threat score — 100 − 0 = 100. What the published surface and source actually contain:

The deterministic scan raised no scored threat in the surface it inspected — the threat score stayed at 100. Capability observations and advisory notes are recorded but never lower it.

2. Client adoption risk — 100 − 7 = 93. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:

PointsAdoption-risk factor
−6 capability blast radius (high) — client exposure if the model is manipulated
−1 publisher verification (public source) — no provenance, but the source is public and inspectable

Capability observations and info notes are shown under Findings but never scored. Open any row's finding below for the file, line and evidence behind a deduction.

Findings 3

critical Completed toxic-flow trifecta across toolsMTC-FLOW-002

This server (without client built-ins) exposes a complete data-exfiltration chain: rhino_bim_pset_get → rhino_viewport_image → rhino_drawing_sheet_create. Untrusted input is ingested, private data is read, and it can be sent to an external sink via the agent composing the tools (→). Static analysis proves the primitive exists, not that a specific run will occur.

Fix: Remove one leg of the trifecta: isolate untrusted-input tools from secret-reading tools and from egress tools, or require human approval between them.

Location: flow rhino_bim_pset_get → rhino_viewport_image → rhino_drawing_sheet_create

medium Tool "gh_save_file" can modify the filesystemMTC-CAP-002

Tool "gh_save_file" can write, overwrite or delete files (keyword "save_file" in tool name). Verify it is scoped to a safe directory.

Fix: Constrain file operations to an explicit, non-sensitive root; reject path traversal.

Location: tool gh_save_file

low Mutating tool "gh_save_file" declares no destructiveHintMTC-CAP-005

Tool "gh_save_file" can mutate/egress but declares no destructiveHint. Clients that don't default to spec-safe behavior may not prompt before running it.

Fix: Declare accurate annotations, and gate destructive tools on user confirmation regardless.

Location: tool gh_save_file

Tools 200

Each tool and what it can reach — statically extracted from the published source.

  • gh_save_filewrites files
  • rhino_bim_pset_getingests untrusted input
  • rhino_drawing_sheet_createnetwork egress
  • rhino_export_dxfnetwork egress
  • rhino_export_igesnetwork egress
  • rhino_export_stepnetwork egress
  • rhino_get_module_functionsingests untrusted input
  • rhino_viewport_imagereads sensitive data
  • gh_add_componentno sensitive capability
  • gh_bake_to_rhinono sensitive capability
Show 190 more tools ↓
  • gh_bind_template_parameterno sensitive capability
  • gh_cluster_createno sensitive capability
  • gh_cluster_expandno sensitive capability
  • gh_component_listno sensitive capability
  • gh_components_searchno sensitive capability
  • gh_connect_componentsno sensitive capability
  • gh_connect_manyno sensitive capability
  • gh_data_tree_getno sensitive capability
  • gh_data_tree_setno sensitive capability
  • gh_delete_componentno sensitive capability
  • gh_get_parameterno sensitive capability
  • gh_load_templateno sensitive capability
  • gh_new_canvasno sensitive capability
  • gh_open_fileno sensitive capability
  • gh_place_sliderno sensitive capability
  • gh_plugin_listno sensitive capability
  • gh_preview_toggleno sensitive capability
  • gh_resetno sensitive capability
  • gh_runno sensitive capability
  • gh_run_templateno sensitive capability
  • gh_set_panelno sensitive capability
  • gh_set_parameterno sensitive capability
  • gh_set_sliderno sensitive capability
  • gh_set_toggleno sensitive capability
  • gh_template_listno sensitive capability
  • rhino_annotation_calloutno sensitive capability
  • rhino_annotation_dimension_styleno sensitive capability
  • rhino_annotation_north_arrowno sensitive capability
  • rhino_annotation_revision_cloudno sensitive capability
  • rhino_annotation_scale_barno sensitive capability
  • rhino_arcno sensitive capability
  • rhino_areano sensitive capability
  • rhino_attractor_displace_pointsno sensitive capability
  • rhino_batch_callno sensitive capability
  • rhino_batch_modifyno sensitive capability
  • rhino_bendno sensitive capability
  • rhino_bim_metadata_setno sensitive capability
  • rhino_bim_pset_deleteno sensitive capability
  • rhino_bim_pset_setno sensitive capability
  • rhino_block_defineno sensitive capability
  • rhino_block_explodeno sensitive capability
  • rhino_block_insertno sensitive capability
  • rhino_block_listno sensitive capability
  • rhino_block_redefineno sensitive capability
  • rhino_bounding_boxno sensitive capability
  • rhino_bridge_list_instancesno sensitive capability
  • rhino_bridge_select_instanceno sensitive capability
  • rhino_camera_setno sensitive capability
  • rhino_circleno sensitive capability
  • rhino_clipping_planeno sensitive capability
  • rhino_contourno sensitive capability
  • rhino_create_uv_gridno sensitive capability
  • rhino_curvature_analysisno sensitive capability
  • rhino_curve_continuityno sensitive capability
  • rhino_curve_lengthno sensitive capability
  • rhino_curve_point_atno sensitive capability
  • rhino_curve_splitno sensitive capability
  • rhino_dimension_alignedno sensitive capability
  • rhino_dimension_angularno sensitive capability
  • rhino_dimension_linearno sensitive capability
  • rhino_direct_irradianceno sensitive capability
  • rhino_display_mode_setno sensitive capability
  • rhino_distanceno sensitive capability
  • rhino_document_settingsno sensitive capability
  • rhino_document_summaryno sensitive capability
  • rhino_document_units_getno sensitive capability
  • rhino_document_units_setno sensitive capability
  • rhino_draft_angleno sensitive capability
  • rhino_drawing_export_pdfno sensitive capability
  • rhino_drawing_section_cutno sensitive capability
  • rhino_drawing_title_block_addno sensitive capability
  • rhino_drawing_view_placeno sensitive capability
  • rhino_dup_borderno sensitive capability
  • rhino_dup_edgeno sensitive capability
  • rhino_ellipseno sensitive capability
  • rhino_environment_setno sensitive capability
  • rhino_evaluate_surfaceno sensitive capability
  • rhino_execute_pythonno sensitive capability
  • rhino_export_gbxmlno sensitive capability
  • rhino_export_ifcno sensitive capability
  • rhino_export_objno sensitive capability
  • rhino_export_stlno sensitive capability
  • rhino_flow_along_curveno sensitive capability
  • rhino_get_control_pointsno sensitive capability
  • rhino_get_rhinoscript_docsno sensitive capability
  • rhino_get_selected_objectsno sensitive capability
  • rhino_get_user_textno sensitive capability
  • rhino_groupno sensitive capability
  • rhino_hatchno sensitive capability
  • rhino_helixno sensitive capability
  • rhino_importno sensitive capability
  • rhino_import_ifcno sensitive capability
  • rhino_interpolate_curveno sensitive capability
  • rhino_isocurveno sensitive capability
  • rhino_layer_createno sensitive capability
  • rhino_layer_deleteno sensitive capability
  • rhino_layer_listno sensitive capability
  • rhino_layer_set_colorno sensitive capability
  • rhino_layer_set_materialno sensitive capability
  • rhino_leaderno sensitive capability
  • rhino_light_addno sensitive capability
  • rhino_lineno sensitive capability
  • rhino_list_objectsno sensitive capability
  • rhino_list_rhinoscript_modulesno sensitive capability
  • rhino_make2dno sensitive capability
  • rhino_material_assignno sensitive capability
  • rhino_material_createno sensitive capability
  • rhino_material_preset_createno sensitive capability
  • rhino_material_preset_listno sensitive capability
  • rhino_mesh_boolean_differenceno sensitive capability
  • rhino_mesh_boolean_unionno sensitive capability
  • rhino_mesh_boxno sensitive capability
  • rhino_mesh_from_brepno sensitive capability
  • rhino_mesh_from_surfaceno sensitive capability
  • rhino_named_view_saveno sensitive capability
  • rhino_nurbs_curveno sensitive capability
  • rhino_object_deleteno sensitive capability
  • rhino_object_infono sensitive capability
  • rhino_object_move_to_layerno sensitive capability
  • rhino_object_quantityno sensitive capability
  • rhino_object_selectno sensitive capability
  • rhino_openno sensitive capability
  • rhino_origin_setno sensitive capability
  • rhino_panel_curvature_classifyno sensitive capability
  • rhino_panel_framesno sensitive capability
  • rhino_panel_planarityno sensitive capability
  • rhino_panelize_surfaceno sensitive capability
  • rhino_place_gridno sensitive capability
  • rhino_pointno sensitive capability
  • rhino_polygonno sensitive capability
  • rhino_polylineno sensitive capability
  • rhino_probe_intersectionno sensitive capability
  • rhino_rebuild_curveno sensitive capability
  • rhino_rebuild_surfaceno sensitive capability
  • rhino_rectangleno sensitive capability
  • rhino_redono sensitive capability
  • rhino_reduce_meshno sensitive capability
  • rhino_render_queue_cancelno sensitive capability
  • rhino_render_queue_listno sensitive capability
  • rhino_render_queue_statusno sensitive capability
  • rhino_render_queue_submitno sensitive capability
  • rhino_render_setupno sensitive capability
  • rhino_render_to_fileno sensitive capability
  • rhino_render_viewportno sensitive capability
  • rhino_replicate_along_curveno sensitive capability
  • rhino_report_mesh_healthno sensitive capability
  • rhino_saveno sensitive capability
  • rhino_scatterno sensitive capability
  • rhino_schedule_by_layerno sensitive capability
  • rhino_schedule_by_materialno sensitive capability
  • rhino_schedule_by_user_textno sensitive capability
  • rhino_schedule_export_csvno sensitive capability
  • rhino_screenshotno sensitive capability
  • rhino_search_rhinoscript_functionsno sensitive capability
  • rhino_sectionno sensitive capability
  • rhino_section_at_axisno sensitive capability
  • rhino_set_control_pointsno sensitive capability
  • rhino_set_user_textno sensitive capability
  • rhino_shadow_projectno sensitive capability
  • rhino_skin_from_sectionsno sensitive capability
  • rhino_smooth_polylineno sensitive capability
  • rhino_solar_exposure_estimateno sensitive capability
  • rhino_spiralno sensitive capability
  • rhino_stack_floorsno sensitive capability
  • rhino_sun_pathno sensitive capability
  • rhino_sun_positionno sensitive capability
  • rhino_surface_closest_pointno sensitive capability
  • rhino_surface_developable_scoreno sensitive capability
  • rhino_surface_from_pointsno sensitive capability
  • rhino_surface_normal_atno sensitive capability
  • rhino_taperno sensitive capability
  • rhino_textno sensitive capability
  • rhino_text_dotno sensitive capability
  • rhino_tolerance_getno sensitive capability
  • rhino_tolerance_setno sensitive capability
  • rhino_turntableno sensitive capability
  • rhino_turntable_renderno sensitive capability
  • rhino_twistno sensitive capability
  • rhino_undono sensitive capability
  • rhino_unrollno sensitive capability
  • rhino_unweld_meshno sensitive capability
  • rhino_uv_grid_panelsno sensitive capability
  • rhino_validate_brepno sensitive capability
  • rhino_view_setno sensitive capability
  • rhino_volumeno sensitive capability
  • rhino_weld_meshno sensitive capability
  • rhino_zebrano sensitive capability
  • rhino_zoom_extentno sensitive capability
  • rhino_zoom_layerno sensitive capability
  • rhino_zoom_objectno sensitive capability

Toxic flows 1

Cross-tool combinations that form a data-exfiltration primitive (untrusted input → sensitive source → external sink).

What this scan could not see

Versions 1

Scan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.

VersionScoreFindingsEngineScanned
v0.6.0 latest A 93/100 3 1.13.0 2026-08-25

Embed this score

Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.

MCP Trust Score: A · 93/100
Markdown (GitHub README)
[![MCP Trust Score](https://mcptrustchecker.com/registry/rhino3dm-mcp/badge.svg)](https://mcptrustchecker.com/registry/rhino3dm-mcp)
HTML
<a href="https://mcptrustchecker.com/registry/rhino3dm-mcp"><img src="https://mcptrustchecker.com/registry/rhino3dm-mcp/badge.svg" alt="MCP Trust Score" height="20"></a>
Prefer shields.io styling? Point it at https://mcptrustchecker.com/registry/rhino3dm-mcp/badge.json via https://img.shields.io/endpoint?url=…

Verify this score yourself

The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.

npx mcptrustchecker scan rhino3dm-mcp --online --registry pypi

Use the free API → How scoring works

More in Productivity & Workflow