Atlas / MCP servers / bimwright / rvt-mcp

rvt-mcpBLOCK

mcp/bimwright/rvt-mcp

BIMwright — AI-native Revit MCP server (Revit 2022–2027)

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
—
Transport
stdio
License
Apache-2.0
Stars
68
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

rvt-mcp

MCP gateway for Autodesk Revit — local tools for agents, optional personal bake loop

English · Tiếng Việt · 简体中文 · 日本語

What it is

An early all-C# MCP implementation for Revit — researched and implemented since March 2026.

rvt-mcp is a local bridge between an MCP client and a running Revit session. A .NET 8 server talks MCP over stdio; a thin add-in per Revit year (2022–2027) runs inside Revit and is reached over localhost TCP (≤2024) or a named pipe (≥2025). Nothing leaves the machine, it is C# end to end, and lengths are millimetres at the tool boundary. Details: ARCHITECTURE.md.

Agents get a typed tool surface for common Revit work, a C# escape hatch for everything else, and an optional way to turn repeated patterns into per

Read from source at commit 06a7a7014114OBSERVED · 2026-10-08
02

Trust audit

BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (1 observation(s))
Network
declared (2 observation(s))
Shell
none-observed
Dependencies
pinned
Secrets in source
none-found

Findings (16)

HIGHPrompt injection · prompt.zero_width · CWE-94, CWE-1427
AGENTS.md:1
<!-- agents-install-guide -->
Why it matters. invisible characters in instruction text
Fix. strip non-printing characters
HIGHPrompt injection · prompt.zero_width · CWE-94, CWE-1427
CLAUDE.md:1
# RvtMcp-MCP
Why it matters. invisible characters in instruction text
Fix. strip non-printing characters
HIGHPrompt injection · prompt.zero_width · CWE-94, CWE-1427
CONTRIBUTING.md:1
# Contributing to rvt-mcp
Why it matters. invisible characters in instruction text
Fix. strip non-printing characters
HIGHPrompt injection · prompt.zero_width · CWE-94, CWE-1427
docs/firm-profiles/README.md:1
# Firm Profiles
Why it matters. invisible characters in instruction text
Fix. strip non-printing characters
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/server/Program.cs:192
builder.WebHost.UseUrls($"http://127.0.0.1:{port}");
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/server/Program.cs:211
Console.Error.WriteLine($"[RvtMcp] SSE server listening on http://127.0.0.1:{port}");
LOWInventory / provenance · inv.hidden_file · CWE-1104
.mcp.json.example
.mcp.json.example
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/installer/pack-nupkg.Tests.ps1:7
$packer = (Resolve-Path (Join-Path $PSScriptRoot '../../scripts/publish-nupkg.ps1')).Path
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/installer/test_verify_package.py:60
for name in ('../outside.txt', 'server/../../outside.txt', '/absolute.txt',
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/installer/uninstall.Tests.ps1:23
$uninstaller = Join-Path $PSScriptRoot '../../scripts/uninstall-all.ps1'
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/installer/upgrade.Tests.ps1:23
$installer = Join-Path $PSScriptRoot '../../scripts/install.ps1'
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/installer/upgrade.Tests.ps1:819
$path = (Resolve-Path (Join-Path $PSScriptRoot "../../scripts/$name")).Path
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
README.md:318
send_code defaults **on**, independently of ToolBaker; call-log defaults **off**. CLI overrides environment variables, which override JSON. Authenticated server settings override plugin settings for t
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
docs/install.md:136
After recovery, repeat the [three verification stages](#verify-and-hand-off). A closed Revit session or a pending Desktop restart is not a reason to uninstall or purge an otherwise valid installation.
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWInventory / provenance · mcp.no_tools_extracted · CWE-1104
server.json
Why it matters. the tool list is enumerated at runtime by tools/list, not declared in source
Fix. the page says so rather than showing an empty table
INFOPrompt injection · prompt.conditional_escalation · CWE-94, CWE-1427
AGENTS.md:41
If the user explicitly says "skip the prompts, just install", still preview changes and verify the result; combine the two approval gates into one upfront approval. **Never silently skip preview or ve

Gates applied: no_behavioural_pass.

Audited 2026-10-08 · audit v0.4.1 · source sha 06a7a7014114full audit observations/trust-audit/mcp-server/bimwright__rvt-mcp.json · Report an issue / request a re-scan
03

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-0806a7a7014114BLOCKD69first audit
04

Questions

What is the rvt-mcp MCP server?

BIMwright — AI-native Revit MCP server (Revit 2022–2027)

Is rvt-mcp safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 4 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does rvt-mcp need?

No credential environment variables were found in its source, so it appears to need none.

How does rvt-mcp run?

It speaks stdio, so it runs as a local process your client starts.

How current is this page?

The grade is for one exact copy of the source (06a7a7014114), read on 2026-10-08. The repository is watched and re-audited when it changes.

Advertisement