コンテンツへスキップ
AI Agent
QGIS
ガイド

ClaudeをQGISで使う3つの方法:MCP連携・PyQGIS・プラグインを同じタスクで検証

公開日

QGIS用の公式Anthropicプラグインはありません。ClaudeをQGISで使う主な方法は3つです。QGIS MCPサーバー経由でClaude DesktopやClaude Codeを接続する、ClaudeにPyQGISコードを書かせてPythonコンソールに貼り付ける、QGISの中にエージェントプラグインをインストールする、の3つです。

2026年11月7日に、Claudeが実際のタスクをどう処理するかを検証しました。インド・プネーの地区とOpenStreetMapの学校を読み込み、ポリゴンごとに学校を数え、段階区分図をスタイリングするタスクです。Claude Sonnet 5.5が書いた2つのPyQGISスクリプトは、どちらも貼り付けたままでは動きませんでした。ただし1つは、データサーバーのURLを差し替えると44〜48秒で成功しました。QGIS内のエージェントは、同じプロンプトを2回続けて45〜63秒で完了しました。

QGISのウィンドウ。青系の色で表したプネーの区ごとの学校数の段階区分図、左にレイヤツリー、右にAI Agentのチャットパネルがあり、プロンプト、Pune city wardsの選択、58の選挙区で学校256件という最終集計が表示されている。
QGISで1文から作ったプネーの学校の段階区分図:OpenStreetMapの学校256件を58の選挙区で63秒で集計。

ClaudeをQGISで使う方法は?

ClaudeをQGISにつなぐとは、Anthropicのモデルに橋渡しを与えて、開いているプロジェクトの中でツールを実行できるようにするか、チャット画面とQGISのPythonコンソールの間でPyQGISスクリプトをコピーすることを指します。3つ目の方法は橋渡しを使わず、AIエージェントのパネルを直接QGISの中に置きます。

ほとんどのチュートリアルは、Model Context Protocol(MCP)による橋渡しだけを紹介しています。追加のコマンドラインツールを入れたり設定ファイルを編集したりする前に、3つの方法それぞれに何が必要で、同じ仕事を任せたときに何が起きるかを見ておくと役立ちます。

方法1:Claude + QGIS MCP方法2:ClaudeがPyQGISを書く方法3:QGIS内のエージェント
セットアップ5ステップ(プラグイン、uv、クライアント、設定のインストールと、セッションごとにRun MCPをクリック)セットアップ0ステップ(タスクごとにエディタを開く、貼り付ける、実行するの3クリック)3ステップ(QGISのプラグインマネージャーからインストール、パネルを開く、サインイン)
必要なものClaude Desktop(無料または有料)かClaude Code(有料プラン)、uv とローカルサーバー任意のClaudeのチャット、追加ソフトなしQGIS 3.28以上と無料アカウント(APIキーもカードも不要)
コードを実行するのはClaudeがローカルのMCPポート経由でツールを呼び出す利用者がPythonコンソールにスクリプトを貼り付けて実行するプラグインがQGISのツールを実行し、地図を自分で確認する
プロジェクトが見えるかMCPサーバーの起動中は見える見えない(レイヤ名やCRSをプロンプトに書かない限り)見える(開いているレイヤ、フィールド、表示範囲を読む)
元に戻すQGISで手作業で後片付けQGISで手作業で後片付けすべての回答に、ワンクリックで変更を元に戻すボタン
プネーのタスクの結果プネーでは未実施(同等のリヨンの学校タスクで9分28秒)貼り付けたままでは2件中0件が動作。URL修正後に1件が44〜48秒で成功(14のタルカで学校447件)2回中2回成功、63秒と約45秒(58の市の区で学校256件)

AIを使わずに手作業でこのタスクをする場合、QGISの無料の方法は4ステップです。Vector > QuickOSM > QuickOSM... で境界と amenity=school のポイントをダウンロードし、Vector > Analysis Tools > Count Points in Polygon...(native:countpointsinpolygon)を実行し、Layer Properties > Symbology で新しい件数フィールドに段階に分けられた(Graduated)スタイルを設定します。

QGISのリポジトリにClaudeプラグインはある?

