Civil 3D MCP Server
Civil 3D MCP Server — Dynamic Roslyn Fork
AIアシスタントがAutodesk Civil 3D内で直接C#コードを記述・実行できるようにするMCPサーバーです。多数の固定ツールの代わりに、AIがタスク固有のコードを生成し、Civil 3D APIアクセス付きで実行します。
プロジェクトの範囲と系譜
このフォークは、動的なRoslyn/C#実行モデルと、3つのMCPツールからなる意図的に小さな公開サーフェスを維持しています。現在の互換性ベースラインはAutodesk Civil 3D 2025で、ローカル作業は信頼性、安全性、測定可能な効率、再利用可能なCivil 3Dスキルに焦点を当てています。他のCivil 3Dバージョンは、別途検証された互換性作業を通じて後から追加できます。
このプロジェクトはbarbosaihan/civil3d-mcpから派生しています。SantosSjba/mcp-to-c3dは選択されたテスト済みのアイデアのために評価され、Sacred-G/Civil3D-mcpはアーキテクチャの参照としてのみ使用されました。詳細な帰属とライセンスの境界についてはPROVENANCE.mdを参照してください。
この独立したプロジェクトはAutodeskとは提携しておらず、Autodeskの承認も受けていません。Autodeskアセンブリやその他のプロプライエタリなCivil 3Dファイルは含まれていません。
アーキテクチャ
┌─────────────────┐ 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)3つのメタツール
ツール | 目的 | 安全性 |
| 書き込みアクセス付きでC#コードを実行(トランザクションコミット) | ⚠️ 図面を変更します |
| 読み取り専用でC#コードを実行(コミットなし) | ✅ 副作用なし |
| コードスキルテンプレートの閲覧/検索/読み取り; | ✅ メタデータのみ |
仕組み
AIがスキルを読む → 文書化されたC#コードテンプレートを取得
AIがコードを適応させる → パラメータを埋め、パターンを組み合わせる
AIがコードを送信 →
civil3d_executeまたはcivil3d_query経由Roslynがコンパイルして実行 → 完全なAPIアクセスでCivil 3D内で実行
結果がJSONとして返る → AIに戻る
対話例
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" }, ...]スキルライブラリ
civil3d_skillsは、既に読み込まれた許可リストに登録されたCivil 3Dホストアセンブリから、公開型およびメンバー名/シグネチャの限定された読み取り専用検索を行うaction: "api_lookup"もサポートしています。アセンブリの読み込み、C#コードの実行、アクティブな図面へのアクセスは行いません。クエリと、必要に応じてアセンブリ、名前空間プレフィックス、結果制限を指定します。
スキルはskills/内の文書化されたC#コードテンプレートです:
skills/
├── surfaces/ # Surface operations
├── alignments/ # Alignment + station/offset
├── points/ # COGO points
├── geometry/ # Lines, polylines, text
├── drawing/ # Drawing info
└── workflows/ # Complex multi-object operationsスクリプトグローバル
civil3d_executeまたはcivil3d_queryを介して実行されるコードは、以下にアクセスできます:
グローバル | 型 | 説明 |
|
| アクティブなAutoCADドキュメント |
|
| アクティブなCivil 3Dドキュメント |
|
| ドキュメントデータベース |
|
| アクティブなトランザクション |
|
| ドキュメントエディタ |
すべてのCivil 3D名前空間は自動的にインポートされます。
セットアップ
1. MCPサーバーのビルド
npm install && npm run build2. プラグインのビルド
# Copy DLLs from Civil 3D to C_References/ (see C_References/README.md)
cd plugin/Civil3dMcpPlugin
dotnet build3. Civil 3Dに読み込む
NETLOAD → select Civil3dMcpPlugin.dll
C3DMCPSTATUS → verify running4. AIの設定
{
"mcpServers": {
"civil3d": {
"command": "node",
"args": ["/path/to/civil3d-mcp/build/index.js"]
}
}
}環境変数
変数 | デフォルト | 説明 |
|
| プラグインホスト |
|
| プラグインポート |
|
| 実行タイムアウト(ミリ秒) |
|
| ログレベル |
ベンチマーク
フェーズ2Aのホスト非依存レコーダー、フェーズ2A.1のオプトイン内部ライブトレース契約、およびフェーズ2A.2の読み取り専用ライブランナーは、benchmark/README.mdに文書化されています。いずれもMCPツール、キュー、リトライを追加しません。2A.2ランナーは、明示的に開始された場合にのみ、固定された読み取り専用クエリを呼び出すことができます。
構造化エラー(フェーズ2B.1)
civil3d_queryとcivil3d_executeは、既存のテキストエラー内容とisError: trueを維持しつつ、スキーマcivil3d-mcp-error/v1のstructuredContentも返します。安定したエラーフィールドはcode、category、message、source、outcome、retryableです。コマンドタイムアウトまたは送信後の接続喪失はoutcome: "unknown"およびretryable: falseを持ち、サーバーは自動的にリトライしません。成功応答と3ツールの公開サーフェスは変更されません。
プライベートTCPフレーミング(フェーズ2C.1)
各localhost TCP接続は、1つのUTF-8 JSON-RPCリクエストと1つのレスポンスを運びます。各JSONボディの後にはLFが続き、UTF-8バイト数で8 MiBに制限されます(LFは含みません)。Nodeクライアントは、完全なJSONボディの後に秩序ある接続クローズが続く場合、以前のプラグインのフレーミングなしレスポンスも受け入れます。過大なリクエストは書き込まれる前に拒否されます。過大または不正なレスポンス、および中断された接続は、再試行不可の構造化トランスポートエラーを生成します。実行が完了したがプラグインが過大な結果を返せなかった場合、報告されるoutcomeはunknownです。
操作監査ログと書き込み冪等性(フェーズ2I.1 / 2I.2)
デフォルトのinfoログレベルでは、受け入れられた各civil3d_queryおよびcivil3d_execute操作は、1つの制限付きstderr監査イベントを発行します。これには、新しい不透明な操作ID、ツール名、C#ソースのSHA-256とUTF-8バイト長、成功/エラーステータス、経過ミリ秒が含まれます。エラーは安定したcode/category/source/outcomeフィールドのみを追加します。監査イベントには、呼び出し元コード、説明、図面ID、結果、エラーメッセージは含まれません。
civil3d_executeは、オプションの不透明なidempotencyKey(1〜128のASCII文字、数字、.、_、:、-)も受け入れます。1つのプラグインセッション内で、キーをUTF-8 C# SHA-256および正規化されたexpectedDrawing IDにバインドします。重複は進行中、競合、または既にコミット済みとして拒否されます。コミット済みエントリは結果を保持せず、呼び出し元は読み取り専用クエリで調整する必要があります。セッションは最大256の完了キーを保持し、最も古いものを決定的に追い出します。これにより、永続化、自動リトライ、または正確に1回のセマンティクスは追加されません。
セキュリティ
Roslynサンドボックスは以下をブロックします:
プロセス実行(
Process.Start)ファイル削除(
File.Delete)ネットワークリクエスト(
HttpClient、Sockets)レジストリアクセス
動的アセンブリ読み込み
すべてのCivil 3D API操作は許可されています。
この正規表現サンドボックスは多層防御であり、信頼境界ではありません。両方のコードツールは変更可能なCivil 3DおよびAutoCAD APIオブジェクトを受け取ります。civil3d_queryはホストのトランザクションコミットをスキップしますが、任意の動的C#が副作用なしであることを保証できません。信頼された承認ゲート付きコードのみを実行してください。ループバックTCPはリモートネットワークアクセスを防ぎますが、他のローカルプロセスを認証しません。
ライセンス
MIT
This server cannot be installed
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
Build and run visual creative-production workflows from your AI agent.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Build, validate, and deploy multi-agent AI solutions from any AI environment.
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/nezolder/civil3d-mcp-roslyn'
If you have feedback or need assistance with the MCP directory API, please join our Discord server