MCP Server: Talk to Your Model

The raps serve command starts a Model Context Protocol (MCP) server, enabling AI assistants to interact with Autodesk Platform Services through natural language.

New in v3.0.0 — The MCP server is a major feature addition. Expanded in v4.1.0 — Now with admin bulk operations, issues, RFIs, and ACC extended features. Improved in v4.1.1 — Server starts without credentials and provides interactive setup guidance. Enhanced in v4.4.0 — Now with 51 tools including folder permissions, operation lifecycle, and full CRUD for ACC modules.

From “Chat with PDF” to “Chat with Tools”

We are moving past the era of “Chat with PDF.” The next frontier is Chat with Tools.

If you have ever tried to paste a 500MB JSON metadata extract from a Revit model into ChatGPT, you know the pain: “Message too long.” RAG (Retrieval-Augmented Generation) helps, but it is static. It can’t query the current state of a model or trigger an action.

Enter the Model Context Protocol (MCP).

What is MCP?

The Model Context Protocol is an open standard that allows AI assistants to use external tools. Instead of dumping data into the context window, the LLM has access to a live toolkit.

With RAPS MCP server, you can ask your AI assistant to:

  • Find specific BIM elements by properties (“all ‘Basic Wall’ instances over 100m²”)
  • Create and manage buckets dynamically
  • Upload files and start translations
  • Browse BIM 360/ACC projects in real-time
  • Check translation status and retrieve results
  • Query live model metadata without size limits
  • Bulk manage users across multiple ACC/BIM 360 projects
  • Track and manage issues in construction projects
  • Query RFIs, assets, submittals, and checklists
  • Navigate folders and items with full permission control

This bridges the gap between the rigid, complex data structures of BIM and the natural language interface of AI.

Quick Start

# Start the MCP server
raps serve

The server runs in stdio mode, listening for MCP requests from AI assistants.

No credentials required to start. The server starts even without APS credentials configured. When you ask your AI assistant about authentication status, it will provide step-by-step setup instructions. This means you can add RAPS to your AI assistant first, then get guided through the setup process interactively.

Configuration

Claude Desktop

Add to your Claude configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json Linux: ~/.config/claude/claude_desktop_config.json

Minimal setup (get guided later):

{
  "mcpServers": {
    "raps": {
      "command": "raps",
      "args": ["serve"]
    }
  }
}

After adding this, restart Claude and ask “What’s my auth status?” — RAPS will guide you through credential setup.

Full setup (with credentials):

