All MCPsRevit Python MCP
CAD & BIM

Revit Python MCP

This Python MCP server connects an MCP-compatible assistant to Revit through FastMCP and pyRevit Routes. It provides reading, placement, visualization, and document-management tools as a standalone Python project.

When to use it

Useful for prototyping Python-based Revit workflows with pyRevit on a properly isolated test workstation and model.

Third-party projects · manually verified · not maintained by Educasium

Revit Python MCP connects an MCP-compatible assistant, such as Claude Desktop or Claude Code, to Autodesk Revit through Python, FastMCP, and pyRevit Routes. This page covers only mcp-server-for-revit-python. It is an independent project with its own pyRevit extension, server, and tool list.

The chain turns a request into an MCP tool call, forwards it over HTTP to pyRevit Routes on the local workstation, and executes the operation through the Revit API. It can read levels and views, place certain families, visualize parameters, or manage documents according to the functions actually implemented. This third-party open-source project is not an official Autodesk connector and must be assessed from its own sources.

Contents

  1. What Revit Python MCP actually does
  2. Connecting Revit and Python with pyRevit Routes
  3. Available tools and current limits
  4. Useful capabilities for a BIM firm
  5. Comparison with Dynamo
  6. Security, governance, and limits
  7. Educasium's position
  8. Sources and next reading

What Revit Python MCP actually does

Key point: Revit Python MCP exposes a selected set of Revit actions to an assistant through Python. The AI client does not communicate directly with Revit. It launches or contacts the FastMCP server, which converts each call into a request to a pyRevit extension loaded in the application.

A Python server and a pyRevit extension

The repository contains two parts that must work together. main.py hosts the MCP server, supports stdio or HTTP transports, and forwards requests. The pyRevit extension registers Routes endpoints that execute inside Revit, where the Autodesk API is available. If Revit, pyRevit, or Routes Server is stopped, the MCP server may remain visible to the assistant while business operations fail.

This separation makes prototyping accessible to a team that already uses Python or pyRevit. It also creates two diagnostic surfaces: the connection from the client to the MCP server and the local HTTP connection between that server and Revit. A response from main.py alone does not prove that the correct Revit document is open or that the result is accurate.

A third-party project to assess on its own

The repository is published under the MIT license by the mcp-servers-for-revit organization. Autodesk and pyRevitLabs are not presented as its maintainers. Its documentation describes a minimal implementation intended for prototyping and extension, so a firm must verify every function on a witness model rather than treating it as a vendor-supported product.

Connecting Revit and Python with pyRevit Routes

Key point: the Python route uses two complementary local servers. The MCP server talks to the assistant; pyRevit Routes receives HTTP requests inside Revit and calls the Revit API. The verified flow is MCP client to main.py over stdio or HTTP, then a local request to pyRevit Routes on port 48884, then the Revit API. The repository uses FastMCP on the server side and ships a separate pyRevit extension for routes that run inside Revit.

Source-checked setup procedure

This procedure was checked against the project's sources, but Educasium has not yet run it end to end against a live Revit instance. Reproduce it on a test workstation and model before adoption.

  1. Install pyRevit and open Revit. The official pyRevit documentation confirms that it supports Revit add-on development in IronPython or CPython. The pyRevit ribbon tab must appear before proceeding.
  2. Enable Routes Server. In pyRevit settings, open Routes and enable Routes Server. The project README states that it listens locally at http://localhost:48884/.
  3. Install the Python MCP extension. The simplest route uses the pyRevit Extensions window. For a manual install, clone the repository, append .extension to the root folder name, then register it under Custom Extensions before reloading pyRevit.
  4. Check the Revit bridge. Keep Revit open with a test document. The address http://localhost:48884/revit_mcp/status/ should return an active status, a revit_available flag, and the document title.
  5. Configure the MCP client. The repository documents uv with the mcp[cli] package. In stdio mode, the client launches main.py locally. In HTTP mode, main.py can expose /mcp at http://127.0.0.1:8000. The path to main.py must be absolute on the workstation.
  6. Build a genuinely restricted test profile. The Python server registers execute_revit_code and several write tools by default. In a controlled fork, remove their MCP registration and the corresponding code-execution, write, and document-management routes from the extension startup. Before connecting the assistant, use MCP Inspector to confirm that they are absent from the tool list and verify that their Routes endpoints are inaccessible. Then request only Revit status, model information, levels, and available views, comparing every result with the witness model.

MCP client configuration

ClientRepository-verified setting
Claude Desktop over stdiocommand: uv; args: run, --with, mcp[cli], mcp, run, C:/absolute/path/main.py
Claude Code over stdioclaude mcp add -s user "Revit-Connector" -- uv run --with "mcp[cli]" mcp run C:/absolute/path/main.py
HTTP-compatible clientrun uv run --with "mcp[cli]" main.py --combined, then register http://localhost:8000/mcp

Restart the MCP client after changing its configuration. Revit and Routes Server must remain open during the test. If /revit_mcp/status/ does not respond, repair the pyRevit bridge before troubleshooting the AI client.

