1. Conduid
  2. Automation
  3. Aps Sample MCP Server Revit Automation
MCP server · Automation

Aps Sample MCP Server Revit Automation

Sample MCP server to automate Revit via Automation API using SSA

34Low

Scored 6 months ago · breakdown

About Aps Sample MCP Server Revit Automation

Aps Sample MCP Server Revit Automation is an MCP server in the Automation category: sample MCP server to automate Revit via Automation API using SSA.

Install

From source
git clone https://github.com/autodesk-platform-services/aps-sample-mcp-server-revit-automation

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Tools (2)

create_modelCreates a new Revit model from template

Parameters not published.

link_modelsAdds/removes Revit model links

Parameters not published.

Ask AI

✦

Ask AI about Aps Sample MCP Server Revit Automation

Powered by Claude · Grounded in docs

I know everything about Aps Sample MCP Server Revit Automation. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ✓README presentThe repository ships documentation.

5 checks have not been run yet.

README

# Sample MCP Server for Revit Automation

Automation API Revit-2026 .NET MCP

A sample Model Context Protocol (MCP) remote server (HTTP) that enables AI assistants like Claude to automate Autodesk Revit operations via Automation API using Service-to-Service Authentication (SSA).

https://github.com/user-attachments/assets/43a5aabc-d2a3-47ff-a9e1-8bd61d24a81e


⚠️ Disclaimer
This is a vibe-coded sample solution - an exploratory proof-of-concept developed iteratively. It demonstrates patterns and possibilities but may not follow all production-grade practices. This README was generated by GitHub Copilot based on analyzing the actual codebase, ensuring documentation matches implementation.

🔗 Companion Repository
This MCP server works with the APS Automation API Revit MCP Tools Sample - the Revit AppBundle that executes the actual tools in Automation API. Deploy that AppBundle to use this MCP server.


🎯 Overview

MCP Revit Automation bridges AI assistants with Autodesk Revit through the Model Context Protocol. It enables headless, scalable automation of Revit operations on cloud-hosted models (ACC/BIM360) without manual interaction.

Target Audience: AEC Firms, BIM Managers, BIM Coordinators, Developers building AI-powered BIM workflows

Key Features

  • 🔐 SSA Authentication - JWT bearer tokens with RSA signing for service-to-service auth
  • 🏗️ Fluent API - Type-safe model configuration with compile-time validation
  • 📦 Dual JSON Architecture - Separates model context from tool inputs
  • 🤖 MCP Integration - Exposes tools to AI assistants naturally
  • ☁️ Cloud-Native - Works with Autodesk Cloud Models

🔧 Extensible Tool System

  • Easy to add new Revit automation tools
  • Consistent pattern for all operations
  • No core service changes required

🤖 MCP Protocol Support

  • Exposes tools to AI assistants like Claude or VS Code Copilot
  • Natural language to Revit automation
  • HTTP transport for broad compatibility

☁️ Cloud-Native

  • Works with Autodesk Cloud Models (ACC/BIM360) - Workshared and Non-Workshared
  • Scalable workitem submission
  • Automation API for Revit integration

🏛️ Architecture

MCP Client (Claude/VS Code) 
    ↓ MCP Protocol
MCP Server (This Project)
    ├─ RevitAutomationTools (MCP tool definitions)
    ├─ RevitAutomationService (Workitem submission)
    └─ SsaTokenService
    ↓ HTTPS + Bearer Token
Autodesk Automation API for Revit (Cloud execution)

Dual JSON Pattern:

  • revitmodel.json - Model context (region, project, model GUIDs, tool name)
  • toolinputs.json - Tool-specific parameters

📦 Prerequisites


🚀 Installation

git clone https://github.com/autodesk-platform-services/aps-sample-mcp-server-revit-automation.git
cd mcp-revit-automation
dotnet restore
dotnet build --configuration Release

Create appsettings.json:

{
  "Forge": {
    "ClientId": "your-client-id",
    "ClientSecret": "your-client-secret",
    "ServiceAccountId": "your-service-account-id",
    "KeyId": "your-key-id",
    "PrivateKeyPath": "path/to/private-key.pem"
  }
}

