Skip to main content
Glama
y0urday

dsh-arcgis-pro-bridge

by y0urday

dsh-arcgis-pro-bridge

DeepSeek Harness (DSH) 内のモデルがローカルの ArcGIS Pro を直接呼び出せるようにします:プロジェクト、レイヤー、GDB 構造を読み取り、Buffer / Clip / カスタム ArcPy を実行します。

このプロジェクトは、ArcGIS-Pro-Bridge-MCP-Server の Python MCP サービスを DSH バンドルプラグインに組み込み、DSH 標準の公式 @deepseek-ai/dsh-mcp-client を介して stdio 方式で起動します。モデルから見えるツール名は次のようになります:

  • mcp__arcgis__ping

  • mcp__arcgis__health_check

  • mcp__arcgis__doctor

  • mcp__arcgis__detect_arcgis_environment

  • mcp__arcgis__debug_runtime_context

  • mcp__arcgis__list_gis_layers

  • mcp__arcgis__inspect_project_context

  • mcp__arcgis__inspect_gdb

  • mcp__arcgis__buffer_features

  • mcp__arcgis__clip_features

  • mcp__arcgis__execute_arcpy_code

  • mcp__arcgis__build_gis_resource_uri

  • mcp__arcgis__generate_sync_plan

アーキテクチャ

DSH (Node.js)
  └─ 本插件 bundle(cordis.patch.yml,插入两行)
       ├─ dsh-arcgis-pro-bridge:提供 arcgisProBridge 服务(启动配方)
       └─ @deepseek-ai/dsh-mcp-client(DSH 官方内置桥接,注入该服务)
            └─ stdio: uv run --project <包内 server/> arcgis_mcp_server.py
                 └─ ArcPy 逻辑通过 ArcGIS Pro 自带 Python 子进程执行

ポイント:

  • ローカルのみで動作し、ネットワークポートを公開しません。

  • ArcPy は常に ArcGIS Pro 付属の Python で実行され、DSH の Node 環境を汚染しません。

  • DSH 公式 MCP ブリッジは現時点では Tools のみをブリッジします。アップストリームの arcgis:// Resources は登録されないため、読み取り操作は同名の Tool(例: inspect_gdb)を使用してください。

  • execute_arcpy_code はローカルでコードを実行することと同等です。信頼できるマシンでのみ有効にし、書き込み操作の前にデータをバックアップしてください。

Related MCP server: ArcGIS Pro Bridge MCP Server

環境要件

  • Windows(ArcGIS Pro は Windows のみサポート)

  • ArcGIS Pro がインストールされ、正常に起動できること

  • DeepSeek Harness(開発プレビュー版、本プラグインは 0.1.0-rc.6 で検証済み;Node.js >= 22.19)

  • uv のインストールを推奨。uv がない場合は、mcp パッケージがインストールされた Python 3.11+ を使用できます。

インストール(推奨:GitHub 直接インストール)

このプロジェクトは純粋な ESM JavaScript + vendored Python であり、ビルド手順はありません。そのため GitHub 直接インストールでは build 権限は不要です。特定の commit に固定することをお勧めします:

dsh plugin --profile web add github:y0urday/dsh-arcgis-pro-bridge#<commit-sha>

パッチが設定に反映されたことを確認:

dsh --profile web --dump-config

出力に arcgis-pro-bridge の行が表示され、name がこのパッケージとして解決されるはずです。その後、dsh web を完全に再起動してください。

代替案:npm に公開してからインストール

パッケージ内に files ホワイトリストが含まれているため、そのまま公開できます:

npm publish
dsh plugin --profile web add dsh-arcgis-pro-bridge@0.1.0

GitHub 直接インストール + ビルドスクリプトなしを推奨する理由

DSH プラグインには3つの配布方法があります:ローカルディレクトリ、npm パッケージ、github: 直接インストール。TypeScript + prepare ビルドを使用すると、GitHub 直接インストールでは、ユーザーが自分の profile で allowBuilds を設定する必要があり、これはインストール時にあなたのコードを実行することを許可することに等しいため、ハードルが高くなります。このリポジトリは意図的に純粋な JavaScript に保たれており、3つの方法すべてでそのまま使用でき、GitHub 直接インストールの体験が最も良くなっています。将来 npm に公開する場合も構造を変更する必要はありません。

GitHub への公開

cd dsh-arcgis-pro-bridge
git remote add origin git@github.com:y0urday/dsh-arcgis-pro-bridge.git
git push -u origin main

リポジトリに dsh-plugin トピックを追加して、エコシステムで見つかりやすくすることをお勧めします。公開後は、上記のインストールコマンドを自分の owner と commit に置き換えてください:

dsh plugin --profile web add github:y0urday/dsh-arcgis-pro-bridge#<commit-sha>

npm も同時に公開する場合は、パッケージ内の files ホワイトリストが準備されているので、npm publish を実行するだけです。npm と GitHub の2つのインストール方法は併用できます。

設定