What is actually available

The Python repository status table, checked on October 8, 2026, marks model, level, view, and family reading as implemented, together with view export, family placement, point-based element creation, color splash, document open and save, and synchronize with central. Current selection, line- and surface-based element creation, deletion, and generic modification are still marked pending. A video demonstration should therefore not be treated as proof that any particular command has shipped.

The execute_revit_code tool is already marked implemented and can run IronPython directly in the Revit context. It is the most powerful capability and the highest-risk one: it should not be available in a read-only pilot. The repository also states that pyRevit Routes is still a draft API and lacks built-in authentication.

The official pyRevit Agent Runtime path remains experimental

The official documentation now describes Agent Runtime, a path independent of Routes that uses the pyrevit mcp stdio server and a named pipe restricted to the current Windows user. It adds readonly, ask, and auto policies, plus human approval and rollback for changes. As of October 8, 2026, it is still off by default, Phase 0 is validated only on Revit 2024 and 2025, and the CLI/MCP phase is still in progress: it is a safer direction to monitor, not a stable production recommendation. Even its readonly mode does not sandbox a Python script's file, network, or process side effects.

Available tools and current limits

Key point: the Python repository's status table is the reference for which functions are actually available. Every tool discussed on this page belongs to the FastMCP server and Python routes in the same repository.

Reading and visualization

Implemented read functions include connection status, general model information, levels, exportable views, the current view, visible elements, and available families. They are suitable for a first pilot because their results can be checked quickly against the Revit interface and existing schedules.

View export and color splash add a visual layer. They can help identify a category or inspect the distribution of a parameter, but the result depends on filters, values, and the active document. A colored visualization is not BIM validation; it must remain tied to an explicit checking rule.

Writing and document management

The repository marks family placement, point-based element creation, document open, save, and close, and synchronize with central as available. These operations change Revit or file state and should not be enabled during the first trial. Line- or surface-based creation, deletion, and generic modification remain listed as unimplemented at the time of verification.

execute_revit_code is a special case: it can run IronPython in the Revit context and bypasses the guardrails of a business-command list. Hiding it in the user interface is not enough. A restricted pilot should remove both its MCP registration and its extension route, then verify their absence before connecting to any model.

Useful capabilities for a BIM firm

Key point: the most credible use cases are not spectacular demos, but repetitive, verifiable, reversible operations. Revit MCP becomes interesting when the assistant manipulates elements the team can quickly check in the model.

Reading and controlling the model

The safest uses are queries that a BIM manager can confirm without interpretation: active document, level list, view inventory, available families, or elements visible in the current view. The assistant can prepare a summary, but the model remains the source of truth and any discrepancy must be recorded.

After read access is validated, family placement or point-based element creation can be tested on a disposable copy. The protocol should specify the family, type, level, coordinates, unit, and expected result. A technically successful operation can still be wrong for the project if it uses the wrong level or type.

Data extraction and take-offs

Model, level, view, family, and visible-element information can support a structured extraction or preliminary check. The server does not turn these responses into certified take-offs. Define the expected fields, retain the source document, and check units before reusing the data in a table, note, or cost estimate.

The extracted data still depends on model quality. If rooms are not enclosed, if materials are assigned incorrectly, or if firm-specific parameters are inconsistent, the assistant will produce a clean summary from a weak base. This is the same limit as standard Revit schedules: automation does not repair a fragile BIM structure.

Comparison with Dynamo

Key point: Revit Python MCP does not occupy the same place as Dynamo. It is more conversational, but less mature as a visual scripting and validation environment.

OptionNatural useMain strengthWatch point
Revit Python MCPDriving Revit from a local AI assistant with Python and pyRevitFast prototyping, explicit tools, extensible routesThird-party project, unauthenticated Routes, uneven maturity
DynamoAutomating Revit with visual graphs and scriptsProven ecosystem in Revit firmsLearning curve and graph maintenance
Internal pyRevit scriptRunning a known Python command from the ribbonClear interaction and control of the scriptLess conversational, internal maintenance required
Internal Revit add-inBuilding a targeted workflow directly with the Revit APIControl over code, permissions, and validationDevelopment, maintenance, and testing budget required

Revit MCP versus Dynamo

Dynamo remains the reference when a firm wants workflows that are reproducible, versioned, and transferable to a BIM team. Revit Python MCP fits better with punctual natural-language operations: querying a view, extracting a summary, or testing a family placement on a copy of the model. Good usage is not about replacing every Dynamo graph, but identifying tasks where a conversational interaction is faster than a full script.

For regulatory work, critical schedules, or transformations across hundreds of elements, Dynamo or a versioned pyRevit script keeps the advantage of readability and prior validation. The MCP can come earlier to explore or prepare, then the BIM team formalizes what should become durable. This separation prevents the assistant from becoming a black-box production system.

Security, governance, and limits

Key point: the chain runs locally, but local does not mean risk-free. Commands apply to a real Revit model; the main risk is not only confidentiality, but model integrity.

Confidentiality and local data