QGISのプラグインリポジトリに、Anthropicの公式プラグインはありません。2026年11月7日にリポジトリのインデックスを確認したところ(QGIS 3.44向け4,399件、QGIS 4.0向け1,697件)、メタデータに「claude」という単語を含むプラグインは45件ありましたが、そのうち36件はClaudeをコーディングアシスタントとしてクレジットしていたか、作者の名前がClaudeなだけでした。

Claudeのモデルやサブスクリプションを実際にQGISにつなぐのは、9つのコミュニティプラグインだけです。

  • QGIS MCP(Nicolas Karasiak作、v0.15.2、2026年11月7日時点で77,002ダウンロード):ローカルポートを開き、Claude Desktop、Claude Code、CursorがQGIS内で125のツールを実行できるようにします。
  • WAI QGIS MCP(v0.3.0、753ダウンロード):1つの .mcpb 拡張ファイルでClaude Desktopに接続するため、Node.jsを自分でインストールする必要がありません。
  • QGIS Agent(bunkmr作、v2.4.15、3,783ダウンロード)、QGIS Agent Mcp(v0.5.0、3,210ダウンロード)、QGIS Salah MCP(v1.1.1、2,037ダウンロード)、ClaudIA QGIS(v0.4.6、784ダウンロード):自分のAPIキーを使う、ほかのMCPソケットサーバーやパネルです。
  • LandTalk.AI(v1.5.0、5,927ダウンロード)とAI Copilot(v1.8.0、2,098ダウンロード):Claude、OpenAI、Geminiのキーを受け付ける、複数モデル対応のチャットパネルです。
  • Mapsuke(MIERUNE作、v1.6.0、1,242ダウンロード、2026年10月30日更新):QGIS 3.44以上の中で動くチャットパネルで、MCPサーバーなしで既存のClaude CodeやCodexのログインを使います。Claude CodeのCLIがインストールされていることが条件です。

必要なClaudeのプランは、接続方法によって変わります。Anthropicのプラン比較ページ(2026年11月7日に確認)によると、Claude DesktopのチャットはFreeプランでもPro、Max、Ultra、Team、Enterpriseでも使え、ローカルのMCPサーバーは Settings > Developer > Edit Config またはDesktop Extensionsで追加できます。MapsukeのようなプラグインやCLIのワークフローが前提とするコマンドラインツールのClaude Codeは、Freeプランに含まれず、Pro、Max、Ultraのいずれかのサブスクリプションが必要です。

検証:プネーで地区ごとの学校を地図にする

検索結果のギャップ調査のために読んだチュートリアルは、どれも作者がすでにディスクに持っているファイルでClaudeを試していました。実際のGIS業務では、ツールが一度も見たことのない都市のオープンデータを取ってくるよう頼むことがよくあります。

2026年11月7日、何かを実行する前に成功基準を書きました。プロンプトは1文です。

Load the districts of Pune, India and the schools from OpenStreetMap, count schools per district and make a choropleth.

(インド・プネーの地区とOpenStreetMapの学校を読み込み、地区ごとに学校を数えて段階区分図を作って。)

プネーを選んだのは、「districts of Pune」(プネーの地区)があいまいだからです。プネーはマハーラーシュトラ州の県(district)で、14の郡(タルカまたはテシル)に分かれます。一方、プネー市は15の行政区事務所と58の選挙区に分かれています。良いワークフローなら、どの境界のことかを尋ねるか、どれを読み込んだかをはっきり示します。

方法2:ClaudeにPyQGISコードを書かせて貼り付ける

コピー&ペーストの方法では、Claude Sonnet 5.5(claude-sonnet-5-5、Claude Code 2.1.306経由、ツールとWebアクセスはすべてオフで、普通のチャット画面と同じ条件)にまったく同じプロンプトを2回送り、「I use QGIS. Write the PyQGIS code I can paste in the QGIS Python console for this task」(QGISを使っています。このタスク用に、QGISのPythonコンソールに貼り付けられるPyQGISコードを書いて)だけを書き足しました。コンソールを使ったことがない場合は、PyQGISガイドでスクリプトの実行方法を説明しています。

Claudeは1つ目の134行のスクリプトを77秒、2つ目の108行のスクリプトを67秒で生成しました。どちらの回答も「districts」があいまいだと指摘し、admin_level=6(プネー県の14のタルカ)を選び、コードでレベルを変える方法を説明していました。2つ目の回答は最後に「I haven't run it, so the first run is the test.」(実行していないので、最初の実行がテストです)と、正直な注意書きまで添えていました。

