プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

ArcGIS MCP Bridge

作者:muendバージョン 0.6.8i★ –iパソコンで動く
レジストリ名io.github.muend/arcgis-mcp-bridge

インストール

概要

作者による説明(英語の原文)

Secure local-first MCP server for licensed ArcGIS Pro and ArcPy on Windows.

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: その他
  • 入力が必要なもの:ARCPY_PYTHON_PATH

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • 自分で入力するもの: ARCPY_PYTHON_PATH, ARCGIS_MCP_ALLOWED_ROOTS, ARCGIS_MCP_SCRATCH_GDB, ARCGIS_MCP_MAX_WORKERS

必要なもの

  • PyPIPythonのuvのインストール(uvxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

{
  "mcpServers": {
    "arcgis-bridge": {
      "command": "uvx",
      "args": [
        "arcgis-mcp-bridge"
      ],
      "env": {
        "ARCPY_PYTHON_PATH": "your-value",
        "ARCGIS_MCP_ALLOWED_ROOTS": "your-value",
        "ARCGIS_MCP_SCRATCH_GDB": "your-value",
        "ARCGIS_MCP_MAX_WORKERS": "your-value"
      }
    }
  }
}

ターミナルでこれを実行します

claude mcp add arcgis-bridge --env ARCPY_PYTHON_PATH=your-value --env ARCGIS_MCP_ALLOWED_ROOTS=your-value --env ARCGIS_MCP_SCRATCH_GDB=your-value --env ARCGIS_MCP_MAX_WORKERS=your-value -- uvx arcgis-mcp-bridge

動かす前に、空欄の値を入力してください。

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "arcgis-bridge": {
      "command": "uvx",
      "args": [
        "arcgis-mcp-bridge"
      ],
      "env": {
        "ARCPY_PYTHON_PATH": "your-value",
        "ARCGIS_MCP_ALLOWED_ROOTS": "your-value",
        "ARCGIS_MCP_SCRATCH_GDB": "your-value",
        "ARCGIS_MCP_MAX_WORKERS": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "arcgis-bridge": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "arcgis-mcp-bridge"
      ],
      "env": {
        "ARCPY_PYTHON_PATH": "your-value",
        "ARCGIS_MCP_ALLOWED_ROOTS": "your-value",
        "ARCGIS_MCP_SCRATCH_GDB": "your-value",
        "ARCGIS_MCP_MAX_WORKERS": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

自分で入力する値

  • ARCPY_PYTHON_PATH 必須 env
    Path to the licensed ArcGIS Pro Python interpreter or cloned arcgis-mcp-env interpreter.
  • ARCGIS_MCP_ALLOWED_ROOTS env
    Optional semicolon-separated PathGuard boundary roots for local GIS data.
  • ARCGIS_MCP_SCRATCH_GDB env
    Optional default output workspace. If set, it must point to an existing file geodatabase.
  • ARCGIS_MCP_MAX_WORKERS env
    Optional maximum number of concurrent ArcPy worker subprocesses. Defaults to 2.

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月9日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント muend で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

その他のほかのサーバーとの比較i

  • このカテゴリのほかの18802件のうち0%よりスターが多い
  • このカテゴリのほかの18802件のうち54%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの18802件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

ArcGIS MCP Bridgeは安全ですか?

当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

入力が必要なもの:ARCPY_PYTHON_PATH

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(0.6.8)がレジストリに届いたのは38 日前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。

代わりに使えるものは?

同じカテゴリには:Spec Driven Development, Remote Desktop Commander, Geo Figure (지리 시험 지도·그래프)

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

Spec Driven Development

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

作者:formulahendry初期↓ 66/週★ 44014 か月前更新

パソコンで動く

Remote Desktop Commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

作者:desktop-commander成長中★ 2114 日前更新

クラウドで動く✓ desktopcommander.app

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

arcgis-mcp-bridge

Quick Start

arcgis-mcp-bridge requires Windows, a licensed ArcGIS Pro installation, and Python 3.11 or newer for the bridge package.

Install the bootstrap package using one package manager:

# Option A — pip

py -m pip install --upgrade arcgis-mcp-bridge

Option B — uv

uv pip install --upgrade arcgis-mcp-bridge

Then clone ArcGIS Pro's Python environment:

# The final JSON report contains the target `python_exe` path.

py -m arcgis_mcp.setup_env

If the installed console command is available on PATH, arcgis-mcp-setup is equivalent to py -m arcgis_mcp.setup_env.

Important for Windows systems with multiple Python installations: the

setup is not complete until arcgis-mcp-bridge is installed into the

reported arcgis-mcp-env\python.exe. Use that same interpreter for both the

MCP server command and ARCPY_PYTHON_PATH. This prevents worker failures

caused by packages or native extensions being loaded from another Python

environment.

See 05 — Installation for the complete setup and configuration.

100 declarative geoprocessing tools. Two isolated processes. One security floor.

A secure, local-first, asynchronous MCP server exposing ArcGIS Pro's ArcPy engine to Claude Desktop and other MCP hosts over stdio JSON-RPC.

Technical write-up: Building a Secure MCP Bridge for ArcGIS Pro and ArcPy

Catalog100 tools · 10 verticals
Tests86 unit tests · 86/86 passing · arcpy mocked
Real runtime evidenceReproducible ArcGIS Pro MCP smoke benchmark
Static analysisRuff clean · Mypy strict clean
TransportJSON-RPC 2.0 over stdio
LicenseApache-2.0

Why arcgis-mcp-bridge?

Featurearcgis-mcp-bridgegeo2004/MCP-ArcGISPronicogis (C#/.NET)
Tools100~15~10
Dependency SyncDeterministic (`uv.lock`)Imperative (requirements.txt)Native NuGet
Transportstdio JSON-RPCfile-based IPCNamed Pipes
Security ArchitectureDocumented PathGuard sandboxNone specified / default host accessNone specified / default host access
arcpy IsolationTwo-process architectureSingle process executionAdd-In in-process execution
CI (Offline Verification)✅ Supported❌ Not available❌ Not available
LicenseApache-2.0MITMIT

Highlight: Sketch → GIS Pipeline

Hand-drawn parcel boundary → photo → geodatabase feature class. ORB+RANSAC image registration, HSV ink segmentation, direct GDB commit. No manual digitizing required.

Demo coming soon. To preview the sketch-to-GIS pipeline:

1. Draw a polygon on paper and photograph it.

2. Ask Claude: *"Use extract_sketch_to_gis to register this photo

against my basemap and commit the result to my GDB."*

3. The feature class appears in ArcGIS Pro — no manual digitizing.


00 — Example Prompts

After health_check succeeds, talk to Claude naturally:

"Buffer all parcels in my GDB by 50 meters and save to scratch."

"List all feature classes in C:\GIS\city.gdb starting with 'road_'." "Dissolve the neighborhoods layer by district_id." "Run kernel density on crime_points with a 500-meter search radius." "Calculate slope and aspect from the DEM at C:\GIS\dem.tif." "Find the 3 nearest facilities to each incident in my network dataset." "Check geometry on all feature classes in my GDB and repair errors."

01 — Core Architecture & Philosophy

flowchart TD

A[Claude Desktop / Cursor] -->|JSON-RPC over stdio| B[Layer A · MCP Protocol Host] B -->|NDJSON subprocess bridge| C[Layer B · ArcPy Worker] C --> D[ArcGIS Pro / ArcPy Runtime]

Layer A — Async Event-Driven Server (arcgis_mcp/server.py). FastMCP on the bridge interpreter. Owns the stdio channel, validates every request against frozen Pydantic v2 contracts, dispatches work via asyncio.create_subprocess_exec — the event loop never blocks on a geoprocessing call and never holds a thread lock. Layer A contains zero module-level `arcpy` or `cv2` imports (verified by grep in the audit gate); it cannot crash on Esri's native code because it never touches it.

Layer B — Subprocess ArcPy Isolation Worker (arcgis_mcp/worker.py). Spawned per job on the licensed ArcGIS Pro interpreter (ARCPY_PYTHON_PATH). The only place import arcpy is legal; cv2 loads lazily inside the one vision tool that needs it. Worker stdout is rebound to stderr at startup — the single sanctioned stdout write is the final NDJSON result frame, so native ArcObjects chatter can never corrupt the JSON-RPC channel. A native crash terminates the worker, not the server: the parent converts a non-zero exit into a structured error frame.

Declarative registry (arcgis_mcp/registry.py). Each tool is one ToolSpec(name, category, description, input_model, worker_fn, destructive). One generic proxy factory materializes all 100 catalog MCP endpoints in Layer A; one generic run_tool dispatcher serves them in Layer B. The catalog is exposed alongside three core endpoints: health_check, list_layers, and execute_spatial_tool. Adding catalog tool #101 touches two files — never the runtime loops.

Every failure crossing the process boundary is classified: validation · security · not_found (an input path does not exist; the message names the field and path) · license · geoprocessing (with the full arcpy.GetMessages() stack, or ArcPy's own message for non-geoprocessing calls such as Describe) · internal (exception type and message; the traceback stays in the server log).


02 — The 100-Tool Census Matrix

#VerticalToolsKey capabilities
1map_layer_management10.aprx maps, layer order/visibility/symbology, camera, save
2data_management22FC/GDB lifecycle, fields, Describe, Excel/GeoJSON/CSV exchange
3geometry_analysis23Overlays, dissolve/merge, selections, joins, proximity, fishnet
4coordinate_reference_projection4WKID-driven define/project for vector + raster, CRS lookup
5raster_operations15Map algebra, zonal stats, DEM slope/aspect/hillshade, hydrology
6vision_analytics1Sketch-to-GIS: ORB+RANSAC registration → HSV ink → GDB commit
7export_layout9PDF/PNG plots, DPI control, map frames, text/legend, page size
8editing_topology7Repair/check geometry, append, dedupe, diff, topology validation
9network_analysis4Service areas, routing, OD cost matrix, closest facility
10spatial_statistics5Mean center, ellipse, kernel density, Gi* hot spots, Moran's I
Total100

Esri extension licenses (Spatial, Network) are managed through one shared context manager and checked back in via finally on normal Python exception paths. Worker-process isolation contains native failures to the current job, while unavailable licenses return a structured error frame instead of terminating the MCP server.

Destructive Mutation Safety Floor

Ten state-mutating tools refuse to run without an explicit confirm: true payload token. The gate fires in the dispatcher before the 10–30 s arcpy import is paid, and the registry refuses to even register a destructive spec whose contract lacks a confirm field:

append_features        calculate_field        define_projection

delete_dataset delete_field delete_identical extract_sketch_to_gis near_analysis remove_layer_from_map repair_geometry

calculate_field carries an additional expression-channel floor: the default expression_type is ARCADE (Esri's sandboxed expression language), and PYTHON3 — which executes code inside the worker — is rejected at the Layer-A contract boundary unless confirm: true is explicitly supplied. raster_calculator expressions are constrained to a pure map-algebra grammar (identifiers, numbers, operators; no quotes, no dunder access) by a contract validator.


03 — Automated Quality Gate & Testing

Licensed-runtime evidence is reported separately in the benchmarks/ method card. Its committed result uses a real ArcGIS Pro worker and a dedicated scratch GDB; it is not pooled with the mocked unit-test count or presented as validation of all 100 geoprocessing tools.

Scope, stated plainly: the automated gate currently consists of 86 unit tests spanning the PathGuard boundary, the Pydantic contracts, the generic registry path-guard and registration invariants, the worker's error-boundary mapping, and Settings environment validation. It exercises the catalog's structural contracts and every security-critical seam — it does not claim multi-scenario validation of the 100 geoprocessing tools themselves, which execute against a licensed ArcGIS runtime that no CI runner has.

In-memory test architecture. tests/conftest.py injects MagicMock proxies into sys.modules["arcpy"] and sys.modules["arcpy.sa"] (with CheckExtension answering "Available") before any package import resolves. The entire suite executes in well under a second, with no ArcGIS installation, no license checkout, and no Esri runtime — locally and in CI identically.

Test scopes.

  • tests/test_security.py & tests/test_pathguard.py — the PathGuard boundary firewall, exercised against real directories via pytest's tmp_path fixture: valid reads/writes inside the sandbox pass; traversal (..-segments), UNC, relative, NUL-byte, reserved-device, over-length and out-of-root paths are rejected; write discipline (ArcGIS dataset-name rules, overwrite opt-in) is enforced.
  • tests/test_contracts.py — Pydantic contract enforcement: per-tool parameter specs, cross-field validators, frozen / extra="forbid", and the ok-xor-error invariant on the IPC envelope.
  • tests/test_registry.py & tests/test_registry_guard.py — registry stream integrity plus generic apply_path_guard enforcement and register invariants — every schema must be a ToolInput subclass, every path_fields entry must reference a valid role, duplicate names are rejected, and every destructive spec must carry its confirm gate.
  • tests/test_worker.py — process_frame error-boundary mapping: every failure class (validation, security, license, geoprocessing, internal) maps to its distinct WorkerError.kind.
  • tests/test_config.py — Settings.from_environment validation: required variables, directory/file checks, integer bounds, and the fail-fast on a missing scratch geodatabase.

The side-effect import import arcgis_mcp.tools in the registry test is what populates the catalog; it is # noqa-pinned so no linter ever strips it again.

Static analysis. Ruff enforces canonical formatting plus E/W/F/I/B/RUF at 88 columns against a py311 fl

冒頭だけを表示しています。続きはリポジトリで読めます

PopNxに聞く