The chain runs its Revit bridge on the local workstation. The Revit file itself is not sent to GitHub or PyPI. However, excerpts passed to the assistant, including element names, parameters, and analysis results, can enter the model conversation. Data handling therefore also depends on the MCP client and model provider.

For a firm bound by confidentiality clauses, the rule should be simple: test on an internal model or anonymized copy, never on a sensitive client file during the first trial. Data sent to the model should be limited to what the task requires. This discipline also applies to Claude Desktop, Claude Code, Cline, or any other compatible MCP client.

What should not be automated without control

execute_revit_code, document operations, and write tools should be treated as high-privilege capabilities. They should not be available to the whole team by default. The current pyRevit documentation states that Routes has no authentication and may listen on 0.0.0.0. The Python project's Routes documentation specifies that the first Revit instance normally uses port 48884, while simultaneous instances move to 48885, 48886, and onward. Inventory every active Routes listener, block each affected port or the complete configured range in Windows Firewall for network profiles, and never expose them to the Internet, even behind a simple authenticated gateway.

The repository is primarily a prototyping base. That does not replace a firm protocol: backup, witness model, BIM manager review, exact inventory of enabled tools and routes, call logging, and validation before any production use.

Educasium's position

Key point: Educasium can help a firm understand and frame this kind of tool, but should not sell it as production-validated without internal proof.

Available experience

Educasium trains architects and construction professionals to use AI operationally, with particular attention to BIM workflows, deliverable quality, and professional limits. We have not yet deployed this exact Revit MCP server in a client firm or measured a verified time saving on a real project. That absence should remain visible: this article analyzes a verified open-source tool, not an Educasium case study.

That caution improves the recommendation. Instead of promising general Revit automation, the right starting point is a controlled scope: document status, level list, view inventory, or family placement on a test model. The firm can then decide whether the connector deserves a place in its internal BIM reference.

Hypothetical implementation

Hypothetical implementation. For a serious Python pilot, Educasium would recommend copying a training model, installing pyRevit and the extension for the team's Revit version, then checking /revit_mcp/status/. The upstream repository does not meet this read-only gate unchanged: a controlled fork would remove code-execution, write, and document-management tools from the MCP registry and the corresponding routes from the extension startup. MCP Inspector would confirm that only get_revit_status, get_revit_model_info, list_levels, and list_revit_views are advertised, then direct requests would verify that the removed endpoints are inaccessible. The BIM manager would record mismatches between responses and the model, data sent to the model provider, errors, and cases where Dynamo remains preferable.

Once that protocol is validated, the team could selectively restore one write tool that is actually available, such as place_family or create_point_based_element, only on a disposable model copy. The final decision should not be "adopt or reject AI in Revit", but "which commands from this server are reliable enough for the way we produce". This is a method decision, not a demo effect.

Sources and next reading

Key point: the technical information on this page comes from pyRevit documentation and the Python repository, not from a commercial demonstration. The Routes architecture, tool status, installation commands, and cited risks were checked against the sources below.

What to read next

If your firm already works in Revit, start with our guide to the best AI plugin for Revit in 2026 to distinguish design assistants, rendering tools, and BIM automation. For a wider view, also read AI and BIM: what changes for the digital model and the AI software comparison for architects.

Teams that want to frame these uses at the skills level can then look at the Mastering AI in Architecture course or the Skills hub for architects. The right goal is not adding one more tool, but deciding which Revit tasks truly deserve AI-assisted automation. Educasium is Qualiopi certified; OPCO/FIFPL funding may be available depending on status, fund criteria, approval, and remaining budget, but is not guaranteed. Contact us to review the appropriate framework.

Frequently asked questions

Is Revit Python MCP an official Autodesk tool?

No. The Python repository is published under the MIT license by the mcp-servers-for-revit organization. Autodesk and pyRevitLabs are not presented as its maintainers. A firm should treat it as third-party open-source software and test it before using it on a client project.

Which Revit versions are covered?

The Python repository does not publish an exhaustive supported-Revit matrix. Compatibility depends on the installed combination of Revit, pyRevit, and the extension. Check the current repository and pyRevit requirements on a witness workstation, then test on a model copy before rollout.

How does Python communicate with Revit?

The AI client calls the Python MCP server, main.py, over stdio or HTTP. That server turns the tool call into a local HTTP request to pyRevit Routes, which runs inside Revit on port 48884 and has access to the Revit API. The processes have separate roles: MCP talks to the assistant, while Routes talks to Revit.

Can Claude directly modify a client Revit model?

Technically, the server can place certain elements, manage documents, and execute Python code inside Revit. In production, that should not be the first step. Start on an anonymized copy, remove high-privilege tools, keep a backup, and have a BIM manager validate results before any client use.

Does Revit MCP replace Dynamo?

No. Dynamo remains better suited to visual, reproducible workflows that can be validated by the team. Revit MCP is more useful for punctual natural-language interactions, quick extractions, or tests on a model copy. The two tools can coexist if the firm clearly defines what belongs to exploration and what belongs to BIM production.