{
  "mcpServers": {
    "raps": {
      "command": "raps",
      "args": ["serve"],
      "env": {
        "APS_CLIENT_ID": "your_client_id",
        "APS_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Cursor IDE

Add to .cursor/mcp.json in your project:

{
  "mcpServers": {
    "raps": {
      "command": "raps",
      "args": ["serve"]
    }
  }
}

Note: Cursor uses environment variables from your shell, so ensure APS_CLIENT_ID and APS_CLIENT_SECRET are set.

Available Tools

The RAPS MCP server exposes 51 tools organized by functionality:

Authentication

ToolDescription
auth_testTest 2-legged OAuth credentials
auth_statusCheck auth state with setup guidance and tool availability
auth_loginGet instructions for 3-legged OAuth login
auth_logoutClear stored 3-legged tokens

OSS Buckets

ToolDescription
bucket_listList all accessible buckets
bucket_createCreate a new bucket
bucket_getGet bucket details
bucket_deleteDelete an empty bucket

OSS Objects

ToolDescription
object_listList objects in a bucket
object_deleteDelete an object
object_signed_urlGenerate pre-signed download URL
object_urnGet Base64-encoded URN

Model Derivative

ToolDescription
translate_startStart a translation job
translate_statusCheck translation status

Data Management

ToolDescription
hub_listList BIM 360/ACC hubs
project_listList projects in a hub
folder_listList contents of a folder
folder_createCreate a new folder
item_infoGet item details
item_versionsList item versions

Admin Bulk Operations

ToolDescription
admin_project_listList projects in an account with filtering
admin_user_addBulk add users to multiple projects
admin_user_removeBulk remove users from projects
admin_user_update_roleBulk update user roles across projects
admin_folder_rightsBulk update folder permissions across projects
admin_operation_listList all bulk operations with status
admin_operation_statusGet detailed status of a bulk operation
admin_operation_resumeResume a paused bulk operation
admin_operation_cancelCancel a running bulk operation

Issues

ToolDescription
issue_listList issues in a project
issue_getGet details of a specific issue
issue_createCreate a new issue
issue_updateUpdate an existing issue

RFIs

ToolDescription
rfi_listList RFIs in a project
rfi_getGet details of a specific RFI
rfi_createCreate a new RFI
rfi_updateUpdate an existing RFI

ACC Extended

ToolDescription
acc_assets_listList assets in a project
asset_createCreate a new asset
asset_updateUpdate an existing asset
asset_deleteDelete an asset
acc_submittals_listList submittals in a project
submittal_createCreate a new submittal
submittal_updateUpdate an existing submittal
acc_checklists_listList checklists in a project
checklist_createCreate a new checklist
checklist_updateUpdate an existing checklist

How It Works: Live Tool Execution

Instead of dumping data into the context window, the LLM has access to a toolkit. When you ask a question, the flow looks like this:

  1. You: “Find all ‘Basic Wall’ instances in the ‘Hospital.rvt’ file that are over 100m².”
  2. LLM: Thinking… I need to inspect the model metadata.
  3. LLM (Action): Calls raps model:query --file Hospital.rvt --category Walls
  4. RAPS: Returns a filtered JSON snippet.
  5. LLM (Response): “I found 12 walls matching your criteria. Here are their IDs…”

You don’t need to write SQL or complex filter queries. You just ask. The AI translates your natural language into the appropriate RAPS commands.

Example Conversations

First-time setup (no credentials)

You: What’s my authentication status?

AI: Let me check your authentication status.

Setup Required

No APS credentials are configured yet. Here’s how to get started:

  1. Go to https://aps.autodesk.com and create a free account
  2. Create a new application to get your Client ID and Secret
  3. Add credentials to your MCP configuration:
{
  "mcpServers": {
    "raps": {
      "command": "raps",
      "args": ["serve"],
      "env": {
        "APS_CLIENT_ID": "your_client_id",
        "APS_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

After adding credentials, restart your AI assistant to apply the changes.

Checking authentication status (with credentials)

You: What’s my current authentication status?

AI: Let me check your authentication status.

Authentication Status:

  • 2-legged OAuth: ✓ Valid
  • 3-legged OAuth: Not logged in

Tool Availability:

  • OSS (bucket_, object_) - available
  • Derivative (translate_*) - available
  • Data Management (hub_, project_) - requires 3-legged auth

To access BIM 360/ACC data, you need to log in with your Autodesk account. Run raps auth login in your terminal.

Creating a bucket

You: Create a new persistent bucket in the US region called “my-project-files”

AI: I’ll create that bucket for you.

✓ Created bucket ‘my-project-files’ with persistent retention in US region.

Checking buckets

You: What buckets do I have access to?

AI: Let me check your accessible buckets.

You have 3 buckets:

  • my-project-files (persistent, US)
  • temp-uploads (transient, US)
  • eu-data (persistent, EMEA)

Advanced model querying

You: Find all steel beams in the hospital model that are longer than 10 meters and show me their material properties

AI: Let me query the model metadata for you.

Found 47 steel beams over 10 meters:

  • W12x45 beams: 12 instances (Grade 50 steel)
  • W14x30 beams: 23 instances (Grade 36 steel)
  • W16x67 beams: 12 instances (Grade 50 steel)

All beams have fire rating of 2 hours. Would you like the complete material specifications?

Translation workflow

You: Start translating the file “building.rvt” in bucket “my-project-files” to SVF2 format

AI: I’ll start the translation. First, let me get the URN for that file.

✓ Translation started. The file is being converted to SVF2 format. You can check the status by asking me about it.

Bulk user management

You: Add john.smith@company.com to all projects that start with “2026-” as a Project Admin

AI: I’ll add that user to the matching projects. Let me first find all projects with the “2026-” prefix.

Found 8 projects matching “2026-*”:

  • 2026-Hospital-Phase1
  • 2026-Hospital-Phase2
  • 2026-Office-Tower … and 5 more

✓ Started bulk add operation. User will be added to all 8 projects as Project Admin. Operation ID: op_abc123. You can ask me for status updates.

Managing issues

You: Create an issue for the Hospital project about the missing fire door schedule

AI: I’ll create that issue for you.

✓ Created issue #47: “Missing fire door schedule”

  • Project: 2026-Hospital-Phase1
  • Type: Design
  • Status: Open
  • Assignee: Unassigned

Would you like me to assign it to someone?

Querying RFIs

You: Show me all open RFIs in the Office Tower project

AI: Let me query the RFIs for that project.

Found 3 open RFIs:

  • RFI-012: “Clarification on structural beam dimensions” (Due: Jan 20)
  • RFI-015: “MEP coordination at Level 5” (Due: Jan 22)
  • RFI-018: “Curtain wall detail at entrance” (Due: Jan 25)

Would you like details on any of these?

Architecture

The MCP server reuses all existing RAPS API clients:

┌─────────────────┐     ┌──────────────────┐
│   AI Assistant  │────▶│  RAPS MCP Server │
│  (Claude, etc.) │◀────│   raps serve     │
└─────────────────┘     └────────┬─────────┘

     ┌───────────┬───────────┬───┴───┬───────────┬───────────┐
     │           │           │       │           │           │
┌────▼────┐ ┌────▼────┐ ┌────▼───┐ ┌─▼──┐ ┌─────▼─────┐ ┌────▼────┐
│  Auth   │ │   OSS   │ │ Deriv  │ │ DM │ │   Admin   │ │   ACC   │
│ Client  │ │ Client  │ │ Client │ │    │ │  Clients  │ │ Clients │
└────┬────┘ └────┬────┘ └────┬───┘ └──┬─┘ └─────┬─────┘ └────┬────┘
     │           │           │        │         │            │
     └───────────┴───────────┴────┬───┴─────────┴────────────┘

                           ┌──────▼──────┐
                           │   APS APIs  │
                           └─────────────┘

The Admin and ACC clients are created on-demand for each request to support bulk operations and project-specific APIs.

Limitations

  • No file uploads: MCP currently doesn’t support binary file transfer. Use CLI for uploads.
  • 3-legged auth requires CLI: While MCP tools can check auth status and provide guidance, the actual 3-legged login must be done via raps auth login in a terminal with browser access.
  • Stdio transport: Server must be started by the AI client, not as a daemon.

Debugging

Enable verbose logging:

RUST_LOG=debug raps serve

Check server connectivity:

echo '{"jsonrpc":"2.0","method":"initialize","params":{},"id":1}' | raps serve

Next Steps