MCP AI — Complete Setup & Usage Guide

Paper Engineer Apr 18, 2026 AI (Artificial intelligence)

Overview

PaperPlus MCP AI is an AI assistant built directly into Autodesk Revit via the Model Context Protocol (MCP). You can chat with AI to query model data, run Revit commands, and get intelligent guidance — without ever leaving Revit.

There are two ways to use it. We recommend the SSE connection method because it works with your own AI client (Claude Desktop, Cursor, VS Code,...) and does not require you to enter any API key into PaperPlus settings. The embedded chat mode requires an API key and may incur costs depending on your provider.


Understanding MCP

The Model Context Protocol (MCP) is an open standard introduced by Anthropic that enables AI models to securely connect with local datasets, tools, and software environments. Just like a USB-C port provides a universal standard to connect various physical devices, MCP serves as a universal digital connector — allowing any AI model to seamlessly "plug into" your workflow and operate software systems on your behalf.

Here is how the ecosystem works under the hood:

  • MCP Host: The application where you chat and interact with the AI (e.g., Claude Desktop, Cursor, VS Code, or Windsurf).
  • MCP Client: A lightweight connection manager running inside the Host to establish and maintain communication.
  • MCP Server: The core integration engine (like the PaperPlus MCP server) that exposes your local environment and software (Revit) to the AI.
  • Tools & Resources: Specific capabilities, features, or Revit commands provided by the Server that the AI is explicitly authorized to execute.

MCP How it works diagram


Architecture

PaperPlus MCP AI is built in 4 independent layers:

Layer Component Role
UI WPF Chat Panel Chat interface, streams AI response token by token
LLM OpenAI · Gemini · Anthropic · Ollama AI provider (only needed for embedded mode)
MCP Server McpHttpServer (port 18700–18800) Lightweight HTTP server handling MCP JSON-RPC and SSE sessions
Revit Tools Revit Tool Registry Tools that execute real Revit API commands

⭐ Recommended — Method 1: SSE Connection (No API Key Required)

This is the recommended approach. When you start the MCP Server inside PaperPlus, it opens a local HTTP server on port 18700–18800. You then connect your preferred AI client — Claude Desktop, Cursor, VS Code, or Windsurf — to this server via SSE. Your AI client handles all API key costs. PaperPlus simply provides the Revit tools.

Step 1 — Start the MCP Server

In Revit, go to PaperPlus tab → AI Assistant → Start MCP Server.

Verify the server is running by opening the following URL in your browser:

http://localhost:18700/health

Expected response:

{
  "status": "running",
  "mcp_endpoint": "/mcp",
  "sse_endpoint": "/sse",
  "active_sse_sessions": 0
}
Note: The port is auto-selected from the range 18700–18800. If 18700 is not responding, try 18701, 18702, and so on. To determine the exact port number, open the AI Assistant panel in PaperPlus and click Start — the active port will be displayed there.

Step 2 — Connect Your AI Client

The SSE connection is flexible, so you can connect to any app, IDE, or model, regardless of whether it supports the SSE or HTTP MCP transport type.

Claude Desktop (highly recommended)

Prerequisite: You must install Node.js first. Download it here: Node.js — Run JavaScript Everywhere.

First, download and install Claude Desktop from claude.com/download, then sign in with your account.

Open Settings by pressing Ctrl + ,, navigate to the Developer tab, and click Edit Config. This opens the claude_desktop_config.json file — add the following entry inside "mcpServers":

{
  "mcpServers": {
    "revit": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "http://localhost:18700/sse"
      ]
    }
  }
}

Fully quit Claude Desktop (do not just close the window — right-click the tray icon and choose Quit), then reopen it. You will see "revit" listed as a connected server.

Claude Desktop — revit server connected

Please be patient for this final step: go to Manage Connectors and set Always Allow for all Revit tools. This prevents approval prompts on every request. Once done, it's ready to use!

Claude Desktop — Always Allow tools

Cursor IDE (highly recommended)

Ensure you download it from here: Cursor · Download.

Go to Settings → Tools & MCP, click "New MCP Server", and enter the following configuration:

{
  "paperplus-revit": {
    "url": "http://localhost:18700/sse",
    "transport": "sse"
  }
}

Cursor IDE MCP setup

VS Code

Install VS Code first: Download Visual Studio Code - Mac, Linux, Windows.

In the command palette (Ctrl + Shift + P), type >MCP: Add Server...

VS Code MCP Add Server command

Next, choose HTTP or Server-Sent-Events.

VS Code MCP Transport Type

Enter URL: http://localhost:18700/sse
Server ID: paperplus-revit, then choose Global.

Alternatively, you can open %APPDATA%\Code\User\mcp.json and manually add:

{
  "paperplus-revit": {
    "url": "http://localhost:18700/sse",
    "type": "sse"
  }
}

After that, open the command palette again, type >MCP: List Servers..., and enable the MCP server we just added. Please consider that in VS Code, some models may ignore certain MCP tools.

Other IDEs or Models

For other clients, you can follow a similar approach. If you have a high-performance PC, you can even use this method with local models like Ollama.


Method 2: Embedded Chat (Requires API Key)

The embedded chat panel is built directly into Revit. It requires you to supply an AI provider API key in appsettings.json.

Disclaimer: The built-in Revit chat window is currently developed as a simple, basic interface. For a full-featured, robust AI chat experience with better syntax rendering and performance, we strongly recommend using the SSE HTTP connection (Method 1) with dedicated IDEs like Claude Desktop or Cursor.

