Qgistoolmcp
2.5ポイント
4.7K

インストール

以下のコマンドをクライアントにコピーして設定
注意:あなたのキーは機密情報です。誰とも共有しないでください。

🚀 QGIS MCPサービス - LLMベースの地理空間処理フレームワーク

🚀 14の専用MCPサービスを通じて333の地理空間処理ツールを備えた、LLMベースのQGISエージェントを構築するための完全なフレームワークです。

AIエージェントを使用して自然言語を自動化されたQGISワークフローに変換し、適切な地理空間ツールをインテリジェントに選択して実行します。

✨ 主な機能

  • 🤖 LLMベースのエージェント - 自然言語をQGIS操作に変換し、インテリジェントなツール選択を行います。
  • 🎯 333のQGISツール - モデルコンテキストプロトコル(MCP)を介した完全なQGIS処理ツールキットです。
  • 🔧 14の専用サービス - ベクトル、ラスター、GDAL、カルトグラフィなどのサービスがあります。
  • 🌐 HTTP SSE通信 - すべてのサービスはサーバー送信イベント(Server-Sent Events)を介してアクセス可能です。
  • 📦 モジュール式アーキテクチャ - 必要なサービスのみをロードできます。
  • 🛠️ シンプルなPython API - カスタムエージェント開発のための簡単な統合が可能です。
  • 🔌 バックグラウンドサービス管理 - すべてのサービスの起動、停止、ステータス確認スクリプトが用意されています。

🔧 技術詳細

┌─────────────────────────────────────────────────┐
│          LLMベースのQGISエージェント                 │
│      (自然言語 → ツール選択)        │
│              (client_demo/agent.py)             │
└─────────────────┬───────────────────────────────┘
                  │ HTTP SSE
    ┌─────────────┴──────────────┐
    │   14の独立したサービス   │
    │  (services/qgis-*-mcp/)     │
    ├─────────────────────────────┤
    │ 各サービスは独自のポート(32821 - 32834)で実行されます。    │
    └─────────────┬───────────────┘
                  │
         QGIS処理エンジン
          (共有エグゼキューターを介して)

🚀 クイックスタート

1. 前提条件

  • Python 3.10 - 3.11
  • PythonバインディングがインストールされたQGIS 3.22以上
  • 仮想環境(推奨)

2. インストール

# リポジトリをクローン
git clone <repository-url>
cd qgisToolMCP

# 仮想環境を作成してアクティブ化
python -m venv .venv
source .venv/bin/activate  # Windowsの場合は .venv\Scripts\activate

# すべてのサービスをインストール
pip install -e services/qgis-vector-geometry-buffer-mcp/
pip install -e services/qgis-vector-analysis-overlay-mcp/
# ... 必要に応じて他のサービスをインストール

# クライアントデモの依存関係をインストール
pip install openai mcp python-dotenv

3. 環境を構成

# 環境ファイルを作成
cp .env.example .env

# .envを編集し、OpenAI APIキーを設定
# OPENAI_API_KEY=your-api-key-here
# OPENAI_API_BASE_URL=https://api.openai.com/v1

4. サービスを起動

# 14のサービスをすべてバックグラウンドで起動
cd services
./run.sh

# サービスのステータスを確認
./status.sh

# 特定のサービスのログを表示
tail -f logs/qgis-vector-geometry-buffer-mcp.log

5. デモエージェントを実行

# LLMベースのエージェントデモを実行
python client_demo/agent.py http://localhost:32821/sse http://localhost:32822/sse

# またはテストスクリプトを実行
python client_demo/test_agent.py

📦 利用可能なサービス

