.NET MCP Server to connect with Autodesk Assistant or Claude Desktop, AEC Data Model API including the Geometry feature(beta) and the Viewer.
This project started as an experiment with the Model Context Protocol during an Autodesk Platform Accelerator.
It continues as a comprehensive Model Context Protocol (MCP) local server implementation that enables AI Agency to interact with APS AEC Data Model with either stdio or Streamable HTTP communication as follow:
- Claude Desktop by stdio communication
- Autodesk Assistant by Streamable HTTP communication
The MCP server provides natural language access models from Autodesk Construction Cloud data, do clash detection, spatial analysis, and 3D visualization capabilities.
- 🔐 Authentication - OAuth token management for APS API access
- 🏗️ BIM Navigation - Browse hubs, projects, and element groups
- 🔍 Element Querying - Filter and retrieve building elements by category
- 📤 IFC Export - Export filtered elements to Industry Foundation Classes (IFC) format
⚠️ Clash Detection - Accurate geometric clash detection using bounding box analysis- 📦 Spatial Containment - Find elements spatially contained within other elements
- 📁 File Upload - Upload files to Autodesk Docs (ACC/BIM 360)
- 👁️ 3D Visualization - Render and highlight elements in Autodesk Viewer
- 🔌 Dual Transport - STDIO mode and Streamable HTTP mode
- .NET 8.0 SDK or higher
- Claude Desktop (for local AI assistant integration)
- Visual Studio 2022 or Visual Studio Code
- An APS account (free at aps.autodesk.com)
- An APS application with:
- App Type: Single Page Application is recommended(for PKCE authentication)
- Callback URL:
http://localhost:8080/api/auth/callback/ - APIs Enabled: Data Management API, AEC Data Model API, Model Derivative API
- Access to ACC (Autodesk Construction Cloud) projects
- It's required to participate in the AEC Data Model Public Beta Program to access Geometry feature, follow the instructions, download the DataSDK, you can refer to the aps-aecdm-data-sdk-code-sample if you are interested in the feature.
- Get your access to Autodesk Assistant staging version
- Important: You must provision your APS app in your ACC hub to access project data.
git clone https://github.com/JohnOnSoftware/aps-aecdm-mcp-dotnet.git
cd aps-aecdm-mcp-dotnetYou need to configure your APS credentials as environment variables, or you can set these in Properties/launchSettings.json:
{
"profiles": {
"mcp-server-aecdm": {
"commandName": "Project",
"environmentVariables": {
"CLIENT_ID": "your_aps_pkce_client_id",
"CALLBACK_URL": "http://localhost:8080/api/auth/callback/"
}
}
}
}- To connect this MCP server with Claude Desktop, add the following to your
claude_desktop_config.jsonfile:{ "mcpServers": { "aecdm": { "command": "dotnet", "args": [ "run", "--project", "C:\\path-to-your-folder\\...mcp-server-aecdm.csproj", "--no-build" ] } } } - Build the project with
dotnet build - Run Claude Desktop and enable the MCP server aecdm
- Play with it.
- Build the project with
dotnet build - Run the App with
dotnet run --http - Open the browser without CORS, for Chrome please refer here
- Test in the browser by
http://127.0.0.1:4000/mcp/health, you should get the status of this MCP server. - Run Autodesk Assistant if everything is good, enable MCP.
- Play with it.
- Please find my design "Sample.rvt" from ACC project "Sample Project”, and render it in the viewer.
- Show me all the stairs in the design and highlight them.
- Now list me all the rooms from this design.
- Please check last 5 stairs and tell me which are inside room "Stair S1”.
- Highlight the contained stairs in the viewer.
- Please export all the Doors from this design to IFC file with file name “DoorsSample”
- Upload this IFC file to Autodesk Docs, under same project.
- Can't find my hub -- Solution: Ensure your APS app is provisioned in your ACC hub. This must be done by an ACC administrator.
- Code changes not reflected in Claude -- Solution: Completely quit Claude Desktop (check Task Manager/Activity Monitor), Rebuild your project:
dotnet build, Restart Claude Desktop - Port conflicts (8081/8082), Viewer tools fail if ports are already in use --Solution: Close applications using these ports or modify port numbers in
ViewerTool.cs. - Element IDs vs File Version URNs, Some tools require element group IDs, not file version URNs -- Solution: Use the ID from
GetElementGroupsByProject, not thefileVersionUrnfield.
📺 Watch the Demo Video - See the MCP server in action with Claude Desktop.
This sample is licensed under the terms of the MIT License. Please see the LICENSE file for full details.