QGIS 3.44.15では、どちらのスクリプトも貼り付けたままでは動きませんでした。

  1. 回答1は1秒後に URLError: <urlopen error [Errno 61] Connection refused> で失敗しました。 スクリプトはメインの公開Overpassサーバー(overpass-api.de)を呼び出していて、その朝このサーバーは私たちのIPからの接続を拒否していました。
  2. 回答2はネットワークにアクセスする前、3行目で失敗しました。 ImportError: cannot import name 'QgsClassificationNaturalBreaks' from 'qgis.core' が出ました。
QGISのPythonコンソール。貼り付けたスクリプトの3行目で、ImportError: cannot import name QgsClassificationNaturalBreaks from qgis.coreという赤いTracebackが表示されている。
Claudeの2つ目のPyQGISスクリプトは3行目で止まりました。QgsClassificationNaturalBreaksはQGIS 3.44.15に存在しません(実際のクラスはQgsClassificationJenksです)。

QGIS 3.44では、自然分類(natural breaks)のクラスは QgsClassificationNaturalBreaks ではなく QgsClassificationJenks という名前です。ツールのないチャットボットは自分のimportを利用者のQGISのバージョンで試せないため、架空のクラス名が1つあるだけでスクリプト全体が止まります。QGISでのChatGPTをアヌシーの3つのタスクで検証したときも、まったく同じ、見えないまま推測するパターンが見られました。

Claudeの1つ目のスクリプトがそれ以外の点で正しいかを確かめるため、回答1の定数を1つだけ変え、overpass-api.de をフランスのミラー overpass.openstreetmap.fr に差し替えて、空のレイヤツリーで3回実行しました。動いているサーバーなら、48秒、44秒、45秒で完了しました。

プネー県の14のタルカを赤系の段階色でスタイリングし、その上に黒い学校のポイントを重ねた地図。OverpassサーバーのURLを変更した後、Claudeの1つ目のPyQGISスクリプトで生成したもの。
OverpassのURLを差し替えた後のClaudeの1つ目のスクリプト:プネーの14のタルカで学校447件を集計し、分位数で区分してスタイリング。

回答1の計算は正しく、14のタルカのポリゴンと447件の学校の地物を読み込みました。ポイント・イン・ポリゴンの件数を独自に再計算すると、447件の学校すべてが n_schools フィールドと一致し、不一致は0件でした(Pune City Subdistrictが246件、Haveliが75件、Mulshiが55件、Indapur、Velhe、Ambegaonは0件)。それでも地図には、人が手直しすべき粗さが残りました。分位数の凡例は、整数である学校数に対して 0,0000 - 1,2000 のような小数の区切りを表示し、中心部のラベルはデフォルトの縮尺で重なっていました。

方法1:QGIS MCPでClaude DesktopやClaude Codeを接続する

ClaudeにQGIS MCPサーバーを与えると、見えないという問題は解決します。Claudeはレイヤを調べ、execute_code を実行し、エラーのトレースバックを見て、やり直せます。

プネーではMCPサーバーを再実行しませんでした。その朝は公開Overpassサーバーが私たちのネットワークを拒否していて、同じOpenStreetMapの呼び出しが止まっていたはずだからです。代わりに、2026年9月下旬と10月に、Claude CodeでClaude Sonnet 5.5がQGIS MCP(v0.15.0〜0.15.2)を操作する様子を、4つの実タスクと41問のベンチマークですでに測定していました。

  • セットアップは5ステップで約3分です(uv とクライアントがインストール済みの場合)。さらに最初の呼び出しでは、125のツールを公開する90 MBのサーバーをダウンロードするため16秒かかります。QGISを再起動するたびにRun MCPをクリックし直す必要があり、忘れるとClaudeは Error executing tool ping を返します。QGIS MCPのセットアップと検証のガイドで、すべての手順と設定ファイルを説明しています。
  • リヨンの同等の学校タスク(路面電車の停留所から300 m以内の学校を数える)では、Claude + QGIS MCPは正しい件数(学校87件)を9分28秒で出しました。10ステップのうち6つは生のPythonで、スクリプトがOverpassの406、504、502エラーに当たる間、QGISは約7分間フリーズしました。
  • データがすでに整っていれば、MCPは速いです。 ポルトの建物と印刷レイアウトのタスクでは、Claude + QGIS MCPは2分48秒で完了し、私たちのエージェントの5分26秒を上回りました。
  • GoogleのGeoExpertQueriesベンチマーク(41件の未公開タスク)では、Claude CodeでQGIS MCPを使うClaude Sonnet 5.5のスコアは100点中24.9点で、Low effortのAI Agentは43.8点でした(ベンチマークの全結果はこちら)。

