nkarasiak/qgis-mcp

Connect QGIS to AI agent through the Model Context Protocol (MCP)

QGIS MCP – AI駆動のQGIS制御

何であるかModel Context Protocol (MCP) をサポートする任意のAIモデルが、QGISと直接通信できる2部構成のオープンソースツール。軽量なTCPサーバー(MCPサーバー)はQGIS外部で実行され、118のJSONベースのコマンド(レイヤー管理、編集、処理、レンダリングなど)を公開する。QGIS内には非ブロッキングプラグインが存在し、これらのコマンドを受け取りPyQGIS APIを呼び出す。これにより、LLMは通常のコーディングアシスタントクライアント(Claude Code、Codex CLI、Geminiなど)からプロジェクトの作成、フィーチャーの編集、処理アルゴリズムの実行、マップのレンダリングなどをすべてAI駆動のコマンドで行える。


コアコンポーネント

コンポーネント 役割
QGISプラグイン (qgis_mcp_plugin/) QGIS内に実行され、MCP JSONコマンドを受け入れるTCPソケットをホストし、PyQGIS呼び出しにマッピングする。
MCPサーバー (src/qgis_mcp/server.py) 別のプロセスとして実行される(uvxで起動)。118のMCPツールを実装し、ソケット経由でプラグインに転送する。

アーキテクチャは以下の通り:

AIエージェント ⇄ MCPサーバー (FastMCP) ⇄ TCPソケット ⇄ QGISプラグイン ⇄ PyQGIS API

主な機能(一部)

  • プロジェクト – 新規作成、読み込み、保存、CRSの照会。
  • レイヤー – ベクター、ラスター、ウェブレイヤーの追加・削除;可視性の設定;範囲の照会。
  • フィーチャー – 一覧表示、追加、ジオメトリの更新、削除、選択、統計情報の計算。
  • スタイル – QMLの適用、カテゴリ別/グレーディングスタイルの設定、ラベル設定。
  • 処理 – 任意のQGIS処理アルゴリズムの実行、バッチ実行、モデル処理。
  • レンダリング – マップ画像、3Dスクリーンショット、キャンバススクリーンショットの生成。
  • レイアウト&アトラス – レイアウトの作成、マップ/凡例/スケールバーの追加、PDFのエクスポート、アトラスの実行。
  • システム – ping、診断、任意のPythonコードの実行、バッチコマンド。

すべてのツールは非同期で、人間が読みやすいタイトルを持ち、readOnlydestructiveidempotentなどの注釈を含む。破壊的アクションはクライアントの確認UIを尊重する。QGIS_MCP_AUTO_CONFIRM=0を設定することで、サーバーが再び確認を求めるように強制できる。


インストールと設定

  1. QGISプラグイン – QGISで プラグイン → プラグインの管理とインストール に移動し、QGIS MCP を検索してインストール、再起動後、新しいドックウィジェットの [サーバーを開始] をクリック。
  2. MCPサーバー – Pythonパッケージマネージャー uv が必要。任意のターミナルで、Claude Code向けのスニペットを実行:
    claude mcp add -s user qgis \
        -- uvx --from https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip qgis-mcp-server
    
    (Codex、Gemini、Kimi、Copilot CLI、LM Studio、Opencode、Hermesなど向けの同様のuvxコマンドも提供)
  3. LLMクライアントがMCPコールを発行すると、サーバーは自動的に起動。アーカイブをダウンロードし、キャッシュしてqgis-mcp-serverを実行する。

オプション設定 – 環境変数でホスト/ポートの変更、共有シークレット(QGIS_MCP_TOKEN)の有効化、複数のQGISインスタンスの実行、細粒度(118)またはコンパウンド(27)ツールセットの選択、ログ出力の制御が可能。


クイック使用例

QGISツールにアクセスできます。以下の操作を行ってください:
1. ping
2. create_new_project path="/tmp/my_project.qgz"
3. add_vector_layer path="resources/data/world_map.gpkg"
4. filter features where adm0_a3 = "USA"
5. render_map width=800 height=600
6. save_project

LLMクライアントに送信すると、モデルは対応するMCPツールを呼び出し、QGISウィンドウにはアメリカ合衆国のレンダリングされたマップが表示される。


更新方法

  • プラグイン – QGISのプラグインマネージャーで更新(またはマネージャー経由でZIPを再インストール)。
  • サーバー – キャッシュされたパッケージを更新するには:
    uvx --refresh-package qgis-mcp \
        --from https://github.com/nkarasiak/qgis-mcp/archive/refs/heads/main.zip qgis-mcp-server
    
    その後、クライアントを再起動する。

コントリビューションとテスト

git clone https://github.com/nkarasiak/qgis-mcp.git
cd qgis-mcp
python install.py   # プラグインのシンボリックリンク作成とMCPクライアント設定ファイルの書き込み

ユニットテスト(QGIS不要)は uv run pytest tests/test_mcp_tools.py で実行。実行中のQGISインスタンスが必要な統合テストは uv run pytest tests/test_qgis_live.py で実行。


ライセンス

  • QGISプラグイン – GNU GPL v2 以降。
  • MCPサーバー – MIT。

結論 – QGIS MCPは、MCP互換のLLMを完全機能のGISアシスタントに変換し、開発者やアナリストが自然言語プロンプトやコード補完ツールを通じてQGISを完全にスクリプト化できるようにする。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト