Civil 3D MCP Server
Enables AI assistants to write and execute C# code directly inside Autodesk Civil 3D (built on AutoCAD), providing full access to the Civil 3D API for operations on surfaces, alignments, points, geometry, and drawing information.
Click on "Deploy 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 Serverlist all surfaces in the drawing"
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 — Code Execution Architecture
An MCP server that enables AI assistants to write and execute C# code directly inside Autodesk Civil 3D. Instead of fixed tools, the AI generates code that runs with full API access.
Architecture
┌─────────────────┐ stdio ┌──────────────────┐ TCP/JSON-RPC ┌──────────────────┐
│ AI Assistant │ ◄────────────► │ MCP Server (TS) │ ◄──────────────────► │ Civil 3D Plugin │
│ (Claude, Cline) │ │ 3 meta-tools │ port 8080 │ Roslyn Engine │
└─────────────────┘ └──────────────────┘ └──────────────────┘
│ │
Skills Library C# Code Execution
(.skill.md files) (full Civil 3D API)Related MCP server: revit-mcp
10 Meta-Tools
Tool | Purpose | Safety |
| Check connection, Civil 3D version, active drawing | ✅ Read-only |
| Real-time operation progress and queue state | ✅ Read-only |
| Inventory drawing objects without writing C# | ✅ Read-only |
| Read audit log of past operations | ✅ Read-only |
| Read sandbox mode, export paths, confirmation policy | ✅ Read-only |
| Execute C# code read-only | ✅ No side effects |
| Execute C# code with write access | ⚠️ Modifies drawing |
| Execute native Civil 3D command strings | ⚠️ May modify drawing |
| Multi-step transactions (begin/execute/commit/abort) | ⚠️ May modify drawing |
| Browse/search/read code skill templates | ✅ Metadata only |
How It Works
AI reads a skill → Gets a documented C# code template
AI adapts the code → Fills in parameters, combines patterns
AI sends code → Via
civil3d_executeorcivil3d_queryRoslyn compiles + runs → Inside Civil 3D with full API access
Results return as JSON → Back to the AI
Example Interaction
User: "What surfaces are in my drawing?"
AI: Uses civil3d_query with:
var surfaces = new List<object>();
foreach (ObjectId id in CivilDoc.GetSurfaceIds()) {
var s = Transaction.GetObject(id, OpenMode.ForRead) as TinSurface;
surfaces.Add(new { s.Name, s.Layer });
}
return surfaces;
Result: [{ "Name": "EG", "Layer": "C-TOPO-EG" }, ...]Skills Library
Skills are documented C# code templates in skills/:
skills/
├── surfaces/ # Surface operations
├── alignments/ # Alignment + station/offset
├── points/ # COGO points
├── geometry/ # Lines, polylines, text
├── corridors/ # Corridor listing and info
├── pipe_networks/ # Pipe network listing and details
├── parcels/ # Sites and parcels
├── profiles/ # Profile listing and elevation queries
├── sections/ # Sample lines and cross-sections
├── labels/ # Label style inventories
├── styles/ # Object style inventories
├── export/ # CSV, LandXML export patterns
├── quantity/ # Volumes and corridor quantities
├── drawing/ # Drawing info
└── workflows/ # Multi-step civil engineering workflowsScript Globals
Code executed via civil3d_execute or civil3d_query has access to:
Global | Type | Description |
|
| Active AutoCAD document |
|
| Active Civil 3D document |
|
| Document database |
|
| Active transaction |
|
| Document editor |
Helper methods: GetSurfaceByName, GetAlignmentByName, GetProfileByName, GetCogoPointByNumber, GetObjectIdByHandle, ListSurfaces, ListAlignments, ListCogoPoints, ToRef, ToPoint
All Civil 3D namespaces are auto-imported. Return values are auto-serialized (ObjectId → handle, Point3d → xyz).
Setup
Quick setup (recommended)
npm run setupThis interactive script will:
Detect installed Civil 3D versions (scans C:, D:, and other drives)
Configure plugin DLL references automatically
Build the MCP server and plugin
Print MCP config for Cursor
Civil 3D on D: or custom folder? Use one of these:
# Option A — pass the path directly
npm run setup -- -InstallPath "D:\Program Files\Autodesk\AutoCAD 2026"
# Option B — environment variable (picked up automatically during scan)
$env:CIVIL3D_INSTALL_PATH = "D:\Program Files\Autodesk\AutoCAD 2026"
npm run setup
# Option C — interactive: when the menu appears, press C and paste the path
npm run setupThe path must be the AutoCAD 20XX folder that contains C3D\AeccDbMgd.dll.
Manual setup
1. Build MCP Server
npm install && npm run build2. Build Plugin
# References are in plugin/Civil3dMcpPlugin/Civil3dMcpPlugin.References.props
# Regenerate with: npm run setup
# Custom install path: npm run setup -- -InstallPath "D:\...\AutoCAD 2026"
cd plugin/Civil3dMcpPlugin
dotnet build3. Load in Civil 3D
NETLOAD → select Civil3dMcpPlugin.dll
C3DMCPSTATUS → verify running4. Configure AI
{
"mcpServers": {
"civil3d": {
"command": "node",
"args": ["/path/to/civil3d-mcp/build/index.js"]
}
}
}Environment Variables
Variable | Default | Description |
|
| Plugin host |
|
| Plugin port (set on both MCP server and Civil 3D process) |
|
| Default operation timeout (ms) |
|
| C# script execution timeout |
|
| Native command timeout |
|
| Discover inventory timeout |
|
| Audit log file path |
|
|
|
|
| Require |
| (see below) | Extra export folders, semicolon-separated |
|
| Log level |
Development Roadmap
See ROADMAP.md for the phased plan to reach professional full access.
Security
Three sandbox modes via CIVIL3D_SANDBOX_MODE:
Mode | File IO | Civil 3D API |
| Blocked — use | Full |
| Only under allowed folders | Full |
| Unrestricted (delete still needs confirmation) | Full |
Default allowed export paths: %LOCALAPPDATA%\Civil3dMcp\Exports, Desktop, Documents.
Add more with CIVIL3D_ALLOWED_EXPORT_PATHS.
Safe file helpers in scripts: WriteExportFile(path, content), WriteExportLines(path, lines), ReadImportFile(path), AllowedExportPaths.
Destructive operations (erase, purge, delete) require confirmed: true when CIVIL3D_REQUIRE_CONFIRMATION=true (default). The tool returns CIVIL3D.CONFIRMATION_REQUIRED with the list of detected risks.
Always blocked: process execution, network, registry, P/Invoke, dynamic assembly loading.
Call civil3d_security to inspect the active policy before exports or destructive writes.
License
MIT
Available Tools
10 toolscivil3d_auditA
Read the audit log of Civil 3D MCP operations. Shows timestamp, method, description, success/failure, and duration for each operation. Useful for debugging and traceability.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of recent entries to return (default: 50, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It correctly implies a read operation and lists output fields, but does not disclose additional behavioral traits such as rate limits, authentication requirements, or whether the log is per-session, limiting 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 two efficient sentences. The first sentence states the core purpose; the second adds output details and usage context. No unnecessary 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 simplicity (one optional parameter, no output schema, no nested objects), the description covers input, output fields, and a usage hint. It does not specify the output format (e.g., list or object) but enumerates the fields, making it sufficiently complete.
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?
The only parameter 'limit' is fully described in the schema with default and max values (100% schema coverage). The tool description adds no extra semantics beyond that, so the baseline score of 3 applies.
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 'Read the audit log' with a specific verb and resource. It enumerates the fields shown (timestamp, method, description, success/failure, duration), differentiating it from sibling tools like civil3d_health (likely current state) and civil3d_execute (actions).
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 labels the tool as 'useful for debugging and traceability,' providing context for when to use it. However, it does not explicitly state when not to use it or mention alternatives among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil3d_commandA
Execute a native Civil 3D or AutoCAD command string (same as typing in the command line). Use for operations not easily done via C# API: CREATECORRIDOR, EXPORTLANDXML, etc. Prefer civil3d_execute/civil3d_query when the C# API is sufficient.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Command string to execute, e.g. 'REGEN', 'CREATECORRIDOR', 'AeccCreateSurfaceGridFromDem' | |
| confirmed | No | Set true to confirm destructive commands (ERASE, PURGE, etc.) | |
| timeoutMs | No | Max wait time in ms when waitForCompletion is true (default: 300000) | |
| description | No | Brief description for logging | |
| waitForCompletion | No | Wait until the command finishes (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. The command-line analogy hints at behavior but lacks detail on side effects, errors, or behavior for destructive commands beyond the schema's confirmed param.
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: first defines purpose, second gives usage guidance. 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?
Given no output schema and no annotations, the description is nearly complete. It explains when to use, provides examples, and mentions alternatives. Could mention default timeout but that's in schema.
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 covers 100% of parameters, so baseline is 3. The description adds value by giving example command strings and context, justifying a score of 4.
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 states the tool executes a native command string, provides examples like CREATECORRIDOR, and distinguishes from siblings by recommending civil3d_execute/civil3d_query when API is sufficient.
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 tells when to use (operations not easily done via C# API) and when to prefer alternatives, with specific command examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil3d_discoverA
Discover and inventory Civil 3D drawing objects without writing C# code. Returns structured JSON for surfaces, alignments, profiles, corridors, pipe networks, sites, parcels, COGO points, sample lines, and styles. Use this FIRST to understand what exists in the drawing before executing code.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items per category (default: 100) | |
| timeoutMs | No | Max time in ms (default: 60000) | |
| categories | No | Categories to include. Default: all. Options: summary, surfaces, alignments, profiles, corridors, pipeNetworks, sites, parcels, cogoPoints, sampleLines, styles |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It discloses read-only behavior implicitly (discover, no write) and states return format, but does not detail side effects, auth requirements, or performance limits. Adequate but could be more explicit about safety.
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 with no waste. First sentence states purpose and return format; second gives usage priority. Every word earns its place.
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 no output schema, description adequately explains return value (structured JSON with specific object types). Covers categories parameter. For a discovery tool with three optional params, this is fully sufficient.
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 schema already documents all three parameters well. The tool description mentions categories inline but adds no new meaning beyond the schema. Baseline 3 is appropriate.
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 discovers and inventories Civil 3D drawing objects without writing C# code, returning structured JSON for many object types. It distinguishes from siblings like civil3d_execute, civil3d_query by stating a specific resource and action.
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 advises 'Use this FIRST to understand what exists in the drawing before executing code.' This gives clear when-use guidance. While it doesn't list all alternatives, the sibling context implies other tools for execution or querying.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil3d_executeA
Execute C# code in Civil 3D with write access. The code runs inside a committed transaction. Available globals: Document/Doc, CivilDoc/Civil, Database, Transaction/Tr, Editor. Helpers: GetSurfaceByName, GetAlignmentByName, ListSurfaces, ListAlignments, ToRef, ToPoint. All Civil 3D namespaces are auto-imported. Return a value to get results back as JSON. Use civil3d_session for multi-step workflows. Use civil3d_command for native C3D commands.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | C# code to execute. Has access to Document, CivilDoc, Database, Transaction, Editor. Example: var id = TinSurface.Create(Database, "MySurface"); return new { success = true }; | |
| confirmed | No | Set true to confirm destructive operations (erase, delete, purge). Required when policy demands it. | |
| timeoutMs | No | Max execution time in ms (default: 120000). Increase for heavy operations. | |
| description | No | Brief description of what this code does (for logging/audit trail). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses execution in a committed transaction with write access, available globals, helpers, and automatic namespace imports. However, does not explicitly mention error handling or rollback on failure, which would further aid 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 a single, dense paragraph with front-loaded purpose, using minimal words to convey all necessary information without redundancy.
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?
Covers the return format ('Return a value to get results back as JSON'), available globals, and helpers. Lacks explicit mention of error behavior (e.g., exception handling), but overall sufficient for a code execution tool with no output schema.
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%, but the description adds value beyond schema by explaining the code execution context (available objects, helpers) and the confirmed parameter's purpose for destructive operations. It also provides an example for the code parameter.
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?
Clearly states the tool executes C# code with write access in Civil 3D, specifying the verb and resource. It also distinguishes from siblings by referencing civil3d_session and civil3d_command for different use cases.
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 provides when-to-use alternatives: 'Use civil3d_session for multi-step workflows. Use civil3d_command for native C3D commands.' This guides the agent on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil3d_healthA
Check Civil 3D MCP connection health. Returns plugin status, Civil 3D version, active drawing info, and queue state. Call this first to verify Civil 3D is running and the plugin is loaded.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses return values and implies read-only operation. However, it does not explicitly state whether the tool has side effects or requires authentication, though for a health check this is reasonable.
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 efficiently state purpose and usage advice. No unnecessary 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 no parameters and no output schema, the description adequately specifies what the tool does and what it returns. For a simple health check tool, this is complete and covers all necessary context.
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 in schema, but description adds meaning by explaining the tool's purpose and what it returns. Since schema coverage is 100% (no params), baseline is 4; description adds context beyond 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?
Description clearly states 'Check Civil 3D MCP connection health' with specific return values (status, version, drawing info, queue state). However, it does not differentiate from sibling tool 'civil3d_status', which likely has overlapping functionality.
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 advises 'Call this first to verify Civil 3D is running and the plugin is loaded.' Provides clear context for when to use, but lacks exclusionary guidance (e.g., when not to use) or mention of alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil3d_queryA
Execute C# code in Civil 3D in READ-ONLY mode (no changes saved). Available globals: Document/Doc, CivilDoc/Civil, Database, Transaction/Tr, Editor. Helpers: GetSurfaceByName, GetAlignmentByName, ListSurfaces, ListAlignments, ListCogoPoints. All Civil 3D namespaces are auto-imported. Return a value to get results as JSON. Use this for querying data: listing objects, getting properties, analyzing surfaces, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | C# code to query data. Has access to Document, CivilDoc, Database, Transaction, Editor. Example: var surfaces = new List<object>(); foreach (ObjectId id in CivilDoc.GetSurfaceIds()) { var s = Transaction.GetObject(id, OpenMode.ForRead) as TinSurface; surfaces.Add(new { s.Name, s.Layer }); } return surfaces; | |
| timeoutMs | No | Max execution time in ms (default: 120000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. Clearly states read-only behavior, available globals (Doc, CivilDoc, Database, etc.), helpers, and auto-imported namespaces. Does not cover error handling or timeout behavior in detail, but safety is well addressed.
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?
Description is front-loaded with key constraint (READ-ONLY), then lists globals/helpers, example usage, and ends with clear purpose statement. Efficient at ~100 words, no fluff.
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 query tool with no output schema, description explains return format (JSON if value returned) and available context (globals, helpers). Covers all essential aspects for agent to use tool correctly. Could mention error responses but overall complete.
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 100% but description adds significant value: explains what globals and helpers are available, provides a C# example for the code parameter, and gives default timeout (120000 ms). This greatly aids the agent in crafting correct inputs.
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 executes C# code in Civil 3D in READ-ONLY mode, with specific verb 'Execute' and resource 'C# code in Civil 3D'. It distinguishes from siblings like civil3d_execute (likely write) and civil3d_command (different execution style).
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 for querying data' and lists examples. Implies not for modifications, but does not explicitly state when not to use or mention alternatives like civil3d_execute for write operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil3d_securityA
Read the Civil 3D MCP security policy: sandbox mode (strict/professional/unlocked), allowed file export paths, and whether destructive operations require confirmed: true. Call this before file exports or destructive writes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses the tool's behavior as a read-only policy query. It details the returned information without claiming any side effects, making it transparent for safe invocation.
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?
Single sentence that is front-loaded with the tool's purpose and efficiently packs all critical information: what it reads, what it returns, and when to use it. 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?
Despite having no output schema or annotations, the description is self-sufficient. It fully explains the tool's return value and usage context, meeting all needs for a simple info-retrieval 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?
Input schema has zero parameters (100% coverage), so the description adds meaning by explaining the output. Although no parameter details are needed, the description enriches the tool's purpose beyond the empty 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?
Description clearly states it reads the Civil 3D MCP security policy, specifying exactly what information it returns (sandbox mode, allowed export paths, destructive operation confirmation). It distinguishes itself from sibling tools like civil3d_health and civil3d_execute by focusing on security policy.
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 advises the agent to call this tool before file exports or destructive writes, providing clear usage context. No alternatives or when-not-to-use guidance is needed given the tool's singular purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil3d_sessionA
Manage multi-step Civil 3D script sessions with a shared transaction. Use 'begin' to start, 'execute' for each script step (no commit), 'commit' to save all changes, or 'abort' to discard. Useful for complex workflows that need multiple code steps in one transaction.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | C# code to run (required for execute action) | |
| action | Yes | begin | execute | commit | abort | |
| confirmed | No | Set true to confirm destructive operations in session scripts | |
| sessionId | No | Session ID (required for execute, commit, abort) | |
| description | No | Brief description for logging |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses key behaviors like the lifecycle (begin, execute, commit, abort) and that execute does not commit. However, it does not mention potential destructiveness of commit/abort, prerequisites, or side effects. Adequate but not thorough.
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, front-loaded with the purpose, then listing the actions. Every sentence is necessary and no words are wasted. Highly concise and well-structured.
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 complexity (5 parameters, session lifecycle, no output schema), the description covers the main user flow and action semantics. However, it omits details like error handling, timeouts, or prerequisites (e.g., need to be in a Civil 3D environment). Still, it is largely complete for a session management 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 context about actions (e.g., 'execute for each script step (no commit)') but does not elaborate on parameters like code, sessionId, or confirmed. The value added 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 the verb 'Manage' and the resource 'multi-step Civil 3D script sessions', distinguishing it from sibling tools like civil3d_execute and civil3d_command. It provides specific actions (begin, execute, commit, abort) and their purposes, making the tool's function unambiguous.
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 states it is 'useful for complex workflows that need multiple code steps in one transaction', implying when to use it. However, it does not explicitly mention when not to use it or name alternatives, though sibling tool names provide some context. A clearer exclusion would improve the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil3d_skillsA
Browse and read Civil 3D code skills (documented C# code templates). Use 'list' to see available skills, 'search' to find by keyword, 'get' to read the full skill with code template. Skills are pre-built C# patterns you can adapt and execute via civil3d_execute or civil3d_query.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query for 'search' action | |
| action | Yes | list = show all skills, search = find by keyword, get = read full skill | |
| category | No | Filter by category (surfaces, alignments, points, etc.) | |
| skillName | No | Skill name for 'get' action |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It implies read-only behavior through 'Browse and read' and actions like list/search/get, but does not explicitly state it is non-destructive. The lack of destructive mentions is acceptable for a clearly read-only tool.
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, no wasted words, and front-loads the purpose. It efficiently covers actions, usage, and relationship to sibling tools.
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 description adequately covers the tool's purpose and actions, references sibling tools for execution, and mentions that 'get' returns a full code template. However, it lacks details about output format or behavior for empty results, which is acceptable given the tool's simplicity.
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 baseline is 3. The description adds context by explaining the three actions and their mapping to parameters, but does not provide significant detail beyond what the schema already describes.
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 browses and reads Civil 3D code skills, lists three specific actions (list, search, get), and distinguishes from sibling execution tools by noting that skills can be adapted and executed via civil3d_execute or civil3d_query.
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 clear context for using the tool (to find and read skills) and implicitly contrasts with execution tools, but does not explicitly state when not to use it or list alternative tools beyond mentioning civil3d_execute and civil3d_query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
civil3d_statusA
Get real-time status of the Civil 3D plugin operation queue and any in-progress task. Use during long operations (corridor rebuild, surface build) to check elapsed time without blocking the current operation.
| 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 must convey behavioral traits. It notes the tool is non-blocking ('without blocking the current operation'), implying a read-only status check. However, it omits details like error handling or that it doesn't modify data, leaving some gaps.
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, front-loads the purpose and usage, and contains no redundant information. Every sentence serves a clear role.
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?
While the description explains what the tool does and when to use it, it lacks details on the return value (e.g., format, fields like queue length or task name). Without an output schema, the description should elaborate on the output structure.
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?
There are zero parameters, so the description does not need to add parameter details. Schema coverage is 100% (all parameters documented), and the baseline for 0 parameters is 4, which is appropriate.
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 retrieves 'real-time status of the Civil 3D plugin operation queue and any in-progress task,' using a specific verb and resource. It distinguishes from siblings like civil3d_health and civil3d_execute by focusing on status monitoring rather than diagnostics or actions.
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 explicitly advises using the tool 'during long operations (corridor rebuild, surface build) to check elapsed time without blocking the current operation,' providing clear context. It does not mention when not to use it or list alternatives, but the implied use case is sufficient.
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.
10 tool updates
v1.0.0- First observed
civil3d_audit - First observed
civil3d_command - First observed
civil3d_discover - First observed
civil3d_execute - First observed
civil3d_health - First observed
civil3d_query - First observed
civil3d_security - First observed
civil3d_session - First observed
civil3d_skills - First observed
civil3d_status
TDQS
Scored across 10 tools
Each tool has a unique purpose: health, status, discover, audit, security, execute (write), query (read-only), command (native commands), session (multi-step), and skills (code templates). No overlap or ambiguity.
All tools follow the consistent pattern 'civil3d_<descriptive_noun>', making it easy to predict functionality from the name.
10 tools is an ideal number for a domain-specific server, covering all essential operations without bloat.
The tool set covers connection check, status monitoring, object discovery, audit, security, code execution (read/write), query, native commands, multi-step transactions, and code templates—a complete surface for Civil 3D interaction via MCP.
Maintenance
Related MCP Connectors
- OolkinOAuthcom.oolkin
AI colleagues that keep your standards, your project and their reasoning between sessions
Connects AI assistants to QCDatabase.AI for everyday construction quality-control work.
AI Hub for AEC — 50+ 3D formats, clash detection, ACC integration via Autodesk Platform Services.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
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.332MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with Autodesk Revit to query project data, manage elements, and execute generated code via the Model Context Protocol. It provides full compatibility with GitHub Copilot and Claude to automate BIM modeling workflows.1365 npmMIT
- AlicenseAqualityCmaintenanceEnables AI assistants to interact with Autodesk Civil 3D through natural language, supporting tools for surfaces, alignments, profiles, corridors, pipe networks, COGO points, and AutoCAD geometry.93MIT
- AlicenseNot gradedqualityAmaintenanceLets any MCP-compatible AI assistant read and edit Autodesk Civil 3D drawings through tools for alignments, surfaces, corridors, pipe networks, quantity takeoff, and cut/fill, using a local bridge plugin and named pipes.MIT