Skip to main content
Glama
DaniGhosy

Civil 3D MCP Server

by DaniGhosy

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:

  1. MCP Server (TypeScript/Node.js) — Communicates with AI assistants via MCP protocol

  2. Civil 3D Plugin (C# .NET 8.0) — Runs inside Civil 3D and executes API commands

Related MCP server: NavisworksMCP

Available Tools

Tool

Actions

Description

civil3d_health

health, health_verbose (plugin version, build date, drawing name, open document count)

Check plugin connectivity

civil3d_object

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

civil3d_drawing

info, settings, save, undo, redo, list_object_types, get_selected

Drawing operations

civil3d_surface

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

civil3d_alignment

list, get, create, delete, station_to_point, point_to_station, list_superelevation_curves, list_superelevation_critical_stations, list_design_speeds

Alignment operations

civil3d_profile

list, get, get_elevation, create_from_surface, create_layout (no label set yet), list_entities, delete, create_tangent (planned), create_parabola (planned)

Profile management

civil3d_profile_view

create, list, get, delete, get_bands

Profile views (graphic display of a profile)

civil3d_corridor

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)

civil3d_sample_line

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

civil3d_sheet_production

list_view_frames, list_match_lines

Read-only view frames / match lines — creating them is not exposed by the .NET API (confirmed Autodesk limitation)

civil3d_pipe

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

civil3d_pressure_pipe

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

civil3d_point

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

civil3d_data_shortcut

get_project_id, associate_project, promote_reference, create_reference (planned)

Data shortcuts (shared references between drawings)

civil3d_survey

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)

civil3d_import_export

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

civil3d_parcel

list_sites, list, get, delete, create (planned)

Parcels

civil3d_assembly

list, get, delete, list_subassemblies, get_subassembly_parameters, set_subassembly_parameter, create (planned)

Corridor assemblies

civil3d_grading

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)

civil3d_geometry

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 warning field when 0 lines were created, e.g. no intersections found)

Basic AutoCAD geometry

civil3d_blocks

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

civil3d_label

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

civil3d_legend

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

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

civil3d_plan_vision

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 plan-vision/README.md

civil3d_quantity

count_by_category (groups block counts by a symbol→category mapping), generate_quantity_report (exports a BOQ table to .xlsx)

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 build

2. Build the Civil 3D Plugin

  1. Copy the required DLLs from your Civil 3D installation to C_References/ (see C_References/README.md)

  2. Build the plugin:

cd plugin/Civil3dMcpPlugin
dotnet build

3. Load the Plugin in Civil 3D

  1. Open Civil 3D 2025+

  2. Type NETLOAD in the command line

  3. Browse to plugin/Civil3dMcpPlugin/bin/Debug/net8.0-windows/Civil3dMcpPlugin.dll

  4. The plugin starts automatically. Use C3DMCPSTATUS to 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.txt

Also 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

CIVIL3D_HOST

localhost

Civil 3D plugin host

CIVIL3D_PORT

8080

Civil 3D plugin port

CIVIL3D_CONNECT_TIMEOUT

5000

Connection timeout (ms)

CIVIL3D_COMMAND_TIMEOUT

120000

Command execution timeout (ms)

LOG_LEVEL

info

Log level (debug, info, warn, error)

PLAN_VISION_PYTHON

python

Path to the Python interpreter used for civil3d_plan_vision

PLAN_VISION_TIMEOUT

120000

civil3d_plan_vision subprocess timeout (ms)

Plugin Commands

Command

Description

C3DMCPSTART

Start the TCP listener

C3DMCPSTOP

Stop the TCP listener

C3DMCPSTATUS

Check listener status

License

MIT

Available Tools

9 tools
civil3d_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).

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoX coordinate (for point_to_station).
yNoY coordinate (for point_to_station).
nameNoAlignment name.
layerNoLayer name.
styleNoAlignment style name.
actionYesThe alignment operation to perform.
offsetNoOffset from the alignment.
stationNoStation value along the alignment.
polylineHandleNoHandle of an existing polyline to create alignment from.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoCorridor name.
actionYesThe corridor operation to perform.

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax objects to return (for get_selected).
actionYesThe drawing operation to perform.

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
endXNo
endYNo
endZNo
textNoText content (for create_text/create_mtext).
layerNoLayer name.
actionYesThe geometry operation to perform.
closedNoWhether the polyline is closed.
heightNoText height.
startXNo
startYNo
startZNo
rotationNoRotation angle in degrees.
verticesNoArray of vertices for polyline creation.
insertionXNoInsertion point X.
insertionYNoInsertion point Y.

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName for new network.
layerNoLayer name.
styleNoNetwork style.
actionYesThe pipe network operation to perform.
pipeNameNoPipe name or handle.
pipeSizeNoPipe diameter/size.
partsListNoParts list to use.
sumpDepthNoSump depth for structure.
insertionXNoInsertion X for new structure.
insertionYNoInsertion Y for new structure.
networkNameNoPipe network name.
endStructureNoEnd structure for new pipe.
rimElevationNoRim elevation for structure.
structureNameNoStructure name or handle.
startStructureNoStart structure for new pipe.

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax points to return.
actionYesThe point operation to perform.
formatNoImport format (e.g. PNEZD).
pointsNoArray of points (for batch create).
eastingNoEasting (X) coordinate.
filePathNoFile path for import.
northingNoNorthing (Y) coordinate.
elevationNoElevation (Z) coordinate.
groupNameNoPoint group name.
pointNumberNoPoint number (for get/delete).
rawDescriptionNoRaw description for the point.

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoProfile name.
layerNoLayer name.
styleNoProfile style.
actionYesThe profile operation to perform.
stationNoStation for elevation query.
surfaceNameNoSurface to sample.
alignmentNameNoParent alignment name.

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoX coordinate (for get_elevation).
yNoY coordinate (for get_elevation).
nameNoSurface name.
layerNoLayer name.
styleNoSurface style name.
actionYesThe surface operation to perform.
pointsNoArray of 3D points.
baseSurfaceNoBase surface for volume calculation.
descriptionNoDescription text.
boundaryTypeNo
breaklineTypeNo
majorIntervalNoMajor contour interval.
minorIntervalNoMinor contour interval.
boundaryPointsNoBoundary polygon points.
comparisonSurfaceNoComparison surface for volume calculation.

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 9 tool updatesv1.0.0
    • First observedcivil3d_alignment
    • First observedcivil3d_corridor
    • First observedcivil3d_drawing
    • First observedcivil3d_geometry
    • First observedcivil3d_health
    • First observedcivil3d_pipe
    • First observedcivil3d_point
    • First observedcivil3d_profile
    • First observedcivil3d_surface

TDQS

A3.7/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

9 tools is well-scoped for a complex CAD environment like Civil 3D, covering major object types without being excessive.

Completeness4/5

Covers core workflows for alignments, corridors, surfaces, profiles, pipe networks, and points. Minor gaps (assemblies, subassemblies, annotation) but not critical for most operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI platforms to control Autodesk Navisworks via natural language, supporting model analysis, selection, data extraction, and visual management.
    5
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP 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

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