Run (http): dotnet run


⚙️ Configuration

Obtain credentials from APS Developer Portal:

  1. Create APS application with Automation API enabled → Get ClientId & ClientSecret
  2. Create Service Account → Generate RSA key pair → Get ServiceAccountId & KeyId
  3. Download private key as .pem file → Set path in PrivateKeyPath

📘 Usage

MCP Client Configuration

Visual Studio Code: See how to configure an MCP Server here

{
 "inputs": [],
  "servers": {
    "revit-automation-mcp": {
      "url": "http://localhost:6223",
      "type": "http"
    }
  }
}

Fluent API Example

// Model configuration (type-safe, compile-time validated)
var modelConfig = ModelConfiguration.Create()
    .WithRegion("US")
    .WithProject("project-guid")
    .WithModelGuid("model-guid")
    .WithToolName("link_models")
    .Save(true)
    .Configure();

// Tool-specific inputs (flexible dictionary)
var toolInputs = new Dictionary<string, object>
{
    { "modelName", "My Model" },
    { "linksToAdd", new[] { new { modelName = "Link1", modelGuid = "guid1" } } },
    { "linksToRemove", Array.Empty<object>() }
};

var result = await service.SubmitWorkItemAsync(modelConfig, toolInputs);

🛠️ Available Tools

Tool Description
create_model Creates a new Revit model from template
link_models Adds/removes Revit model links

Creating a Revit Model

revitmodel.json

{
  "region": "US",
  "projectGuid": "00000000-0000-0000-0000-000000000000",
  "modelGuid": "11111111-1111-1111-1111-111111111111",
  "toolName": "create_model",
  "save": false
}

toolinputs.json

{
  "enableWorksharing": true,
  "accountId": "00000000-0000-0000-0000-000000000000",
  "projectId": "00000000-0000-0000-0000-000000000000",
  "folderId": "urn:adsk.wipprod:fs.folder:co.example",
  "modelName": "NewModel.rvt"
}

Managing Model Links

revitmodel.json

{
  "region": "US",
  "projectGuid": "00000000-0000-0000-0000-000000000000",
  "modelGuid": "00000000-0000-0000-0000-000000000000",
  "toolName": "link_models",
  "save": true
}

toolinputs.json

{
  "region": "US",
  "projectGuid": "00000000-0000-0000-0000-000000000000",
  "linksToAdd": [
    {
      "modelName": "Architectural_Link.rvt",
      "modelGuid": "11111111-1111-1111-1111-111111111111"
    },
    {
      "modelName": "Structural_Link.rvt",
      "modelGuid": "22222222-2222-2222-2222-222222222222"
    }
  ],
  "linksToRemove": [
    {
      "modelName": "Old_Link.rvt",
      "modelGuid": "99999999-9999-9999-9999-999999999999"
    }
  ]
}

➕ Adding New Tools

1. In Tools/RevitAutomationTools.cs

[McpServerTool(Name = "my_tool")]
public async Task<WorkItemSubmissionResult> MyTool(...)
{
    var modelConfig = ModelConfiguration.Create()
        .WithRegion(region)
        .WithProject(projectGuid)
        .WithModelGuid(modelGuid)
        .WithToolName("my_tool")
        .Configure();
    
    var toolInputs = new Dictionary<string, object> { /* tool params */ };
    return await revitAutomationService.SubmitWorkItemAsync(modelConfig, toolInputs);
}

2. In your Revit AppBundle: add case for "my_tool". See how to add new tools here


Resources


License

This sample is licensed under the terms of the MIT License. Please see the LICENSE file for full details.


Made with ❤️ for the AEC community | Vibe-coded with GitHub Copilot

README copy captured when this server was indexed; it may lag the repository. The original is authoritative.

Questions

About Aps Sample MCP Server Revit Automation

How do I install Aps Sample MCP Server Revit Automation?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Aps Sample MCP Server Revit Automation safe to use with an AI agent?

Its trust score is 34 out of 100 (low). It passes 1 of the 1 static security checks run so far. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Aps Sample MCP Server Revit Automation still maintained?

Conduid hasn't recorded a commit date for this repository yet. Check the repository directly for recent activity.