サービス ポート ツール カテゴリ 説明
qgis-vector-geometry-buffer-mcp 32821 10 ベクトルジオメトリ バッファーとオフセット操作
qgis-vector-geometry-hull-bounds-mcp 32822 18 ベクトルジオメトリ 凸包、バウンディングボックス
qgis-vector-geometry-vertex-mcp 32823 19 ベクトルジオメトリ 頂点操作
qgis-vector-analysis-overlay-mcp 32824 24 ベクトル分析 空間分析、オーバーレイ操作
qgis-vector-general-creation-mcp 32825 47 ベクトル作成 フィーチャ、グリッド、ポイントの作成
qgis-vector-geometry-transform-mcp 32826 34 ベクトルジオメトリ 変換、投影
qgis-vector-polygon-line-mcp 32827 27 ベクトル操作 ポリゴン/ライン操作
qgis-vector-table-selection-mcp 32828 44 ベクトルテーブル 属性、選択、クエリ
qgis-raster-analysis-mcp 32829 20 ラスター分析 ラスター分析ツール
qgis-raster-tools-creation-mcp 32830 18 ラスターツール ラスター作成、変換
qgis-gdal-raster-mcp 32831 28 GDAL GDALラスター処理
qgis-gdal-vector-mcp 32832 21 GDAL GDALベクトル処理
qgis-cartography-plots-mcp 32833 9 カルトグラフィ カルトグラフィとプロット
qgis-database-network-mcp 32834 14 データベース/ネットワーク データベースとネットワーク分析

合計: 14のサービスで333のツール

💻 使用例

例1: LLMベースのエージェントを使用する

import asyncio
from client_demo.agent import QGISAgent

async def main():
    # 複数のサービスに接続するエージェントを作成
    agent = QGISAgent(
        service_urls=[
            "http://localhost:32821/sse",  # バッファーサービス
            "http://localhost:32822/sse",  # ハルバウンドサービス
            "http://localhost:32824/sse",  # 分析オーバーレイサービス
        ],
        model="gpt-4-turbo-preview"
    )

    # サービスに接続
    await agent.connect()

    # 自然言語でタスクを記述
    task = """
    /path/to/input.shpにあるポイントフィーチャを持つシェイプファイルがあります。
    各ポイントの周りに500メートルのバッファーを作成し、
    結果を/path/to/output.shpに保存してください。
    """

    # エージェントが適切なツールをインテリジェントに選択して実行
    async for update in agent.process_task(task):
        print(update, end='', flush=True)

    await agent.disconnect()

asyncio.run(main())

例2: 直接ツールを実行する

import asyncio
from client_demo.agent import QGISAgent

async def main():
    agent = QGISAgent(
        service_urls="http://localhost:32821/sse"
    )

    await agent.connect()

    # 特定のツールを直接実行
    result = await agent.execute_tool('buffer', {
        'INPUT': '/path/to/input.shp',
        'DISTANCE': 500,
        'OUTPUT': '/path/to/output.shp'
    })

    print(f"結果: {result}")

    await agent.disconnect()

asyncio.run(main())

例3: インタラクティブモード

# エージェントをインタラクティブモードで実行
python client_demo/agent.py http://localhost:32821/sse

# 次に自然言語クエリを入力します。
# > my_layer.shpのフィーチャの周りに1kmのバッファーを作成する
# > 許容誤差0.5でジオメトリを単純化する
# > 各ポリゴンの面積を計算する

サービス管理

すべてのサービスを起動

cd services
./run.sh

これにより、14のサービスがすべてバックグラウンドでロギング付きで起動します。

サービスのステータスを確認

cd services
./status.sh

出力例:

サービス: qgis-vector-geometry-buffer-mcp    ステータス: RUNNING  PID: 12345  ポート: 32821
サービス: qgis-vector-geometry-hull-bounds-mcp  ステータス: RUNNING  PID: 12346  ポート: 32822
...

すべてのサービスを停止

cd services
./stop.sh

ログを表示

# 特定のサービスのログを表示
tail -f services/logs/qgis-vector-geometry-buffer-mcp.log

