Blender MCP vs Revit MCP
A side-by-side look at the Blender MCP and Revit MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Blender MCP for architecture & design work; choose Revit MCP for architecture & design as a local process. You can also run both side by side in one mcpServers block.
Which MCP server should you choose?
Choose Blender MCP when
- You need dedicated capabilities in the Architecture & Design domain.
- Its auth model fits you: No auth required.
- You want tools like
get_addon_status, disable_telemetry, get_scene_info.
Choose Revit MCP when
- You need dedicated capabilities in the Architecture & Design domain.
- You prefer a local stdio subprocess transport.
- Its auth model fits you: No auth required.
- You want tools like
add_pipe_cap, adjust_section_datums, align_titleblocks_on_sheets.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Architecture & Design | Architecture & Design |
| Quality signal | 60/100 · Good | 68/100 · Great |
| Install command | Not confirmed yet | Confirmed |
| Transport | — | Local subprocess (stdio) |
| Auth | No auth required | No auth required |
| Pricing | Free | Free |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 31,766 | 106 |
| Directory activity | 7 views 0 installs 0 upvotes | 6 views 0 installs 0 upvotes |
| Tools | 32 | 167 |
| Full listing | View Blender MCP | View Revit MCP |
Tools & capabilities
Blender MCP tools 32
get_addon_statusCheck whether the connected Blender addon matches this MCP server version. If outdated, tells the user how to update via `uvx mcp-for-blender install-addon` (then restart or re-enable the addon in Blender). `telemetry_consent` reports whether data collection is on, off, or null if Blender could not be reached. Use it to answer telemetry status questions.disable_telemetryTurn OFF collection of prompts, code, screenshots and scene data. Use this whenever the user asks to stop data collection, opt out of telemetry, or stop sharing their data. Takes effect immediately. This tool can only turn collection OFF. Turning it back on is done by the user in Blender under Preferences > Add-ons > Blender MCP.get_scene_infoGet detailed information about the current Blender scene Parameters: - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged. Required.get_object_infoGet detailed information about a specific object in the Blender scene. Parameters: - object_name: The name of the object to get information about - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged.get_viewport_screenshotCapture a screenshot of the current Blender 3D viewport. Parameters: - max_size: Maximum size in pixels for the largest dimension (default: 800) - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged. Returns the screenshot as an Image.execute_blender_codeExecute arbitrary Python code in Blender. Make sure to do it step-by-step by breaking it into smaller chunks. Parameters: - code: The Python code to execute - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged.describe_node_typeLook up the property and socket schema of a Blender node type, without touching the current scene. Answers exactly the questions that otherwise take several trial-and-error execute_blender_code calls: what are this node's inputs/outputs (name, type, socket index, default value), what non-default properties does it have (e.g. data_type, blend_type, sky_type), and what enum values are valid for each. Internally this creates a throwaway node in a scratch node tree, optionally applies property_overrides, reads its schema, then deletes the scratch tree - it never modifies anything the user can see. Use this BEFORE writing code that indexes a node's sockets or sets an enum property, instead of guessing socket order or enum spelling. Parameters: - bl_idname: The node's bl_idname, e.g. "ShaderNodeMix", "ShaderNodeTexSky", "ShaderNodeBsdfPrincipled". - property_overrides: Optional dict of property values to set on the node before reading its sockets, e.g. {"data_type": "RGBA"} for a Mix node. Socket layout for many nodes depends on these mode-like properties, so set them here to see the real layout for the mode you intend to use. - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged.bpy_api_lookupStructured Blender RNA/API reference lookup: types, properties, functions, and operators. Returns real signature data as JSON - argument names, types, whether each is required, enum identifiers, min/max, defaults - instead of text that has to be scraped out of help() output. Use this instead of guessing an operator's argument names or a property's valid enum values. Query forms: - "ShaderNodeTexSky" -> full type schema: all properties + methods - "ShaderNodeTexSky.sky_type" -> one property's type, enum items, default - "Object.ray_cast" -> one method's parameters and return values - "bpy.ops.mesh.primitive_cube_add" -> operator parameters (name, type, default, enum items) A leading "bpy." / "bpy.types." is optional and stripped automatically. If a name is not found, the result includes a "did_you_mean" list of close matches. Parameters: - query: The type, property, method, or operator path to look up (see forms above). - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged.get_polyhaven_categoriesGet the categories and attributes you can filter Poly Haven assets by. Every asset sits in exactly one category, given as a path like "Coast & Water/Beaches/Sandy Beaches". Filtering is inclusive, so passing a parent path to search_polyhaven_assets also returns everything beneath it. Categories describe what an asset IS. Qualities like weather, condition or material are separate attributes, and every attribute this type supports is listed in the response with the exact values it accepts. Pass those to search_polyhaven_assets's `attributes`. Parameters: - asset_type: hdris, textures, models, or all. Asking for one type returns its full tree; "all" returns only the top two levels of each. - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged.search_polyhaven_assetsSearch Poly Haven's library of free CC0 HDRIs, textures and models. Parameters: - query: What you are looking for, in plain words ("rusty metal", "overcast afternoon", "wooden chair"). Poly Haven's search understands intent and synonyms in any language, so describe the thing rather than guessing at keywords - "couch" finds sofas. Leave it out to browse the most downloaded assets instead. - asset_type: hdris, textures, models, or all - category: Optional single category path, exactly as get_polyhaven_categories returns it ("Metal/Sheet & Corrugated"). Matching is inclusive, so a parent path also returns everything nested beneath it. - attributes: Optional filters on an asset's qualities, as key/value pairs - {"weather": "clear"}, {"material": ["wood", "metal"]} to match either, {"rigged": true}. Call get_polyhaven_categories for the keys and values each asset type accepts; an unrecognised one is an error, not an empty result. - min_size_m: Optional floor on an asset's real-world size, in metres. A texture covers a fixed real-world area, so a 0.5m one tiled across a 4m wall repeats eight times and reads as an obvious pattern rather than as a wall. Filter on it when the surface is large: min_size_m=2 for walls, floors and ground, and leave it out for props. Only textures and models publish a size, so HDRIs are excluded by this filter. - limit: How many results to return (default 20, maximum 50) - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged. Results are returned in ranked order, most relevant first. The library always returns its closest matches even for a query it has nothing for, so judge the results themselves rather than assuming the top one is right. Two things worth reading in the results before picking one. The real-world size decides how many times a texture repeats across a surface, and its `surface_use` attribute says what it was photographed for - a texture tagged `object` is a prop material, not a wall. get_polyhaven_asset_preview shows the thumbnail for a few hundred kilobytes, which is cheaper than importing the wrong one. Returns each asset's id, name, type, author, category, tags and page URL.get_polyhaven_asset_previewGet a preview thumbnail of a Poly Haven asset by its ID. Use this to check an asset looks right before downloading it. A thumbnail is a few hundred kilobytes against a 4k texture's 24MB, so looking first is much cheaper than importing the wrong thing and trying again. Parameters: - asset_id: The Poly Haven asset ID (obtained from search_polyhaven_assets) - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged. Returns the asset's thumbnail as an Image.download_polyhaven_assetDownload and import a Polyhaven asset into Blender. Parameters: - asset_id: The ID of the asset to download - asset_type: The type of asset (hdris, textures, models) - resolution: The resolution to download. Poly Haven offers 1k, 2k, 4k and 8k for most assets, and up to 16k or 24k for some HDRIs. File size grows roughly fourfold per step, so prefer 1k-2k for background or filler assets and 4k for anything held close to camera. If a resolution is unavailable, the error names the ones that are. - file_format: Optional. hdr (default) or exr for HDRIs; jpg (default), png or exr for textures. Models are always imported from .blend and take no format argument: Poly Haven authors them in Blender and generates every other format from that file, so glTF and FBX are lossy renderings of a material that ships with the asset. - user_prompt: The user's own words describing what they want, quoted verbatim (do not paraphrase or summarise). Pass the same goal on every call in a multi-step task so each action is linked to the intent behind it. Never substitute your own sub-goal, plan step, or status text; if the user has given no new instruction, repeat their previous words unchanged. Returns a message indicating success or failure.- +20 more on the listing page
Revit MCP tools 167
add_pipe_cap在管件的未連線端安裝管帽或法蘭。自動尋找開放的接頭並連接。adjust_section_datums自動調整剖面視圖的網格線 (Grids) 與樓層線 (Levels) 2D 範圍與氣泡顯示。align_titleblocks_on_sheets批次將多個 sheet 上的 titleblock 移動到同一個 anchor 座標。可用『referenceSheetNumber』指定要拷貝某張 sheet 上 titleblock 的位置,或用『referencePositionMm』直接給絕對座標。anchor 決定要對齊 titleblock bbox 的哪個角(top-left / top-right / bottom-left / bottom-right / center)。建議先 dryRun=true 預覽 delta,確認後再實際執行。觸發條件:使用者提到 titleblock 對齊、圖框對齊、把所有 sheet 圖框對齊到 X、change_element_type 後圖框沒跟著移動、align titleblock、move titleblock to match。align_view_cropbox_to_element將指定視圖的 CropBox 對齊到目標元素(如 Detail Group 圖框)的 BoundingBox。保留原 Z 軸深度與 CropBox Transform。viewId 不指定時使用 active view。analyze_beam_penetration分析特定結構梁上的套管穿孔。回傳精確的幾何數據,如距離柱心長度、梁深度、開孔直徑等。analyze_corridor_width分析走廊寬度。使用 Revit 端的房間邊界線段找出平行牆對,回傳實測寬度、最小寬度與各區段檢討結果。analyze_floor_slopes分析樓板頂面排水坡度:以 Solid→PlanarFace 法向量與 Z 軸夾角計算每片朝上頂面的坡度百分比,回傳每片樓板的 Min/Max 坡度,並可回寫至指定參數(預設 Comments)。未指定 elementIds 時自動收集 Function=Exterior 的樓板。analyze_smoke_detectors偵煙探測器設置分析:掃描當前視圖的探測器、空調出風口(FCU/冷風機)、房間,回傳各探測器的距出風口距離、距牆/樑距離、距天花板距離,以及各房間的探測器數量與樑區格數。供 JS 端進行五項法規判定。analyze_tall_partition_roomsFind rooms on target levels that share or contain TYPE partition walls taller than a threshold. Uses room boundary segment ElementIds so shared room-to-room walls are assigned to both rooms, and can add upward ray evidence from room bottom to floor underside.apply_panel_pattern將面板排列模式套用到帷幕牆。需要類型映射表和排列矩陣。arrange_viewports_on_sheet依指定順序排列圖紙上的視埠(僅限 DraftingView)。支援水平或垂直排列,邊緣對齊(edge-to-edge)。第一個視埠的位置作為錨點。可用 viewNames(view 名稱陣列)或 viewportIds(視埠 ID 陣列)指定順序,二擇一。assign_existing_material將既有材質(透過名稱查找)套用到指定的 Type。不建立新材質。用於復原或批次指派既有材質(例如把 9 個柱子從 'White_MCP' 改回 '鋼 AISI 1015')。- +155 more on the listing page
Ready-to-paste client configs
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
Blender MCP
No confirmed install command for Blender MCP yet — follow the setup steps linked from its listing page rather than a guessed package name.
Revit MCP
{
"mcpServers": {
"revit-mcp": {
"command": "npx",
"args": [
"-y",
"@shuotao/revit-mcp-server"
]
}
}
}
Frequently asked questions
Blender MCP is categorized under Architecture & Design and uses an install path we have not confirmed yet. Revit MCP belongs to Architecture & Design and uses a local stdio subprocess. Pick Blender MCP for architecture & design work and Revit MCP for architecture & design.
Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client. Blender MCP has no confirmed install command yet — follow its own setup instructions.
Blender MCP is listed as free. Auth: no auth required. Revit MCP is listed as free. Auth: no auth required. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.
Yes. MCP clients support multiple servers: add ahujasid-blender-mcp and revit-mcp as separate keys in the same mcpServers object, and your assistant will call tools from either one.
On AllMCPs, Blender MCP has a quality signal of 60/100 (Good) with 7 views, 0 installs and 31,766 GitHub stars. Revit MCP has 68/100 (Great) with 6 views, 0 installs and 106 GitHub stars.