すでにClaude ProやMaxを契約していて、一日中Claude Codeで作業しているなら、MCPは追加費用がかからず、シェルスクリプト、ローカルファイル、QGISを1つのターミナルで自由に組み合わせられます。

方法3:QGIS内のエージェントプラグインを使う

私たちはAI Agentを開発しているので、このセクションは自社のプラグインについてです。外部のアプリをQGISにつなぐのではなく、マップキャンバスのすぐ横にチャットパネルをドッキングし、プロジェクトの状態を読み、内蔵のデータカタログ(約90のソースと2,800のデータセット、さらにOpenStreetMapとOverture Maps)からデータを取得し、回答する前に描画した地図の画像を確認し、すべての返信の下に変更を元に戻すボタンを置きます。

QGIS 3.44.15(Balanced権限、Medium effort)で、まったく同じプネーの文を2回テストしました。

1回目は、11秒後にパネルが一時停止し、「Which subdivisions of Pune should the school counts use?」(学校数の集計にはプネーのどの区分を使いますか?)と尋ねる確認カードを表示しました。選択肢は Pune city wards(プネー市の区)と Pune district tehsils(プネー県のテシル)の2つです。Pune city wards を選ぶと、送信を押してからの合計時間は15ステップで63秒でした。

プネーの58の選挙区を、薄い青から濃い紺までの5つのJenks分類で色分けし、OpenStreetMapの学校256件を濃い点で示した地図のクローズアップ。
1回目に描画された地図:58の選挙区(2022年のDataMeetの境界)を5つのJenks分類で表示。最多(学校39件)はWard 16 Fergusson College - Erandwane。

新しいチャットでの2回目は質問せず、プネーの58の選挙区を市の地区として使うと回答の中で明記し、約45秒(16ステップ)で完了しました。区はオレンジ系の配色でスタイリングされました。

2回目のQGISのウィンドウ。左にオレンジ系5分類の段階区分図でスタイリングしたプネーの選挙区、右に58区でOpenStreetMapの学校の地物256件を確認するAI Agentの回答がある。
同じプロンプトでの2回目:約45秒で完了し、同じく58区で学校256件、5つのJenks分類(0-1、1-5、5-11、11-22、22-39)。

貼り付けたスクリプトが接続エラーに当たったのに、なぜ2回とも成功したのでしょうか。エージェントは、生のスクリプトから過負荷の overpass-api.de エンドポイントを呼び出さなかったからです。2022年の選挙区をDataMeetから取得し、学校の地物256件(ノード108件とウェイ148件、ポリゴンの学校は面上のポイントに変換)を内蔵のデータツールで取得しました。両方の出力でポイント・イン・ポリゴンを独自に検証したところ、256件の学校のポイントはすべて58区の中にあり、schools 属性フィールドとの不一致は0件でした。

さらに、3つの中間レイヤを非表示の Working layers グループにまとめてレイヤツリーを整理し、OpenStreetMapは公式の学校統計ではないと回答の中で念押ししていました。私の不満は1つだけです。1回目と2回目の間で、区かテシルかを私に尋ねるか自分で決めるかについて、判断が変わったことです。

QGISでAI Agentを無料で試す(カード不要)

どの方法を選ぶべきか

私自身の仕事では、再利用するプロセシングスクリプトを書くときや、20個のファイルにまたがる自作プラグインをデバッグするときは、今もブラウザやターミナルで普通のClaudeを使っています。Pythonを読み、Gitにコミットし、GUIの外で実行したいからです。プロンプトにはQGISのバージョン、レイヤ名、フィールド名、CRSを貼り付けることを忘れずに。そしてimportの1つや2つは直す前提でいてください。