# すべてのログを表示
tail -f services/logs/*.log

# エラーを検索
grep -i error services/logs/*.log

クライアントデモAPI

client_demo/agent.pyは強力なエージェントフレームワークを提供します。

QGISAgentクラス

agent = QGISAgent(
    service_urls: List[str] | str,  # 接続するサービスURL
    openai_api_key: Optional[str] = None,  # OpenAI APIキー
    base_url: Optional[str] = None,  # APIベースURL
    model: str = "gpt-4-turbo-preview",  # 使用するLLMモデル
    max_retries: int = 3,  # 失敗した操作のリトライ回数
    verbose: bool = True  # 詳細なログを有効にする
)

主要なメソッド

  • await agent.connect() - すべてのサービスに接続
  • await agent.disconnect() - サービスから切断
  • agent.list_tools() - 利用可能なすべてのツールのリストを取得
  • agent.list_services() - 接続されたサービスのリストを取得
  • agent.list_tools_by_service() - サービスごとにグループ化されたツールを取得
  • await agent.execute_tool(name, params) - 特定のツールを実行
  • async for update in agent.process_task(description) - 自然言語タスクを処理

プロジェクト構造

qgisToolMCP/
├── client_demo/              # LLMベースのエージェントデモ
│   ├── agent.py             # メインのQGISAgentクラス
│   ├── test_agent.py        # テストスクリプト
│   ├── test_direct_call.py  # 直接呼び出しの例
│   └── data/                # テストデータ
├── services/                 # 14の独立したMCPサービス
│   ├── run.sh               # すべてのサービスを起動
│   ├── stop.sh              # すべてのサービスを停止
│   ├── status.sh            # サービスのステータスを確認
│   ├── logs/                # サービスログ(実行時に作成)
│   ├── pids/                # サービスPIDファイル(実行時に作成)
│   └── qgis-*-mcp/          # 個々のサービス
│       ├── src/             # サービスのソースコード
│       ├── docs/            # サービスのドキュメント
│       ├── pyproject.toml   # サービスの設定
│       └── README.md        # サービス固有のドキュメント
├── shared/                   # サービス間で共有されるコード
│   ├── executor.py          # QGISアルゴリズムエグゼキューター
│   └── qgis_runner.py       # QGIS Python実行スクリプト
├── documentation/            # プロジェクトのドキュメント
│   ├── DEVELOPMENT.md       # 開発ガイド
│   ├── PROJECT_TRANSFORMATION.md  # アーキテクチャの概要
│   └── README.md            # ドキュメントのインデックス
├── scripts/                  # ユーティリティスクリプト
├── manage.py                 # サービス管理CLI
├── Makefile                  # ビルド自動化
└── README.md                 # このファイル

開発

サービスに新しいツールを追加する

  1. サービスディレクトリに移動します。
cd services/qgis-vector-geometry-buffer-mcp/src/qgis_vector_geometry_buffer_mcp/tools/
  1. ツール関数を追加します。
@mcp.tool()
def my_new_tool(
    input_layer: str,
    parameter: float,
    output: str
) -> dict:
    """ツールの説明"""
    params = {
        'INPUT': input_layer,
        'PARAMETER': parameter,
        'OUTPUT': output
    }
    result = executor.run_algorithm('native:algorithm_id', params)
    return {
        "output": result.get('OUTPUT'),
        "status": "success"
    }
  1. tools/__init__.pyでツールを登録します。
  2. サービスを再起動します。
cd services
./stop.sh
./run.sh

詳細な開発ガイドについては、DEVELOPMENT.mdを参照してください。

設定

環境変数

プロジェクトのルートに.envファイルを作成します。

# OpenAI API設定
OPENAI_API_KEY=your-api-key-here
OPENAI_API_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4-turbo-preview

# QGIS設定(サービス用)
QGIS_PYTHON_PATH=/usr/bin/python3
QGIS_PREFIX_PATH=/usr

サービス設定

各サービスは、サービス固有の設定のためにそのディレクトリに独自の.envファイルを持つことができます。

要件

サービスの実行に必要なもの

  • Python 3.10 - 3.11
  • PythonバインディングがインストールされたQGIS 3.22以上
  • 必要なPythonパッケージ(自動的にインストールされます):
    • fastmcp
    • python-dotenv

エージェントの使用に必要なもの

  • Python 3.10以上
  • OpenAI APIキー(または互換性のあるAPI)
  • 必要なPythonパッケージ:
    • openai
    • mcp
    • python-dotenv

トラブルシューティング

サービスが起動しない場合

  1. QGISが正しくインストールされていることを確認します。
python3 -c "from qgis.core import QgsApplication; print('QGIS OK')"
  1. サービスのログを確認します。
tail -f services/logs/<service-name>.log
  1. 仮想環境を確認します。
which python
# .venv/bin/pythonを指す必要があります。

ポートの競合が発生した場合

"port already in use"エラーが発生した場合は、以下の操作ができます。

  1. ポートを使用しているものを確認します。
lsof -i :32821
  1. プロセスを終了するか、services/run.shでポートを変更します。

エージェントがサービスに接続できない場合

  1. サービスが実行中であることを確認します。
cd services
./status.sh
  1. ポートがアクセス可能であることを確認します。
curl http://localhost:32821/sse
  1. エージェントコード内のサービスURLが実行中のサービスと一致していることを確認します。

📚 ドキュメント

  • 開発ガイド - 新しいサービスとツールを開発する方法
  • プロジェクトの変換 - アーキテクチャと設計決定
  • サービス管理 - 詳細なサービス管理ドキュメント
  • クライアントデモ - エージェントの使用方法と例
  • 共有コード - 共有ユーティリティのドキュメント

コントリビューション

コントリビューションは大歓迎です!以下のように支援することができます。

  1. 新しいツールを追加する - 追加のQGISアルゴリズムを実装する
  2. ドキュメントを改善する - ガイドと例を強化する
  3. バグを修正する - 問題を報告して修正する
  4. パフォーマンスを最適化する - 実行速度を向上させる
  5. テストを追加する - テストカバレッジを増やす

コントリビューションガイドラインについては、DEVELOPMENT.mdを参照してください。

📄 ライセンス

MITライセンス - 詳細についてはLICENSEファイルを参照してください。

謝辞

  • FastMCPフレームワークをベースに構築されています。
  • QGISの処理アルゴリズムを使用しています。
  • Model Context Protocol (MCP)によって動作しています。

サポート


地理空間AIコミュニティのために❤️ で構築されました

代替品

P
Paperbanana
Python
8.5K
5ポイント
F
Finlab Ai
FinLab AIは金融定量分析プラットフォームで、AI技術を通じてユーザーが投資戦略の超過収益(アルファ)を発見するのを支援します。豊富なデータセット、バックテストフレームワーク、および戦略サンプルを提供し、自動化されたインストールと主流のAIプログラミングアシスタントへの統合をサポートします。
6.7K
4ポイント
A
Assistant Ui
assistant-uiは、生産レベルのAIチャットインターフェイスを迅速に構築するためのオープンソースのTypeScript/Reactライブラリで、組み合わせ可能なUIコンポーネント、ストリーミング応答、アクセシビリティなどの機能を提供し、複数のAIバックエンドとモデルをサポートしています。
TypeScript
7.2K
5ポイント
A
Apify MCP Server
Apify MCPサーバーは、モデルコンテキストプロトコル(MCP)に基づくツールで、AIアシスタントが数千の既成のクローラー、スクレイパー、自動化ツール(Apifyアクター)を通じて、ソーシャルメディア、検索エンジン、電子商取引などのウェブサイトからデータを抽出できるようにします。OAuthとSkyfireプロキシ支払いをサポートしており、HTTPSエンドポイントまたはローカルのstdio方式でClaude、VS CodeなどのMCPクライアントに統合できます。
TypeScript
7.2K
5ポイント
N
Next Devtools MCP
Next.js開発ツールのMCPサーバーです。ClaudeやCursorなどのAIプログラミングアシスタントにNext.js開発ツールとユーティリティを提供します。実行時診断、開発自動化、およびドキュメントアクセス機能が含まれています。
TypeScript
16.9K
5ポイント
P
Praisonai
PraisonAIは、自動反省機能を備えた本番環境で使用可能な多AIエージェントフレームワークです。簡単なタスクから複雑な課題まで、様々な問題を自動的に解決するAIエージェントを作成することを目的としています。PraisonAIエージェント、AG2、CrewAIを低コードソリューションに統合することで、多エージェントLLMシステムの構築と管理を簡素化し、簡単さ、カスタマイズ性、および効果的な人間との協働を重視しています。
Python
16.9K
5ポイント
M
Maverick MCP
MaverickMCPはFastMCP 2.0に基づく個人株式分析サーバーであり、Claude DesktopなどのMCPクライアントに専門レベルの金融データ分析、技術指標計算、ポートフォリオ最適化ツールを提供する。これは520株のスタンダード500株データを事前に設定し、複雑な認証なしでローカルに実行できるように、さまざまな技術分析戦略と並列処理をサポートしています。
Python
11.7K
4ポイント
B
Blueprint MCP
Blueprint MCPは、Arcadeエコシステムに基づくチャート生成ツールで、Nano Banana Proなどの技術を利用して、コードベースとシステムアーキテクチャを分析し、アーキテクチャ図、フローチャートなどのビジュアルチャートを自動生成し、開発者が複雑なシステムを理解するのを支援します。
Python
11.0K
4ポイント
E
Edgeone Pages MCP Server
EdgeOne Pages MCPは、MCPプロトコルを通じてHTMLコンテンツをEdgeOne Pagesに迅速にデプロイし、公開URLを取得するサービスです。
TypeScript
24.8K
4.8ポイント
G
Gmail MCP Server
Claude Desktop用に設計されたGmail自動認証MCPサーバーで、自然言語でのやり取りによるGmailの管理をサポートし、メール送信、ラベル管理、一括操作などの完全な機能を備えています。
TypeScript
19.6K
4.5ポイント
C
Context7
Context7 MCPは、AIプログラミングアシスタントにリアルタイムのバージョン固有のドキュメントとコード例を提供するサービスで、Model Context Protocolを通じてプロンプトに直接統合され、LLMが古い情報を使用する問題を解決します。
TypeScript
80.7K
4.7ポイント
B
Baidu Map
認証済み
百度マップMCPサーバーは国内初のMCPプロトコルに対応した地図サービスで、地理コーディング、ルート計画など10個の標準化されたAPIインターフェースを提供し、PythonとTypescriptでの迅速な接続をサポートし、エージェントに地図関連の機能を実現させます。
Python
36.8K
4.5ポイント
G
Gitlab MCP Server
認証済み
GitLab MCPサーバーは、Model Context Protocolに基づくプロジェクトで、GitLabアカウントとのやり取りに必要な包括的なツールセットを提供します。コードレビュー、マージリクエスト管理、CI/CD設定などの機能が含まれます。
TypeScript
23.3K
4.3ポイント
U
Unity
認証済み
UnityMCPはUnityエディターのプラグインで、モデルコンテキストプロトコル (MCP) を実装し、UnityとAIアシスタントのシームレスな統合を提供します。リアルタイムの状態監視、リモートコマンドの実行、ログ機能が含まれます。
C#
30.1K
5ポイント
M
Magic MCP
Magic Component Platform (MCP) はAI駆動のUIコンポーネント生成ツールで、自然言語での記述を通じて、開発者が迅速に現代的なUIコンポーネントを作成するのを支援し、複数のIDEとの統合をサポートします。
JavaScript
20.4K
5ポイント
S
Sequential Thinking MCP Server
MCPプロトコルに基づく構造化思考サーバーで、思考段階を定義することで複雑な問題を分解し要約を生成するのに役立ちます。
Python
31.2K
4.5ポイント
AIBase
智啓未来、あなたの人工知能ソリューションシンクタンク
© 2026AIBase