Install
$ agentstack add mcp-sacred-g-civil3d-mcp ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Civil3D-MCP Server
Connect Claude, Cursor, Cline, and other MCP clients directly to a live Autodesk Civil 3D drawing. Node.js MCP server + native Civil 3D plugin + workflow automation for grading, hydrology, plan production, QC, and data shortcuts.
[](https://nodejs.org) [](https://www.typescriptlang.org) [](./LICENSE) [](https://modelcontextprotocol.io) [](https://www.autodesk.com/products/civil-3d) [](https://github.com/Sacred-G/Civil3D-mcp/issues)
Quick Start • Installation • Deployment • Tool Reference
What Is This?
Civil3D-MCP bridges AI assistants (Claude, Cline, Cursor, etc.) to a live, open Civil 3D drawing using the Model Context Protocol. Give Claude your design brief — it reads your drawing, runs calculations, and makes changes in real time.
AI Client ↔ civil3d-mcp (Node.js / stdio) ↔ HTTP :8765 ↔ Civil3D-MCP-Plugin.dll (inside Civil 3D)
This is the MCP server (TypeScript). You also need the Civil 3D .NET plugin — see [Installation](#installation).
What Changed Recently
- Native workflow handlers now cover major QC, grading, hydrology, plan-production, and data-shortcut flows instead of relying only on client-side orchestration.
- Claude Code can now be registered with a single project-scoped command that installs dependencies, builds the Node server, and writes the repo
.mcp.jsonentry. - Repository-generated tool inventories live in [
output_repo_tools](./outputrepotools), making it easier to audit what is already implemented versus what still belongs on the roadmap.
Quick Start
If you want the fastest path from clone to a working Claude + Civil 3D setup on Windows:
- Clone and build the Node side:
``bash git clone https://github.com/Sacred-G/Civil3D-mcp.git cd Civil3D-mcp npm install npm run build ``
- Build and
NETLOADthe Civil 3D plugin:
``powershell dotnet build .\Civil3D-MCP-Plugin\Civil3DMcpPlugin.csproj -c Release ``
- Register Claude Code for this repo:
``powershell npm run claude:add ``
- Open Civil 3D, load the plugin, and start asking for real work:
- "Audit this drawing before design starts."
- "Create a grading surface from this feature line."
- "Delineate the watershed and estimate runoff."
- "Publish the plan/profile sheets to PDF."
Features
- 180+ MCP tools covering the complete Civil 3D design workflow
- Native workflow execution for corridor QC, surface comparison, project startup, grading conversion, plan publish, data shortcuts, and hydrology pipelines
- Full road design pipeline — alignments, profiles, corridors, cross-sections, superelevation
- Surface analysis — elevation bands, slope distribution, aspect, watershed, cut/fill volumes
- Pipe & pressure network design, validation, and hydraulic analysis
- Plan production — sheet sets, Plan/Profile sheets, PDF export
- QC checks — alignment, profile, corridor, surface, pipe network, drawing standards
- Quantity takeoff — earthwork, corridor materials, pipe lengths, parcel areas, CSV export
- Cost estimation — pay items, material costs, construction estimates
- Hydrology — flow path tracing, watershed delineation, Rational Method runoff, time of concentration
- Grading — feature lines, grading groups, grading criteria, surface generation
- COGO/Survey — inverse, traverse, curve solve, survey figures, LandXML import
- Storm & Sanitary Analysis (SSA) integration and detention basin sizing
- Intersection design and corridor target mapping
- Sight distance calculations and AASHTO stopping sight distance checks
- Assembly/subassembly creation and editing
Architecture
flowchart LR
Client["AI Client\n(Claude / Cline / Cursor)"] -->|"MCP stdio"| Server["civil3d-mcp\nNode.js MCP Server"]
Server -->|"POST :8765/execute"| Plugin
subgraph Civil3D ["Autodesk Civil 3D"]
Plugin["Civil3D-MCP-Plugin.dll\nHTTP Listener"]
Queue["ConcurrentQueue\n(thread-safe)"]
Idle["Application.Idle\n(main thread)"]
Router["CommandRouter"]
API["Civil 3D .NET API"]
Plugin --> Queue --> Idle --> Router --> API
end
> Why Application.Idle? Civil 3D (like Blender) requires all database operations on the main thread. The plugin queues incoming HTTP requests and drains the queue on the main thread's idle event — giving full, safe access to the Civil 3D .NET API.
Requirements
| Component | Version | |---|---| | Node.js | 18+ | | Civil 3D | 2023, 2024, 2025, or 2026 | | .NET SDK | 8.0 | | Civil 3D API refs | Local DLLs in C_References/ | | Visual Studio | 2022 recommended |
Installation
1 — Build the MCP Server (TypeScript)
git clone https://github.com/Sacred-G/Civil3D-mcp.git
cd Civil3D-mcp
npm install
npm run build
1.5 — One-Line Claude Code Setup
From the repo root on Windows, this project-scoped command adds the MCP server to Claude Code and creates the repo .mcp.json entry automatically:
claude mcp add --scope project --transport stdio civil3d-mcp -- powershell -NoProfile -ExecutionPolicy Bypass -File "$PWD\scripts\claude-bootstrap-and-run.ps1"
The registered launcher will automatically install npm dependencies and build the Node server the first time Claude starts it.
If you want a wrapper that does the install, build, and claude mcp add step for you immediately, run:
npm run claude:add
Useful variants:
npm run claude:add:user
npm run claude:print-add
2 — Build & Load the C# Plugin
Prerequisites: Civil 3D 2023+, .NET 8 SDK, and local Civil 3D API assemblies copied into C_References/
dotnet build .\Civil3D-MCP-Plugin\Civil3DMcpPlugin.csproj -c Release
# Output: Civil3D-MCP-Plugin\bin\Release\net8.0-windows\Civil3DMcpPlugin.dll
The plugin project resolves Autodesk references from [C_References](./C_References). At minimum, make sure these local DLLs are present:
accoremgd.dll
AcDbMgd.dll
acmgd.dll
AecBaseMgd.dll
AeccDbMgd.dll
Load into Civil 3D:
| Method | Steps | |---|---| | Manual (NETLOAD) | Open Civil 3D → type NETLOAD → browse to Civil3D-MCP-Plugin.dll | | Autoload (recommended) | Add registry key — see [DEPLOYMENT.md](./docs/DEPLOYMENT.md) |
Once loaded, three commands are available in the Civil 3D command line:
| Command | Description | |---|---| | MCPSTART | Start the HTTP server (auto-starts on load) | | MCPSTOP | Stop the HTTP server | | MCPSTATUS | Show server status and port |
3 — Configure Your AI Client
Recommended for Claude Code
npm run claude:add
That command registers the bootstrap launcher in Claude Code and keeps the repo self-contained. Use npm run claude:print-add if you want to inspect the exact claude mcp add command without modifying config.
Claude Desktop — claude_desktop_config.json:
{
"mcpServers": {
"civil3d-mcp": {
"command": "node",
"args": ["C:/path/to/Civil3D-mcp/build/index.js"]
}
}
}
Claude Code — add via CLI:
claude mcp add --scope project --transport stdio civil3d-mcp -- powershell -NoProfile -ExecutionPolicy Bypass -File "$PWD\scripts\claude-bootstrap-and-run.ps1"
Restart your client. When you see the hammer icon, the MCP connection is live.
> For Docker, npm publishing, environment variables, and alternate deployment paths see [docs/DEPLOYMENT.md](./docs/DEPLOYMENT.md).
Example Conversations
> "What alignments are in this drawing and how long is each one?" > → civil3d_alignment → returns names, station ranges, lengths
> "Run a full QC check on the corridor and give me a report." > → civil3d_workflow_corridor_qc_report → checks targets, regions, rebuild errors, exports report
> "Trace the flow path from coordinate (5000, 3200) and estimate the peak runoff using the Rational Method." > → civil3d_hydrology_watershed_runoff_workflow → delineates watershed, calculates Q=CiA
> "Create a Plan/Profile sheet set for alignment 'Mainline' and export to PDF." > → civil3d_plan_profile_sheet_create → civil3d_workflow_plan_production_publish
> "Size the storm drain network for a 10-year storm and check all pipe velocities." > → civil3d_pipe_network_size → civil3d_pipe_network_hydraulics
> "Calculate cut/fill volumes between the existing ground and proposed surface." > → civil3d_surface_volume_calculate → civil3d_surface_volume_report
Tool Reference (180+ tools)
Drawing Info & Context (7 tools)
| Tool | Description | |------|-------------| | get_drawing_info | Retrieves basic information about the active Civil 3D drawing | | list_civil_object_types | Lists major Civil 3D object types present in the current drawing | | get_selected_civil_objects_info | Gets properties of currently selected Civil 3D objects | | civil3d_health | Reports Civil 3D connection and plugin status | | civil3d_drawing | Manages drawing state, document info, save/undo operations | | civil3d_job | Checks status of long-running async operations or requests cancellation | | list_tool_capabilities | Lists domain and capability metadata for the full MCP tool catalog |
Drawing Primitives (6 tools)
| Tool | Description | |------|-------------| | create_cogo_point | Creates a single COGO point | | create_line_segment | Creates a simple line segment | | acad_create_polyline | Creates an AutoCAD 2D polyline in model space | | acad_create_3dpolyline | Creates an AutoCAD 3D polyline in model space | | acad_create_text | Creates AutoCAD DBText in model space | | acad_create_mtext | Creates AutoCAD MText in model space |
Alignment (10 tools)
| Tool | Description | |------|-------------| | civil3d_alignment | Reads alignments, converts stationing, create/delete | | civil3d_alignment_report | Builds structured alignment geometry report | | civil3d_alignment_get_station_offset | Returns station/offset of an XY point relative to an alignment | | civil3d_alignment_add_tangent | Appends a fixed tangent entity to an alignment | | civil3d_alignment_add_curve | Appends a fixed horizontal curve to an alignment | | civil3d_alignment_add_spiral | Appends a spiral (transition curve) to an alignment | | civil3d_alignment_delete_entity | Deletes a tangent/curve/spiral entity by index | | civil3d_alignment_offset_create | Creates a new offset alignment at a constant distance | | civil3d_alignment_set_station_equation | Adds a station equation to an alignment | | civil3d_alignment_widen_transition | Creates a variable-offset widening/narrowing transition region |
Profile (10 tools)
| Tool | Description | |------|-------------| | civil3d_profile | Reads profiles, create/delete | | civil3d_profile_report | Builds structured profile report with station/elevation sampling | | civil3d_profile_get_elevation | Samples elevation and grade at a given station | | civil3d_profile_add_pvi | Adds a PVI to a layout profile | | civil3d_profile_add_curve | Adds a parabolic vertical curve at an existing PVI | | civil3d_profile_delete_pvi | Deletes the PVI nearest to a specified station | | civil3d_profile_set_grade | Sets the grade of a tangent entity | | civil3d_profile_check_k_values | Validates K-values against AASHTO minimums for design speed | | civil3d_profile_view_create | Creates a profile view at a specified insertion point | | civil3d_profile_view_band_set | Applies a band set style to an existing profile view |
Superelevation (4 tools)
| Tool | Description | |------|-------------| | civil3d_superelevation_get | Retrieve superelevation design data for an alignment | | civil3d_superelevation_set | Apply superelevation using AASHTO attainment method | | civil3d_superelevation_design_check | Validate max superelevation rates and attainment lengths | | civil3d_superelevation_report | Generate formatted superelevation report |
Surface (15 tools)
| Tool | Description | |------|-------------| | civil3d_surface | Reads surface data, create/delete | | civil3d_surface_edit | Modifies surface data: points, breaklines, boundaries, contours | | civil3d_surface_statistics_get | Comprehensive statistics: elevation range, area, point/triangle count | | civil3d_surface_contour_interval_set | Set minor and major contour display intervals | | civil3d_surface_sample_elevations | Sample elevations at grid points, discrete points, or transect | | civil3d_surface_analyze_elevation | Elevation band distribution (area and percentage per band) | | civil3d_surface_analyze_slope | Slope distribution (area and percentage per slope range) | | civil3d_surface_analyze_directions | Aspect/facing direction breakdown by cardinal sectors | | civil3d_surface_volume_calculate | Calculate cut/fill volumes between two surfaces | | civil3d_surface_volume_by_region | Cut/fill volumes within a polygon region | | civil3d_surface_volume_report | Formatted human-readable cut/fill volume report | | civil3d_surface_comparison_workflow | Structured two-surface comparison with cut/fill volumes | | civil3d_surface_create_from_dem | Create TIN surface from DEM file (.dem, .tif, .asc, .flt) | | civil3d_surface_watershed_add | Add watershed analysis: drainage basins and flow paths | | civil3d_surface_drainage_workflow | Surface drainage workflow: flow path, elevation sampling, runoff estimate |
Corridor (6 tools)
| Tool | Description | |------|-------------| | civil3d_corridor | Reads corridor data, rebuild, volume operations | | civil3d_corridor_summary | Builds corridor summary with surfaces and volume analysis | | civil3d_corridor_target_mapping_get | Retrieve subassembly target mappings for a corridor | | civil3d_corridor_target_mapping_set | Set/update subassembly target mappings (surfaces, alignments, profiles) | | civil3d_corridor_region_add | Add a new region to a corridor baseline | | civil3d_corridor_region_delete | Delete a region from a corridor baseline |
Sections & Section Views (6 tools)
| Tool | Description | |------|-------------| | civil3d_section | Reads section data, sample line creation | | civil3d_section_view_create | Create section views for a sample line group | | civil3d_section_view_list | List section views in the drawing | | civil3d_section_view_update_style | Update display/band set style on existing section views | | civil3d_section_view_group_create | Create a multi-row grid layout of section views | | civil3d_section_view_export | Export section data to CSV/text (offsets, elevations, materials) |
Intersection Design (3 tools)
| Tool | Description | |------|-------------| | civil3d_intersection_list | List all intersections in the drawing | | civil3d_intersection_create | Create an intersection between two road alignments | | civil3d_intersection_get | Get detailed properties of an intersection |
Grading & Feature Lines (14 tools)
| Tool | Description | |------|-------------| | civil3d_grading | Canonical grading domain tool for groups, gradings, criteria, and feature-line actions | | civil3d_feature_line | Reads feature lines and exports them as 3D polylines | | civil3d_feature_line_create | Create a new feature line from 3D points | | civil3d_grading_group_list | List all grading groups in the drawing | | civil3d_grading_group_create | Create a new grading group | | civil3d_grading_group_get | Get detailed info about a grading group | | civil3d_grading_group_delete | Delete a grading group and all its gradings | | civil3d_grading_group_volume | Get cut/fill volume report for a grading group | | civil3d_grading_group_surface_create | Create a surface from a grading group | | civil3d_grading_criteria_list | List all available grad
…
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Sacred-G
- Source: Sacred-G/Civil3D-mcp
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.