Claude + QGIS MCPを選ぶのは、すでに有料のClaudeサブスクリプションがあり、uv やJSONの設定ファイルに抵抗がなく、Claude DesktopやClaude Codeでローカルファイルの操作とQGISの呼び出しを組み合わせたい場合です。既存のプランに追加費用はかからず、データレイヤがすでに読み込まれていれば高速です。

QGIS内のエージェントを選ぶのは、Pythonのトレースバック、Overpassのタイムアウト、壊れたポートの面倒を見ずに、地図と数字を手に入れたい場合です。締め切りのあるアナリストや、一貫したシンボロジ、データソースの出典、ワンクリックの元に戻す機能が必要なチームにとっては、エージェントとデータカタログがQGISに組み込まれていることが最も時間を節約します。アーキテクチャの違いはQGISのAIエージェントとはのガイドで読めます。現在のすべてのツールはQGIS AIハブで見られます。

測定方法。 プネーでの実行はすべて、2026年11月7日のパリ時間10:29から11:03の間に、macOS上のQGIS 3.44.15-Solothurn(Qt 5.15.19)で行いました。成功基準は最初のプロンプトの前、10:14に書きました。Claude Sonnet 5.5(claude-sonnet-5-5)は、MCPサーバーもWebアクセスもない空のディレクトリで、Claude Code 2.1.306(claude -p --safe-mode --tools "" --model sonnet)を通じて呼び出しました。返ってきた2つのスクリプトはQGISのPythonで実行し、独立したポイント・イン・ポリゴンのスクリプトで確認しました。AI Agent 1.9.4(Balancedモード、Medium effort)は、同じ文で空のプロジェクトで2回テストしました。検証中は同じMac上でほかのQGISセッションも動いていたため、経過時間はアイドル状態のマシンより遅くなっています。1つのタスクで方法ごとに2回のテストは小さなサンプルで、overpass-api.de の接続拒否は、ある朝、1つのネットワークから観測したものです。

よくある質問

QGIS用の公式Claudeプラグインはありますか?

ありません。AnthropicはQGISプラグインを公開していません。2026年11月7日時点で、QGISのプラグインリポジトリにはClaudeをQGISにつなぐコミュニティプラグインが9つあります。ローカルのModel Context Protocol(MCP)サーバー経由(QGIS MCPやWAI QGIS MCPなど)、自分のAPIキー経由、またはローカルのClaude Codeのログイン経由(Mapsuke)のいずれかです。別の選択肢として、AI AgentはAIモデルとデータカタログを内蔵した状態で、QGISのプラグインマネージャーから直接インストールできます。

Claude DesktopでQGISを無料で操作できますか?

できます。ただし制限付きです。Anthropicのプランのドキュメントによると、Claude DesktopのチャットはFreeプランで使え、claude_desktop_config.json またはDesktop Extensions(.mcpb)でローカルのMCPサーバーに対応しています。ターミナルからClaude Codeを使うには、有料のClaude Pro、Max、Ultraのいずれかのプランが必要です。

ClaudeはQGIS 3.44で動くPyQGISコードを書けますか?

書けます。Claude Sonnet 5.5はよく構成されたPyQGISを書きますが、利用者のQGIS環境を見ることも自分のコードを試すこともできないため、クラス名を作り出したり、失敗する外部サーバーに頼ったりすることがあります。QGIS 3.44.15での2サンプルの検証では、1つのスクリプトは QgsClassificationNaturalBreaks で ImportError になり(実際のクラスは QgsClassificationJenks)、もう1つはOverpass APIのURLを差し替えるまで失敗しました。

MCPを設定せずにQGISでAIを使う最も簡単な方法は?

QGISの Plugins > Manage and Install Plugins から、統合型のエージェントプラグインをインストールします。AI Agentなら、管理すべきPython環境も、uv パッケージマネージャーも、設定ファイルもありません。無料でサインインすると月5タスク(Proでは300)が使え、ドッキングしたパネルに依頼を入力するだけです。

AI Agentを無料で試す

QGISでの作業は、頼むだけで完了

AI Agentが、あなたのQGISプロジェクト上で、指示したタスクを実行します。無料、カード不要。

AI Agentを無料で試す
作成者Yvann Barbot
·2 min read