Skip to main content
Glama
nezolder

Civil 3D MCP Server

by nezolder

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つのメタツール

ツール

目的

安全性

civil3d_execute

書き込みアクセス付きでC#コードを実行(トランザクションコミット)

⚠️ 図面を変更します

civil3d_query

読み取り専用でC#コードを実行(コミットなし)

✅ 副作用なし

civil3d_skills

コードスキルテンプレートの閲覧/検索/読み取り;api_lookupは既に読み込まれた公開Civil 3D APIメタデータを検索します

✅ メタデータのみ

仕組み

  1. AIがスキルを読む → 文書化されたC#コードテンプレートを取得

  2. AIがコードを適応させる → パラメータを埋め、パターンを組み合わせる

  3. AIがコードを送信civil3d_executeまたはcivil3d_query経由

  4. Roslynがコンパイルして実行 → 完全なAPIアクセスでCivil 3D内で実行

  5. 結果が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を介して実行されるコードは、以下にアクセスできます:

グローバル

説明

Document

Document

アクティブなAutoCADドキュメント

CivilDoc

CivilDocument

アクティブなCivil 3Dドキュメント

Database

Database

ドキュメントデータベース

Transaction

Transaction

アクティブなトランザクション

Editor

Editor

ドキュメントエディタ

すべてのCivil 3D名前空間は自動的にインポートされます。

セットアップ

1. MCPサーバーのビルド

npm install && npm run build

2. プラグインのビルド

# Copy DLLs from Civil 3D to C_References/ (see C_References/README.md)
cd plugin/Civil3dMcpPlugin
dotnet build

3. Civil 3Dに読み込む

NETLOAD → select Civil3dMcpPlugin.dll
C3DMCPSTATUS → verify running

4. AIの設定

{
  "mcpServers": {
    "civil3d": {
      "command": "node",
      "args": ["/path/to/civil3d-mcp/build/index.js"]
    }
  }
}

環境変数

変数

デフォルト

説明

CIVIL3D_HOST

localhost

プラグインホスト

CIVIL3D_PORT

8080

プラグインポート

CIVIL3D_COMMAND_TIMEOUT

120000

実行タイムアウト(ミリ秒)

LOG_LEVEL

info

ログレベル

ベンチマーク

フェーズ2Aのホスト非依存レコーダー、フェーズ2A.1のオプトイン内部ライブトレース契約、およびフェーズ2A.2の読み取り専用ライブランナーは、benchmark/README.mdに文書化されています。いずれもMCPツール、キュー、リトライを追加しません。2A.2ランナーは、明示的に開始された場合にのみ、固定された読み取り専用クエリを呼び出すことができます。

構造化エラー(フェーズ2B.1)

civil3d_querycivil3d_executeは、既存のテキストエラー内容とisError: trueを維持しつつ、スキーマcivil3d-mcp-error/v1structuredContentも返します。安定したエラーフィールドはcodecategorymessagesourceoutcomeretryableです。コマンドタイムアウトまたは送信後の接続喪失は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

  • ネットワークリクエスト(HttpClientSockets

  • レジストリアクセス

  • 動的アセンブリ読み込み

すべてのCivil 3D API操作は許可されています。

この正規表現サンドボックスは多層防御であり、信頼境界ではありません。両方のコードツールは変更可能なCivil 3DおよびAutoCAD APIオブジェクトを受け取ります。civil3d_queryはホストのトランザクションコミットをスキップしますが、任意の動的C#が副作用なしであることを保証できません。信頼された承認ゲート付きコードのみを実行してください。ループバックTCPはリモートネットワークアクセスを防ぎますが、他のローカルプロセスを認証しません。

ライセンス

MIT

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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.

View all MCP Connectors

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/nezolder/civil3d-mcp-roslyn'

If you have feedback or need assistance with the MCP directory API, please join our Discord server