デフォルト設定は cordis.patch.yml に書き込まれており、通常は変更の必要はありません。すべてのフィールドは index.js の Config schema にデフォルト値を持っています:

フィールド

デフォルト

説明

serverName

arcgis

モデル側のツールプレフィックス mcp__<serverName>__*

launcher

uv

uv:パッケージ内の pyproject + lock で起動;python:pythonExecutable でスクリプトを直接実行(このインタープリターには mcp がインストールされている必要があります)

pythonExecutable

python

launcher: python のときのみ使用;これは MCP サービスを実行する通常の Python で、ArcPy は引き続きサービスが自動検出します

extraArgs

[]

Python サービスプロセスに追加する引数

env

{}

追加の環境変数。例:ARCGIS_PRO_PYTHON / ARCGIS_PRO_INSTALL_DIR

toolCallTimeoutMs

300000

単一の ArcGIS ツール呼び出しのタイムアウト(ミリ秒)

failOnStartupError

false

初回接続失敗時にプラグインのアクティベーションを失敗させるかどうか

reconnect.*

下記参照

子プロセス切断後の指数バックオフ再接続戦略

reconnect のデフォルト値:enabled: true、initialDelayMs: 500、maxDelayMs: 30000、maxAttempts: 10。

ユーザー上書きの例

$DSH_HOME/profiles/web/cordis.patch.yml(または起動時に --patch)内で id を指定して設定行を上書きします:

- id: arcgis-pro-bridge
  config:
    serverName: arcgis
    launcher: python
    pythonExecutable: python
    failOnStartupError: true
    env:
      ARCGIS_PRO_PYTHON: C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe

注意:パッチの上書きは config 全体を置き換えるものであり、深いマージではありません。記述されていないフィールドは schema のデフォルト値に戻ります。

初回テストの順序

  1. モデルに mcp__arcgis__ping を呼び出させ、実際にツールチェーンに入ったことを確認します。

  2. mcp__arcgis__health_check を呼び出し、続けて mcp__arcgis__doctor を呼び出して、ArcGIS Pro Python を検出でき、ArcPy がインポート可能であることを確認します。

  3. 現在のプロジェクトを読み取る:mcp__arcgis__list_gis_layers(または .aprx パスを渡す)。

  4. GDB を読み取る:mcp__arcgis__inspect_gdb。

  5. 最後に mcp__arcgis__buffer_features / clip_features / execute_arcpy_code を試し、書き込み操作の前にバックアップします。

次のプロンプトをモデルにコピーして渡すことができます:

shell を使用しないでください。テストスクリプトを書かないでください。利用可能な mcp__arcgis__ping を直接呼び出し、次に mcp__arcgis__health_check を呼び出して、2つの戻り結果を完全に教えてください。

トラブルシューティング

  • ツールが表示されない:最初に dsh --profile web --dump-config を実行し、arcgis-pro-bridge の行が存在し、ロードエラーがないことを確認します。dsh web を再起動済みであることも確認します。

  • uv が見つからない:where uv(CMD)/ Get-Command uv(PowerShell)で PATH に存在することを確認します。存在しない場合は launcher: python に変更し、pip install "mcp[cli]>=1.9.4" をインストールします。

  • ArcGIS Pro を検出できない:detect_arcgis_environment を呼び出すか、env.ARCGIS_PRO_PYTHON / ARCGIS_PRO_INSTALL_DIR で明示的に指定します。

  • 現在のプロジェクトを読み取れない:ArcGISProject("CURRENT") は ArcGIS Pro の実行コンテキストに依存します。失敗した場合は、ツールに .aprx パスを直接渡します。

  • ArcPy のロックエラー:編集中のレイヤー/セッションを閉じるか、データを占有している外部プログラムを終了してから再試行します。

  • ログ:dsh は arcgis-pro-bridge と mcp-client(arcgis) の接続・再接続ログを出力します。mcp-client は接続失敗時に failOnStartupError: false の場合、起動しますがツールは一時的に登録されず、reconnect 戦略に従って再試行します。

ローカル検証

npm run check          # node --check index.js
npm test               # vendored 文件清单一致性测试
uv run --project server server/arcgis_mcp_server.py   # 直接启动服务,应进入等待状态

アップストリームとの同期

server/ 内は、アップストリームリポジトリの MIT ライセンスコードの vendored コピーであり、出典とコミット番号は NOTICE に記録されています。更新するとき:

npm run sync-upstream

スクリプトはアップストリームの最新コードを再クローンし、server/*.py、pyproject.toml、uv.lock を上書きし、NOTICE 内の commit 番号を自動更新します。同期後は、まず上記の検証を実行し、その後に Windows + ArcGIS Pro で ping → health_check → doctor のスモークテストを実施してください。

ライセンス

このリポジトリは MIT です。vendored Python サービスコードは Sangwxx/ArcGIS-Pro-Bridge-MCP-Server(MIT)に由来し、完全なライセンスは server/UPSTREAM_LICENSE に、説明は NOTICE にあります。

Related MCP Connectors

Related MCP Servers