{"name":"io.github.KittyCAD/zoo-mcp","slug":"kittycad-zoo-mcp","title":null,"description":"An MCP server that provides access to the Zoo API for various CAD operations and tools.","url":"https://mcp.market/server/kittycad-zoo-mcp","rating":null,"grade":"A","score":85,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":44,"stars":9,"forks":1,"downloads_week":6659,"last_push_at":"2026-09-18T21:34:37.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/KittyCAD/mcp","website":null,"version":"0.28.0","remotes":[],"packages":[{"registryType":"pypi","identifier":"zoo_mcp","version":"0.28.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Your Zoo API key to access the Zoo services. Get one from https://zoo.dev/account/developer","isRequired":true,"format":"string","isSecret":true,"name":"ZOO_TOKEN"}]}],"tools":[{"name":"calculate_bounding_box_cad","description":"Calculate the bounding box of a CAD file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"calculate_bounding_box_kcl","description":"Calculate the bounding box of a KCL model.","write_action":false,"price_micros":0,"input_schema":null},{"name":"calculate_cad_physical_properties","description":"Calculate physical properties (volume, mass, surface area, center of mass, bounding box) of a CAD file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"calculate_center_of_mass","description":"Calculate the center of mass of a 3d object represented by the input file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"calculate_kcl_physical_properties","description":"Calculate physical properties (volume, mass, surface area, center of mass, bounding box) of a KCL model.","write_action":false,"price_micros":0,"input_schema":null},{"name":"calculate_mass","description":"Calculate the mass of a 3d object represented by the input file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"calculate_surface_area","description":"Calculate the surface area of a 3d object represented by the input file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"calculate_volume","description":"Calculate the volume of a 3d object represented by the input file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"center_camera_on_selection","description":"Point the camera at the current \"selection set\".","write_action":false,"price_micros":0,"input_schema":null},{"name":"convert_cad_file","description":"Convert a CAD file from one format to another CAD file format.","write_action":false,"price_micros":0,"input_schema":null},{"name":"curve_get_end_points","description":"Get the start and end points of a curve entity.","write_action":false,"price_micros":0,"input_schema":null},{"name":"curve_get_type","description":"Get whether a curve is a line, arc, or NURBS curve.","write_action":false,"price_micros":0,"input_schema":null},{"name":"edge_get_length","description":"Get the length of an edge entity in the current scene units.","write_action":false,"price_micros":0,"input_schema":null},{"name":"engine_util_evaluate_path","description":"Evaluate a serialized KCL path at parameter t.","write_action":false,"price_micros":0,"input_schema":null},{"name":"entity_distance","description":"Get the minimum and maximum distance between two model entities.","write_action":false,"price_micros":0,"input_schema":null},{"name":"entity_get_all_child_uuids","description":"Get all child UUIDs belonging to an entity.","write_action":false,"price_micros":0,"input_schema":null},{"name":"entity_get_index","description":"Get an entity's index within its parent.","write_action":false,"price_micros":0,"input_schema":null},{"name":"entity_get_parent_id","description":"Get the UUID of an entity's parent.","write_action":false,"price_micros":0,"input_schema":null},{"name":"entity_get_sketch_paths","description":"Get the sketch path UUIDs belonging to an entity.","write_action":false,"price_micros":0,"input_schema":null},{"name":"exec_kcl_project","description":"Mock preflight a KCL project, then run it in the session and save its artifact graph.","write_action":false,"price_micros":0,"input_schema":null},{"name":"execute_kcl","description":"Execute KCL code given a string of KCL code or a path to a KCL project. Either kcl_code or kcl_path must be provided. If kcl_path is provided, it should point to a .kcl file or a directory containing a main.kcl file.","write_action":true,"price_micros":0,"input_schema":null},{"name":"export_kcl","description":"Export KCL code to a CAD file. Either kcl_code or kcl_path must be provided. If kcl_path is provided, it should point to a .kcl file or a directory containing a main.kcl file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"format_kcl","description":"Format KCL code given a string of KCL code or a path to a KCL project. Either kcl_code or kcl_path must be provided. If kcl_path is provided, it should point to a .kcl file or a directory containing .kcl files.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_face_info","description":"Get the position, gradient, normal, and center of a face in a modeling session.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_kcl_doc","description":"Get the full content of a specific KCL documentation file.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_kcl_sample","description":"Get the full content of a specific KCL sample including all files.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_modeling_sessions","description":"List modeling sessions owned by the current MCP server process.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_sketch_constraint_status","description":"Execute KCL and return a report of sketch constraint status. Either kcl_code or kcl_path must be provided. If kcl_path is provided, it should point to a .kcl file or a directory containing a main.kcl file.","write_action":true,"price_micros":0,"input_schema":null},{"name":"highlight_set_entities","description":"Replace the currently highlighted entities. Does NOT modify the \"selection set\".","write_action":false,"price_micros":0,"input_schema":null},{"name":"import_cad_file","description":"Import a CAD file into an existing modeling session.","write_action":false,"price_micros":0,"input_schema":null},{"name":"lint_and_fix_kcl","description":"Lint and fix KCL code given a string of KCL code or a path to a KCL project. Either kcl_code or kcl_path must be provided. If kcl_path is provided, it should point to a .kcl file or a directory containing .kcl files.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_kcl_docs","description":"List all available KCL documentation topics organized by category.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_kcl_samples","description":"List all available KCL sample projects.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_org_datasets","description":"List the datasets available to the user's organization.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_org_skills","description":"List the skills available to the user's organization.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mock_execute_kcl","description":"Mock execute KCL code given a string of KCL code or a path to a KCL project. Either kcl_code or kcl_path must be provided. If kcl_path is provided, it should point to a .kcl file or a directory containing a main.kcl file.","write_action":true,"price_micros":0,"input_schema":null},{"name":"save_image","description":"Save an ImageContent object to disk. This allows a human to review images locally that an LLM has requested.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_kcl_docs","description":"Search KCL documentation by keyword.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_kcl_samples","description":"Search KCL samples by keyword.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search_org_dataset_semantic","description":"Semantic-search a dataset for samples relevant to the query.","write_action":false,"price_micros":0,"input_schema":null},{"name":"select_entities","description":"Replace the \"selection set\" with the given entities.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_selection_filter","description":"Set which model entity types can be added to the \"selection set\".","write_action":false,"price_micros":0,"input_schema":null},{"name":"snapshot","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"start_modeling_session","description":"Open an empty modeling websocket for subsequent tools.","write_action":false,"price_micros":0,"input_schema":null},{"name":"stop_modeling_session","description":"Close a persistent modeling websocket session.","write_action":false,"price_micros":0,"input_schema":null},{"name":"visualize_sketch","description":"Render a named 2D KCL sketch as a solver-debug PNG.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":85,"grade":"A","scanned_at":"2026-09-19T19:29:23.929Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T19:29:23.885Z","components":{"code":{"score":25,"max":25,"notes":["10 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"zoo_mcp","version":"0.28.0","found":true,"weeklyDownloads":6659,"license":"MIT","dependencyCount":11,"publishedAt":"2026-09-18T20:38:33.574529Z","repositoryUrl":"https://github.com/KittyCAD/mcp"}],"repo":{"found":true,"owner":"KittyCAD","repo":"mcp","archived":false,"pushedAt":"2026-09-18T21:34:37Z","stars":9,"forks":1,"openIssues":19,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/81783542?v=4","ownerCreatedAt":"2021-04-01T23:54:44Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/81783542?v=4&s=128","source":"registry","width":128,"height":128},"presence":{"stars":9,"forks":1,"downloadsWeek":6659,"license":"MIT","lastPushAt":"2026-09-18T21:34:37.000Z","score":44}}}},"grade_history":[],"reviews":[]}