Civil 3D MCP Server
This server lets AI assistants interact with Autodesk Civil 3D through natural language, covering model management, design creation, and plan analysis.
Core Civil 3D workflows:
Health & connectivity: check Civil 3D plugin status.
Drawing management: get/save/undo/redo, list object types, get selected objects.
Generic object operations: get/set properties, list by type, resolve placements, set styles, delete/move/copy/rotate, manage layers, retrieve bounds.
Surfaces: list/create/delete, get elevations/statistics, add points/breaklines/boundaries, extract contours, compute volumes.
Alignments: list/create/delete/get, station/offset <-> XY conversion, superelevation, critical stations, design speeds.
Profiles: list/create/delete/get elevations, create from surface or layout.
Corridors: list/get/rebuild, surfaces/feature lines, volumes.
Pipe networks: manage gravity networks, add pipes/structures, interference checks.
COGO points: list/get/create/delete, point groups, import/export.
Geometry creation: lines, 2D/3D polylines, text, mtext with automatic layer creation.
Plan reading and data extraction:
Blocks: inventory/count/attributes/insertion points, dynamic block states.
Labels & dimensions: text entities, leaders, dimensions.
Legends: read legend tables, build symbol dictionaries, compare legends to drawing entities.
Geometric shapes: detect parallel lines, group by proximity, classify geometry.
Quantity takeoff: count blocks by category, generate reports.
Scanned plans/PDFs (external civil3d_plan_vision tool): rasterize PDF pages, extract/train legend templates, detect symbols via computer vision, OCR labels, calibrate scale from dimensions; requires separate Python environment and Tesseract OCR.
Other supported components: profile views, sample lines, section views, mass haul lines, data shortcuts, parcels, corridor assemblies, grading feature lines; read-only view frames and match lines; subassembly parameter get/set.
Provides tools for managing Civil 3D drawings, surfaces, alignments, profiles, corridors, pipe networks, COGO points, and basic AutoCAD geometry.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Civil 3D MCP ServerCreate a surface from the selected points"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Civil 3D MCP Server
An MCP (Model Context Protocol) server that enables AI assistants (Claude, Cline, etc.) to interact with Autodesk Civil 3D through natural language.
Architecture
┌─────────────────┐ stdio ┌──────────────────┐ TCP/JSON-RPC ┌──────────────────┐
│ AI Assistant │ ◄────────────► │ MCP Server (TS) │ ◄──────────────────► │ Civil 3D Plugin │
│ (Claude, Cline) │ │ Node.js │ port 8080 │ (.NET 8.0 C#) │
└─────────────────┘ └──────────────────┘ └──────────────────┘
│
Civil 3D API
(Surfaces, Alignments,
Points, Corridors...)The system has two components:
MCP Server (TypeScript/Node.js) — Communicates with AI assistants via MCP protocol
Civil 3D Plugin (C# .NET 8.0) — Runs inside Civil 3D and executes API commands
Related MCP server: NavisworksMCP
Available Tools
Tool | Actions | Description |
| health, health_verbose (plugin version, build date, drawing name, open document count) | Check plugin connectivity |
| get_properties (curated safe field set for Surface/TinSurface — full reflection hangs there, confirmed in live testing), list_by_type, resolve_location (rejects Surface handles in reference_object mode — no meaningful anchor point), set_style_name, delete_entity, ensure_layer, list_layers, set_layer, move_entity, copy_entity, rotate_entity, get_entity_bounds | Generic reflection-based introspection for any object type, plus resolve_location (coordinates / interactive mouse click / relative to a reference object) to place anything anywhere, plus set_style_name — the generic style engine, works on any object or already-created label with a writable StyleName — the "escape valve" primitives that reduce the need for domain-specific commands. The entity-generic primitives (delete/ensure_layer/list_layers/set_layer/move/copy/rotate/get_bounds) close the test/cleanup loop — before these, there was no way to undo test objects without entering Civil3D manually |
| info, settings, save, undo, redo, list_object_types, get_selected | Drawing operations |
| list, get, get_elevation, get_statistics, create, delete, add_points, add_breakline (real only for breaklineType="standard"), add_boundary, compute_volume, get_area_elevation_table, compute_contour_volume, close_contours_against_boundary (auto-picks the non-self-intersecting tramo for irregular/hairpin boundaries), delete_points, list_triangles, get_triangle_at_point, paste_surface, get_build_options, extract_contours (planned), get_operations (planned), delete_boundary (planned), set_build_options (planned), add_contour_data (planned), swap_edge (planned), minimize_flat_triangles (planned), minimize_convex_triangles (planned), delete_breakline (planned), delete_operation (planned) | Surface management |
| list, get, create, delete, station_to_point, point_to_station, list_superelevation_curves, list_superelevation_critical_stations, list_design_speeds | Alignment operations |
| list, get, get_elevation, create_from_surface, create_layout (no label set yet), list_entities, delete, create_tangent (planned), create_parabola (planned) | Profile management |
| create, list, get, delete, get_bands | Profile views (graphic display of a profile) |
| list, get, rebuild, get_surfaces, create_surface_from_corridor_surface, list_baselines, list_baseline_regions, add_baseline_region, get_targets, get_feature_lines, compute_volumes (planned, combine surface actions instead) | Corridor operations (no .NET API for intersections/roundabouts — COM/UI only) |
| create_group, list_groups, create_line, list_lines, delete_group, create_section_view_group, list_section_views, delete_section_view, list_mass_haul_lines, report_quantities, create_mass_haul_line (planned), list_material_lists (planned) | Sample lines, section views, mass haul, quantity takeoff |
| list_view_frames, list_match_lines | Read-only view frames / match lines — creating them is not exposed by the .NET API (confirmed Autodesk limitation) |
| list_networks, get_network, list_pipes, get_pipe, list_structures, get_structure, get_rule_set, get_overridden_rules, create_network (planned), add_pipe (planned), add_structure (planned), list_parts_lists (planned), check_interference (planned) | Gravity pipe networks |
| list_networks (planned), get_network (planned), list_parts (planned), get_part (planned), create_network (planned) | Pressure pipe networks — AeccPressurePipesMgd.dll referenced, real namespace of its API still unconfirmed |
| list (optionally by group), get, create, delete, list_groups, create_group, delete_group, import (PNEZD/PENZD text), export (PNEZD/PENZD text), description_keys (planned) | COGO points |
| get_project_id, associate_project, promote_reference, create_reference (planned) | Data shortcuts (shared references between drawings) |
| list_figure_styles (confirmed to hang 120s in live testing without a diagnosed cause — see CLAUDE.md), list_networks (planned), list_figures (planned) | Survey data (read-only) |
| import_landxml (planned — confirmed impossible via .NET API), export_surface_to_landxml (planned), export_to_shapefile (planned) | LandXML / GIS import-export — use civil3d_point import/export for plain-text points instead |
| list_sites, list, get, delete, create (planned) | Parcels |
| list, get, delete, list_subassemblies, get_subassembly_parameters, set_subassembly_parameter, create (planned) | Corridor assemblies |
| list_feature_lines, get_feature_line, delete_feature_line, create_feature_line (planned), list_groups (planned), get_group (planned), delete_group (planned), create_group (planned) | Grading feature lines (groups pending real API access) |
| create_line, create_polyline, create_3d_polyline, create_text, create_mtext (all 5 auto-create the target layer if missing instead of throwing eKeyNotFound), offset_lines_to_boundary (returns a | Basic AutoCAD geometry |
| list_block_definitions, count_blocks_by_name (optionally scoped to a layout), get_block_attributes (per-instance tag/value pairs), list_blocks_by_layer, get_block_insertion_points, list_dynamic_block_states (only meaningful for actual dynamic blocks) | Plan-reading: exact block/symbol inventory read straight from the drawing database (bloques, atributos, layers) — no geometry interpretation |
| extract_text_entities (DBText/MText, optionally by layer), extract_leader_annotations (Leader/MLeader with attached text), extract_dimensions (Dimension entities, optionally by layer), match_text_to_nearby_geometry (pure post-processing — no plugin call, pairs already-extracted text with the closest already-extracted geometry within a radius) | Plan-reading: labels, leaders, and dimensions — complements civil3d_blocks with the annotations around the symbols |
| read_legend_table (raw rows of a Table entity — one by handle or every table found), build_symbol_dictionary, compare_legend_vs_drawing, export_symbol_library, import_symbol_library, train_symbol_signature (upserts a geometric signature into a local JSON library), load_office_standard (reads a combined dictionary/categoryMap/signatures JSON) — all but read_legend_table are pure post-processing/local JSON, no plugin call | Plan-reading: learns a drawing's own symbol→meaning dictionary from its legend table instead of assuming a fixed office standard; also hosts the local signature-library persistence used by civil3d_shape_detection |
| detect_parallel_line_pairs (Line pairs at constant perpendicular distance, optionally by layer), group_entities_by_proximity (clusters loose entities within a radius via transitive adjacency), get_entity_extended_data (XDATA grouped by registered application), classify_geometry_by_signature (pure post-processing — no plugin call — scores an entity-type group against a signature catalog by Jaccard similarity) | Plan-reading: hand-drawn symbols with no block — probabilistic, not exact, leans on layer name and geometric signature |
| rasterize_pdf_page, extract_legend_templates (OCRs an already-cropped legend image once and auto-builds a named symbol-template library — no active drawing, no plugin call), train_symbol_template, detect_symbols_cv (multi-scale + multi-rotation template matching with non-max suppression), ocr_extract_labels, calibrate_scale_from_dimension (pure TS math, no Python) | Plan-reading: PDFs/scanned images with no live Civil3D drawing at all — the only tool that never talks to the plugin. Classical OpenCV computer vision (confidence-level, not exact); requires Python 3.10+ and Tesseract OCR installed separately, see |
| count_by_category (groups block counts by a symbol→category mapping), generate_quantity_report (exports a BOQ table to | Plan-reading: turns block counts into budget-ready numbers. Pure post-processing — does not call the plugin and does not require an active drawing |
Setup
1. Build the MCP Server
npm install
npm run build2. Build the Civil 3D Plugin
Copy the required DLLs from your Civil 3D installation to
C_References/(see C_References/README.md)Build the plugin:
cd plugin/Civil3dMcpPlugin
dotnet build3. Load the Plugin in Civil 3D
Open Civil 3D 2025+
Type
NETLOADin the command lineBrowse to
plugin/Civil3dMcpPlugin/bin/Debug/net8.0-windows/Civil3dMcpPlugin.dllThe plugin starts automatically. Use
C3DMCPSTATUSto verify.
4. Configure Your AI Assistant
Claude Desktop — Add to claude_desktop_config.json:
{
"mcpServers": {
"civil3d": {
"command": "node",
"args": ["/path/to/civil3d-mcp/build/index.js"]
}
}
}5. (Optional) Set up plan-vision for scanned plans
Only needed for civil3d_plan_vision — every other tool works without this. See
plan-vision/README.md for full details.
cd plan-vision
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -r requirements.txtAlso requires Tesseract OCR installed separately and on the PATH (not a pip package) —
UB-Mannheim/tesseract on Windows. PDF rasterization
uses PyMuPDF, which needs nothing extra beyond the pip install above.
Environment Variables
Variable | Default | Description |
|
| Civil 3D plugin host |
|
| Civil 3D plugin port |
|
| Connection timeout (ms) |
|
| Command execution timeout (ms) |
|
| Log level (debug, info, warn, error) |
|
| Path to the Python interpreter used for |
|
|
|
Plugin Commands
Command | Description |
| Start the TCP listener |
| Stop the TCP listener |
| Check listener status |
License
MIT
Available Tools
9 toolscivil3d_alignmentC
Manage Civil 3D alignments (horizontal geometry). Actions: list, get (by name), create (from polyline), delete, station_to_point (convert station+offset to X,Y), point_to_station (convert X,Y to station+offset).
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X coordinate (for point_to_station). | |
| y | No | Y coordinate (for point_to_station). | |
| name | No | Alignment name. | |
| layer | No | Layer name. | |
| style | No | Alignment style name. | |
| action | Yes | The alignment operation to perform. | |
| offset | No | Offset from the alignment. | |
| station | No | Station value along the alignment. | |
| polylineHandle | No | Handle of an existing polyline to create alignment from. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It outlines each action but omits side effects (e.g., delete is destructive, creation requires a polyline). It does not mention permissions, mutability, or output characteristics. The description is insufficient for safe agentic usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with a bulleted list, efficiently conveying the resource and actions. No extraneous words. It is front-loaded with the purpose. Slightly more structure (e.g., grouping actions) could earn a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, 6 actions, no output schema), the description is incomplete. It fails to explain conditional parameter requirements (e.g., station/offset for conversion actions, polylineHandle for create). An agent would struggle to invoke the tool correctly without trial and error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already described in the input schema. The description does not add context beyond listing actions; it does not clarify which parameters apply to which actions. Baseline of 3 is appropriate as the schema does the primary job.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool manages Civil 3D alignments and enumerates specific actions (list, get, create, delete, station_to_point, point_to_station). This differentiates it from sibling tools like civil3d_corridor. However, the verb 'Manage' is generic; a more active verb could improve clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description does not provide guidance on when to use this tool versus alternatives. It lists actions but does not explain scenarios or prerequisites (e.g., when to use get vs list, or when to use create vs delete). No explicit when-not-to-use or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil3d_corridorB
Manage Civil 3D corridors (3D road models). Actions: list, get (by name), rebuild, get_surfaces, get_feature_lines, compute_volumes.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Corridor name. | |
| action | Yes | The corridor operation to perform. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It mentions actions but does not disclose side effects (e.g., 'rebuild' modifies the corridor) or prerequisites (e.g., corridor must exist). The description lacks detail on behavior beyond the action list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with a clear list of actions, front-loaded with the purpose. It is efficient but could benefit from more structured formatting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 2 parameters and no output schema. The description fails to explain what each action returns or the context needed (e.g., drawing must have a corridor). Given the multiple actions, more detail is required for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description repeats the actions from the enum without adding extra meaning, format, or constraints for parameters like 'name'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages Civil 3D corridors and lists specific actions (list, get, rebuild, get_surfaces, get_feature_lines, compute_volumes), distinguishing it from sibling tools like civil3d_alignment or civil3d_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists actions but does not provide explicit guidance on when to use this tool versus alternatives (e.g., civil3d_alignment for alignments). Usage is implied by the action enum, but no when-not-to-use information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil3d_drawingA
Manage the active Civil 3D drawing. Actions: info (get drawing info), settings (get drawing settings), save, new, undo, redo, list_object_types (list available Civil 3D object types), get_selected (get info about selected objects).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max objects to return (for get_selected). | |
| action | Yes | The drawing operation to perform. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description must handle behavioral disclosure. It lists actions like 'save' and 'new' but does not explain side effects, required permissions, or error handling. The descriptions are minimal but cover the basic intent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using one sentence and a list. It front-loads the purpose and lists actions efficiently with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-action tool with no output schema, the description provides minimal detail for each action. More context on the 'save' and 'new' actions (e.g., file paths, overwrite behavior) would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description repeats the action names with brief explanations but adds little beyond the schema's own parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Manage the active Civil 3D drawing' and lists specific actions, making it distinct from sibling tools like civil3d_alignment or civil3d_corridor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. For instance, if the user wants to work with an alignment, they would need to infer that civil3d_alignment is more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil3d_geometryB
Create basic AutoCAD geometry in Civil 3D. Actions: create_line (from start/end XYZ), create_polyline (from 2D vertices), create_3d_polyline (from 3D vertices), create_text, create_mtext.
| Name | Required | Description | Default |
|---|---|---|---|
| endX | No | ||
| endY | No | ||
| endZ | No | ||
| text | No | Text content (for create_text/create_mtext). | |
| layer | No | Layer name. | |
| action | Yes | The geometry operation to perform. | |
| closed | No | Whether the polyline is closed. | |
| height | No | Text height. | |
| startX | No | ||
| startY | No | ||
| startZ | No | ||
| rotation | No | Rotation angle in degrees. | |
| vertices | No | Array of vertices for polyline creation. | |
| insertionX | No | Insertion point X. | |
| insertionY | No | Insertion point Y. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as whether the tool requires an open drawing, is destructive, or returns entity IDs. It only lists actions, missing critical behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the purpose, and lists actions concisely. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 15 parameters and no output schema, the description is sparse. It does not explain return values, side effects, or preconditions, leaving the agent with insufficient context for complex usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 60% schema description coverage, the description adds some value by explaining coordinate usage per action (e.g., 'from start/end XYZ' for lines). However, many parameters lack descriptions in both schema and description, so the contribution is marginal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates basic AutoCAD geometry in Civil 3D and lists the specific actions (create_line, create_polyline, etc.), which distinguishes it from sibling tools like civil3d_alignment or civil3d_corridor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for basic geometry creation but does not explicitly state when to use this tool versus alternatives. Sibling names provide some context, but no direct exclusions or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil3d_healthA
Checks if the Civil 3D MCP plugin is running and responsive. Use this to verify connectivity before performing other operations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and adequately discloses that the tool checks if the plugin is 'running and responsive', implying a safe read-only operation. However, it does not detail potential error responses or timeout behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words. Front-loaded with the action and followed by usage context. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description provides enough context for a simple health check. Could optionally mention the return format (e.g., success/failure), but not critical for such a basic tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100%. The description correctly does not add parameter info, as none are needed. Baseline 4 for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it checks if the plugin is running and responsive, using specific verb 'Checks' and resource 'Civil 3D MCP plugin'. It distinguishes from sibling tools that perform specific operations like alignment or corridor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this to verify connectivity before performing other operations', providing direct guidance on when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil3d_pipeA
Manage gravity pipe networks. Actions: list_networks, get_network, get_pipe, get_structure, create_network, add_pipe (between structures), add_structure (at X,Y), check_interference.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name for new network. | |
| layer | No | Layer name. | |
| style | No | Network style. | |
| action | Yes | The pipe network operation to perform. | |
| pipeName | No | Pipe name or handle. | |
| pipeSize | No | Pipe diameter/size. | |
| partsList | No | Parts list to use. | |
| sumpDepth | No | Sump depth for structure. | |
| insertionX | No | Insertion X for new structure. | |
| insertionY | No | Insertion Y for new structure. | |
| networkName | No | Pipe network name. | |
| endStructure | No | End structure for new pipe. | |
| rimElevation | No | Rim elevation for structure. | |
| structureName | No | Structure name or handle. | |
| startStructure | No | Start structure for new pipe. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It lists actions but does not disclose side effects, permissions, or mutation behavior for create/add actions, leaving ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: a single sentence followed by a comma-separated list of actions with minimal parenthetical context. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite listing actions, the description lacks detail on each action's specific behavior, return values, and parameter applicability. Given the tool's complexity (15 parameters, no output schema), this is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, meeting baseline. The description adds context by parenthetically noting constraints like 'between structures' and 'at X,Y', which aids parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Manage gravity pipe networks' and lists all supported actions, distinguishing it from sibling tools that handle other Civil3D objects like alignments, corridors, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for pipe network operations but does not provide explicit guidance on when to use this tool versus siblings, nor does it mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil3d_pointA
Manage COGO (Coordinate Geometry) points. Actions: list (optionally by group), get (by point number), create (single or batch), delete, list_groups, import (from file).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max points to return. | |
| action | Yes | The point operation to perform. | |
| format | No | Import format (e.g. PNEZD). | |
| points | No | Array of points (for batch create). | |
| easting | No | Easting (X) coordinate. | |
| filePath | No | File path for import. | |
| northing | No | Northing (Y) coordinate. | |
| elevation | No | Elevation (Z) coordinate. | |
| groupName | No | Point group name. | |
| pointNumber | No | Point number (for get/delete). | |
| rawDescription | No | Raw description for the point. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It lists actions but does not disclose behavioral traits such as side effects (e.g., deletion is irreversible), authentication needs, or rate limits. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first defines the purpose, the second enumerates actions. No extraneous words, front-loaded with the core action list. Very efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 11 parameters and 6 actions, the description is brief but covers the main actions. However, it lacks details on return values or behavior for different actions. An output schema could complement, but none exists, so more detail would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, providing baseline 3. The description adds meaningful context beyond the schema: it mentions optional group filtering for list, point number for get/delete, batch creation, and import from file. This enhances understanding of parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it manages COGO points and lists all available actions (list, get, create, delete, list_groups, import). It distinguishes from sibling tools that handle other civil3d elements like alignments, corridors, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool description implies usage for point management but does not provide explicit guidance on when to use this tool versus alternatives, nor when-not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil3d_profileA
Manage Civil 3D profiles (vertical geometry). Actions: list (by alignment), get (by alignment + name), get_elevation (at station), create_from_surface, create_layout, delete.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Profile name. | |
| layer | No | Layer name. | |
| style | No | Profile style. | |
| action | Yes | The profile operation to perform. | |
| station | No | Station for elevation query. | |
| surfaceName | No | Surface to sample. | |
| alignmentName | No | Parent alignment name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It lists actions but does not specify side effects (e.g., creation modifies drawing, deletion is destructive), required permissions, or state changes. This is insufficient for a tool with both read and write operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the main purpose and lists actions concisely. Every part earns its place with no redundant or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple actions, 7 parameters) and no output schema, the description lacks details on return values or side effects. It does not explain what each action produces or changes, making it incomplete for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by mapping actions to parameters (e.g., list by alignment implies use of alignmentName), but it does not fully detail which parameters are required for each action, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it manages Civil 3D profiles (vertical geometry) and enumerates specific actions (list, get, get_elevation, create_from_surface, create_layout, delete). This distinguishes it from sibling tools like civil3d_alignment (horizontal) and civil3d_surface.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context by listing actions with parenthetical notes on required parameters (e.g., list by alignment, get by alignment + name). However, it does not explicitly state when to use this tool versus alternatives or include exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil3d_surfaceB
Manage Civil 3D surfaces. Actions: list, get (by name), get_elevation (at X,Y), get_statistics, create, delete, add_points, add_breakline, add_boundary, extract_contours, compute_volume (between two surfaces).
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X coordinate (for get_elevation). | |
| y | No | Y coordinate (for get_elevation). | |
| name | No | Surface name. | |
| layer | No | Layer name. | |
| style | No | Surface style name. | |
| action | Yes | The surface operation to perform. | |
| points | No | Array of 3D points. | |
| baseSurface | No | Base surface for volume calculation. | |
| description | No | Description text. | |
| boundaryType | No | ||
| breaklineType | No | ||
| majorInterval | No | Major contour interval. | |
| minorInterval | No | Minor contour interval. | |
| boundaryPoints | No | Boundary polygon points. | |
| comparisonSurface | No | Comparison surface for volume calculation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It lists actions including destructive ones (e.g., delete) but does not disclose side effects, authorization needs, or operational constraints beyond the action names. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences. First sentence states purpose, second enumerates actions. No wasted words, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 15 parameters and 11 actions, the description is too brief. It lacks details about preconditions, return values (no output schema), or usage context for each action. An agent would need additional information to invoke the tool correctly for most actions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (87%), so baseline is 3. The description adds no additional meaning to parameters beyond listing actions; it does not explain parameter usage or relationships. The schema itself provides descriptions and enums, so the description adds limited value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource (Civil 3D surfaces) and action (manage), and lists specific operations. It distinguishes from sibling tools which focus on other Civil 3D objects like alignments or corridors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (for surface management) but does not provide explicit when-to-use or when-not-to-use guidance, nor does it compare with alternatives among siblings. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
9 tool updates
v1.0.0- First observed
civil3d_alignment - First observed
civil3d_corridor - First observed
civil3d_drawing - First observed
civil3d_geometry - First observed
civil3d_health - First observed
civil3d_pipe - First observed
civil3d_point - First observed
civil3d_profile - First observed
civil3d_surface
TDQS
Each tool targets a distinct Civil 3D domain (alignments, corridors, surfaces, etc.) with no overlapping purposes. The health check tool is clearly separate for connectivity verification.
All tools follow a consistent 'civil3d_' prefix followed by a singular noun representing the domain (e.g., civil3d_alignment, civil3d_corridor). No mixing of conventions.
9 tools is well-scoped for a complex CAD environment like Civil 3D, covering major object types without being excessive.
Covers core workflows for alignments, corridors, surfaces, profiles, pipe networks, and points. Minor gaps (assemblies, subassemblies, annotation) but not critical for most operations.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI Hub for AEC — 50+ 3D formats, clash detection, ACC integration via Autodesk Platform Services.
Connects AI assistants to QCDatabase.AI for everyday construction quality-control work.
Convert Revit files to XKT, IFC, or DWG and query BIM data via natural language.
DXF and PDF/X-4 for AI agents: structured facts, PNG renders, an interactive in-chat viewer.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with Autodesk Civil 3D, allowing them to retrieve project data, create/modify/delete drawing elements, and execute code to automate Civil 3D operations.327MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI platforms to control Autodesk Navisworks via natural language, supporting model analysis, selection, data extraction, and visual management.5-
- AlicenseAqualityBmaintenanceEnables AI assistants to write and execute C# code directly inside Autodesk Civil 3D, providing full API access through code generation and execution.102MIT
- FlicenseNot gradedqualityCmaintenanceMCP server that connects an LLM assistant to Autodesk Civil 3D via COM, enabling direct manipulation of surfaces, alignments, COGO points, layers, profiles, and more through natural language.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DaniGhosy/civil3d-mcp-civil3d-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server