Revit vs Illustrator MCP Server
A side-by-side look at the Revit and Illustrator MCP Server MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Revit for architecture & design work over a hosted endpoint; choose Illustrator MCP Server 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 Revit when
- You need dedicated capabilities in the Architecture & Design domain.
- You prefer a remote HTTP/SSE transport.
- You have the keys it needs:
SCANBIM_USER_KEY. - You want tools like
revit_upload, revit_get_elements, revit_get_parameters.
Choose Illustrator MCP Server 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 have the keys it needs:
ILLUSTRATOR_MCP_TIMEOUT_NORMAL, ILLUSTRATOR_MCP_TIMEOUT_HEAVY. - You want tools like
get_document_info, get_artboards, get_layers.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Architecture & Design | Architecture & Design |
| Quality signal | 51/100 · Good | 71/100 · Great |
| Install command | Confirmed | Confirmed |
| Transport | Remote HTTP/SSE | Local subprocess (stdio) |
| Auth | Not declared | No auth required |
| Pricing | Not declared | Free |
| Required env vars | SCANBIM_USER_KEY | ILLUSTRATOR_MCP_TIMEOUT_NORMALILLUSTRATOR_MCP_TIMEOUT_HEAVY |
| Verified owner | Community listing | Community listing |
| GitHub stars | 0 | 179 |
| Directory activity | 1 views 0 installs 0 upvotes | 7 views 0 installs 0 upvotes |
| Tools | 8 | 66 |
| Full listing | View Revit | View Illustrator MCP Server |
Tools & capabilities
Revit tools 8
revit_uploadWhen to use: Ingest a Revit (.rvt / .rfa / .rte / .rft) file into Autodesk Platform Services by downloading it from a publicly reachable URL, uploading it to an OSS bucket, and starting an SVF2 translation so downstream revit_* tools can read elements, parameters, sheets, and views. When NOT to use: Do not call if you already have a translated URN (use the existing model_id instead), if the file is not a Revit source file, or if the URL requires authentication the worker cannot satisfy. APS scopes: data:read data:write data:create bucket:read bucket:create viewables:read (OSS bucket create + object PUT + Model Derivative job). Rate limits: APS default ~50 req/min per app per endpoint; Model Derivative translation jobs ~60 req/min; OSS uploads size-limited per file to 100MB for direct upload, larger via resumable. Errors: 401 APS token expired — refresh credentials and retry. 403 scope insufficient — request data:write + bucket:create. 404 bucket/object not found — confirm bucket was created. 409 bucket exists — safe to ignore, reuse it. 429 rate limited — back off with exponential delay. 5xx APS upstream — retry with jitter up to 3x, then surface. Side effects: Creates a new transient OSS bucket named scanbim-revit-<timestamp>, uploads the object, and starts a Model Derivative translation job. NOT idempotent — each call creates a fresh bucket and new URN.revit_get_elementsWhen to use: After a Revit model has finished translating, fetch the first ~100 elements belonging to a Revit category (e.g. Walls, Doors, Windows, Structural Columns) with their objectid, name, externalId, and property bag. When NOT to use: Do not call before translation completes (manifest.status must be success), and do not use for free-text searches across the whole model — filter by category here or use revit_run_schedule for tabular views. APS scopes: data:read viewables:read (Model Derivative metadata + properties). Rate limits: APS default ~50 req/min per app per endpoint; Model Derivative translation jobs ~60 req/min; OSS uploads size-limited per file to 100MB for direct upload, larger via resumable. Errors: 401 APS token expired — refresh. 403 scope insufficient — add viewables:read. 404 URN not found — confirm model_id and that translation has run. 429 rate limited — back off. 5xx APS upstream — retry with jitter. Side effects: Read-only. Idempotent.revit_get_parametersWhen to use: Enumerate the Revit parameters (type + instance) that appear on elements in a given category, or on one specific element by objectid. Returns unique values per parameter and how many elements carry it — ideal for schema discovery before building a schedule. When NOT to use: Do not use when you just need the elements themselves (use revit_get_elements), or to modify values — this is read-only. APS scopes: data:read viewables:read (Model Derivative metadata + properties). Rate limits: APS default ~50 req/min per app per endpoint; Model Derivative translation jobs ~60 req/min; OSS uploads size-limited per file to 100MB for direct upload, larger via resumable. Errors: 401 APS token expired — refresh. 403 scope insufficient — add viewables:read. 404 URN not found — verify model_id. 429 rate limited — back off. 5xx APS upstream — retry with jitter. Side effects: Read-only. Idempotent.revit_run_scheduleWhen to use: Build a tabular, spreadsheet-style schedule (rows = elements matching a keyword, columns = up to 15 shared parameters) from a translated Revit model — useful for Door Schedules, Wall Schedules, Room Schedules, and QA/QC exports. When NOT to use: Do not use when you only need raw element metadata (use revit_get_elements) or parameter schema (use revit_get_parameters). APS scopes: data:read viewables:read (Model Derivative metadata + properties). Rate limits: APS default ~50 req/min per app per endpoint; Model Derivative translation jobs ~60 req/min; OSS uploads size-limited per file to 100MB for direct upload, larger via resumable. Errors: 401 APS token expired — refresh. 403 scope insufficient — add viewables:read. 404 URN not found — check model_id. 429 rate limited — back off. 5xx APS upstream — retry with jitter. Side effects: Read-only. Idempotent.revit_clash_detectWhen to use: Perform a lightweight clash analysis between two Revit categories (e.g. Mechanical Equipment vs Structural Framing) using bounding-box overlap where available, falling back to shared-Level proximity, then annotate with any matching VDC rules stored in the D1 database. When NOT to use: Do not use as a substitute for Navisworks Manage for contractual clash reports — this is a first-pass coordination sniff test, not a certified Clash Detective run. APS scopes: data:read viewables:read (Model Derivative metadata + properties). Rate limits: APS default ~50 req/min per app per endpoint; Model Derivative translation jobs ~60 req/min; OSS uploads size-limited per file to 100MB for direct upload, larger via resumable. Errors: 401 APS token expired — refresh. 403 scope insufficient — add viewables:read. 404 URN not found — verify model_id. 429 rate limited — back off. 5xx APS upstream — retry with jitter. Side effects: Read-only against APS. May read from D1 vdc_rules table if present. Idempotent.revit_export_ifcWhen to use: Kick off a Model Derivative translation of a previously uploaded Revit URN into IFC (IFC2x3 Coordination View 2.0 by default) so the model can be exchanged with non-Autodesk tools (Solibri, BIMcollab, Tekla, openBIM workflows). When NOT to use: Do not use for SVF/SVF2 web viewing (that happens automatically in revit_upload), and do not call repeatedly while a prior IFC job is still inprogress — poll the manifest instead. APS scopes: data:read data:write viewables:read (Model Derivative job + manifest). Rate limits: APS default ~50 req/min per app per endpoint; Model Derivative translation jobs ~60 req/min; OSS uploads size-limited per file to 100MB for direct upload, larger via resumable. Errors: 401 APS token expired — refresh. 403 scope insufficient — add data:write. 404 URN not found — confirm model_id was translated. 409 not applicable. 429 rate limited — back off. 5xx APS upstream — retry with jitter up to 3x. Side effects: Creates a Model Derivative job and, on completion, a new IFC derivative inside the model's manifest. Safe to re-run (APS deduplicates) but each call with x-ads-force may retranslate.revit_get_sheetsWhen to use: Enumerate the drawing sheets (title blocks with sheet number + sheet name like 'A-101: First Floor Plan') published from a translated Revit model, so an agent can pick which sheet to render, review, or cross-reference. When NOT to use: Do not use to list model views like floor plans or 3D views (use revit_get_views) — this returns only 2D sheet entries. APS scopes: data:read viewables:read (Model Derivative metadata + object tree). Rate limits: APS default ~50 req/min per app per endpoint; Model Derivative translation jobs ~60 req/min; OSS uploads size-limited per file to 100MB for direct upload, larger via resumable. Errors: 401 APS token expired — refresh. 403 scope insufficient — add viewables:read. 404 URN not found — check model_id. 429 rate limited — back off. 5xx APS upstream — retry with jitter. Side effects: Read-only. Idempotent.revit_get_viewsWhen to use: Return every view (both 2D — floor plans, ceiling plans, elevations, sections, sheets — and 3D — default {3D}, perspective views, isometric views) in the translated Revit model, including each view's GUID, name, role, and whether it is the master view. When NOT to use: Do not use when you only want drawing sheets (use revit_get_sheets) or element data inside a view (use revit_get_elements / revit_run_schedule). APS scopes: data:read viewables:read (Model Derivative metadata + object tree). Rate limits: APS default ~50 req/min per app per endpoint; Model Derivative translation jobs ~60 req/min; OSS uploads size-limited per file to 100MB for direct upload, larger via resumable. Errors: 401 APS token expired — refresh. 403 scope insufficient — add viewables:read. 404 URN not found — check model_id. 429 rate limited — back off. 5xx APS upstream — retry with jitter. Side effects: Read-only. Idempotent.
Illustrator MCP Server tools 66
get_document_infoGet document metadataget_artboardsGet all artboard informationget_layersGet layer structure as a treeget_selectionGet detailed information about the currently selected objects. While editing text (text cursor or selected characters), the containing text frame is returned with a textSelection field (selected contents, length, start; insertionPoint: true for a bare cursor).list_text_framesList text frames with summary-level information (including orientation and threaded-frame links nextFrameUUID/previousFrameUUID). Supports reading-order sort, pagination, and a lightweight contents-only mode. layer_name includes text inside groups and sublayers of that layer.get_text_frame_detailGet detailed text frame attributes including per-character runs (font, tracking, akiLeft/akiRight, tsume, proportionalMetrics), kerning pairs with manual kerning values (1/1000 em), paragraph attributes (leading, autoLeading, paragraph style), orientation (horizontal/vertical) and threaded-frame links (nextFrameUUID/previousFrameUUID). Returns cssHints for web/CSS reproduction.get_colorsGet all color information used in the document. usedFillColors / usedStrokeColors list each distinct color once with a count of how many paths and text ranges use it (most used first).get_path_itemsGet path and shape data, including paths inside groups and compound paths (clipping: true marks a clipping-mask path). Note: fill/stroke do not include per-attribute opacity; use the item-level opacity field for transparency.get_guidelinesGet guide informationget_groupsGet structure of groups, clipping masks, and compound paths. Children of a clipping-mask group mark the mask path with clipping: true. When depth cuts the tree off, the item has childrenTruncated: true and childCount (children is empty only because of the depth limit).get_effectsGet effect and appearance informationget_imagesGet embedded and linked image information: file path, broken-link status (linkBroken: file missing on disk), pixel size, and effective resolution (ppi at the placed size; rotation-safe).- +54 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.
Revit
{
"mcpServers": {
"revit": {
"url": "https://revit-mcp.itmartin24.workers.dev/mcp"
}
}
}
Illustrator MCP Server
{
"mcpServers": {
"illustrator-mcp-server": {
"command": "npx",
"args": [
"-y",
"illustrator-mcp-server"
],
"env": {
"ILLUSTRATOR_MCP_TIMEOUT_NORMAL": "YOUR_ILLUSTRATOR_MCP_TIMEOUT_NORMAL_HERE",
"ILLUSTRATOR_MCP_TIMEOUT_HEAVY": "YOUR_ILLUSTRATOR_MCP_TIMEOUT_HEAVY_HERE"
}
}
}
}
Frequently asked questions
Revit is categorized under Architecture & Design and uses a remote HTTP/SSE transport. Illustrator MCP Server belongs to Architecture & Design and uses a local stdio subprocess. Pick Revit for architecture & design work and Illustrator MCP Server 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.
Revit has no declared pricing — check the project's own site. Illustrator MCP Server 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 revit and illustrator-mcp-server as separate keys in the same mcpServers object, and your assistant will call tools from either one.
On AllMCPs, Revit has a quality signal of 51/100 (Good) with 1 views, 0 installs and 0 GitHub stars. Illustrator MCP Server has 71/100 (Great) with 7 views, 0 installs and 179 GitHub stars.