Note: We have temporarily included a default Groq API key in the configuration for testing purposes. You may use it to try out the system, but we do not recommend relying on it for long-term or production use. If you input your own key, API calls will be billed directly to your provider account.

Edit appsettings.json in the addin folder to customize your connection:

{
  "AiServices": {
    "Provider": "OpenAI",
    "OpenAI": {
      "ApiKey": "YOUR_API_KEY",
      "Model": "llama-3.3-70b-versatile",
      "Endpoint": "https://api.groq.com/openai/v1"
    }
  }
}
Provider Default Model Notes
OpenAI llama-3.3-70b-versatile Uses Groq endpoint — free tier available
Gemini gemini-2.5-flash Google AI Studio API key
Anthropic claude-sonnet-4-6 Anthropic API key
Ollama mistral Runs locally — no API key required, no cost

Open Revit → PaperPlus tab → AI Assistant and start chatting. Available slash commands:

/help             → Show available commands
/tool_list        → List all active Revit tools
/analyze_model    → Analyze the current project
/inspect_element  → Inspect the selected element

Free Alternative: Ollama (Local AI)

Run AI fully offline with no API costs. First, install and start Ollama:

ollama serve
ollama pull mistral

Then update appsettings.json:

{
  "AiServices": {
    "Provider": "Ollama",
    "Ollama": {
      "BaseUrl": "http://localhost:11434/v1",
      "Model": "mistral"
    }
  }
}

Available Revit Tools (50+ Built-in Tools)

Use /tool_list inside the chat panel to see the full live list. Below is the comprehensive list of tools you can use:

Tool Type Description
🔍 Query Tools (Safe/Read-only)
ai_element_filter Read Filter elements intelligently using natural language
export_view_image Read Export current view to an image file
find_element_by_ids Read Find and inspect elements by their exact Revit ElementId
get_active_view_info Read Get detailed information about the currently active view
get_all_elements Read Get a robust list of all instances placed in the project
get_current_project_name Read Get core project info, file path, view and sheet counts
get_element_location Read Retrieve geometric location data of elements
get_element_parameters Read Get all parameters (instance and type) for specific elements
get_elements_by_category Read List elements belonging to a specific Revit category
get_families Read Get information about loaded families and their symbols
get_family_info Read Retrieve deep technical data of a specific family
get_levels Read Get all levels in the project and their elevations
get_project_info Read General data from the Project Information category
get_rooms Read Get all rooms, their areas, numbers, and boundaries
get_selection Read Get the list of elements currently selected in the Revit UI
get_sheets Read Get all project sheets with numbers and names
get_type_parameters Read Get parameters specific to the Type definitions
get_wall_types Read Retrieve list of available wall types in the project
get_warnings Read Extract all warnings currently active in the Revit model
get_worksets Read Retrieve all user-created worksets
list_views Read Get a structured list of all project views
⚡ Modify Tools (Write/Action Required)
colorize_elements Write Highlight elements in the active view with custom colors
copy_elements Write Duplicate existing elements
create_grids Write Create new architectural grids based on coordinates
create_levels Write Create new levels at specified elevations
create_structural_framing_system Write Generate framing systems automatically
create_walls Write Create standard walls between coordinate points
delete_elements Write Remove elements entirely from the project
hide_elements Write Hide specific elements in the current view
isolate_elements Write Temporarily isolate elements in the current view
move_elements Write Translate elements to a new physical location
place_family Write Place family instances into the project space
rename_element Write Rename named elements like views or sheets
select_elements Write Update the actual selection in the Revit application window
set_element_parameter Write Modify a single parameter value on an element
set_elements_parameter Write Batch modify parameter values on multiple elements
split_ducts Write Split continuing MEP duct runs into smaller segments
📊 Data Extraction Tools
create_schedule Write Programmatically generate a new Revit Schedule
export_schedule Write Export a schedule's data out of Revit
import_schedule Write Import schedule views or definitions into the project
read_schedule_data Read Read tabular data directly from an existing schedule
🔗 Linked Model Tools
get_linked_elements Read Query elements residing inside linked RVT files
get_linked_files Read Get a list of all Revit links loaded into the current model
get_linked_rooms Read Retrieve room data hosted within linked models
🖥️ UI & Execution Tools
list_ribbon_tabs Read Get the structure of the Revit Ribbon menu
run_ui_command Write Programmatically click any tool/command on the Revit Ribbon
search_ui_commands Read Search for UI commands by name or ID
set_active_view Write Switch the active document window to a specific view
execute_dynamic_code Write Allow AI to execute dynamic C# snippets on the fly
🧠 Learning & Memory Tools
get_error_patterns Read Retrieve common structural errors for self-correction
recall_memory Read Ask the self-learning engine for past contextual data
report_learning_stats Read Show AI learning and memory accumulation statistics
save_memory Write Save custom project knowledge or guidelines to long-term memory
Write tools are only activated when the AI detects action keywords in your message (create, set, rename, delete, colorize…). This prevents the AI from modifying your model unintentionally.
It is best to keep the tool list tightly curated. If you have any suggestions to add, remove, or improve any tool, please let us know!

Important Notes

  • Dynamic port: The server picks an available port from 18700–18800. Check /health or the AI Assistant panel to confirm the actual port before configuring your IDE.
  • Localhost only: The server only binds to 127.0.0.1 — it is never exposed to your local network.
  • Revit must be open: All tool calls require Revit to be running with an active document loaded.
  • SSE session timeout: Sessions are automatically closed after 120 seconds of inactivity. Your client will reconnect automatically on the next request.

Reference Documents

Back to Articles

Comments

Loading...